{"id":2237,"date":"2026-04-24T08:23:09","date_gmt":"2026-04-24T08:23:09","guid":{"rendered":"https:\/\/sreschool.com\/blog\/?p=2237"},"modified":"2026-04-24T10:41:57","modified_gmt":"2026-04-24T10:41:57","slug":"grafana-lab-with-graphite-datasource-metrics-dashboard","status":"publish","type":"post","link":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/","title":{"rendered":"Grafana Lab with Graphite Datasource metrics \u2013 Dashboard"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"grafana-13x--graphite--telegraf-linux-monitoring-lab-guide\">Grafana 13.x + Graphite + Telegraf Linux Monitoring Lab Guide<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"important-validation-from-the-real-graphite-storage\">Important validation from the real Graphite storage<\/h2>\n\n\n\n<p>The real collected metrics in this lab use this structure:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.&lt;measurement&gt;.&lt;field&gt;\n<\/code><\/pre>\n\n\n\n<p>Therefore, use these queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.usage_active\ntelegraf.linux-demo.cpu.usage_system\ntelegraf.linux-demo.mem.used_percent\ntelegraf.linux-demo.disk.used_percent\ntelegraf.linux-demo.net.bytes_recv\ntelegraf.linux-demo.system.load1\ntelegraf.linux-demo.processes.total\ntelegraf.linux-demo.processes.zombies\n<\/code><\/pre>\n\n\n\n<p>Do not use these older assumed tag-based paths in this lab:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_active\ntelegraf.linux-demo.disk.*.used_percent\ntelegraf.linux-demo.net.eth0.bytes_recv\ntelegraf.linux-demo.net.ens5.bytes_recv\n<\/code><\/pre>\n\n\n\n<p>Reason: the current Telegraf Graphite output template is storing metrics without CPU, disk mountpoint, and network interface tag nodes.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"step-1-explore-the-metrics-using-grafana-explore\">Step 1: Explore the Metrics Using Grafana Explore<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"objective\">Objective<\/h2>\n\n\n\n<p>Students will use Grafana Explore to discover and query Graphite metrics collected from Linux by Telegraf.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"11-open-grafana-explore\">1.1 Open Grafana Explore<\/h2>\n\n\n\n<p>Go to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explore\n<\/code><\/pre>\n\n\n\n<p>Select the datasource:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Graphite\n<\/code><\/pre>\n\n\n\n<p>Set time range:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Last 15 minutes\n<\/code><\/pre>\n\n\n\n<p>Set refresh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>10s\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"12-validate-the-real-metric-paths-before-querying\">1.2 Validate the real metric paths before querying<\/h2>\n\n\n\n<p>On the Graphite server, run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it graphite find \/opt\/graphite\/storage\/whisper\/telegraf -type f | sed 's#\/opt\/graphite\/storage\/whisper\/##; s#\/#.#g; s#.wsp$##' | sort\n<\/code><\/pre>\n\n\n\n<p>If output still shows&nbsp;<code>.wsp<\/code>, remove&nbsp;<code>.wsp<\/code>&nbsp;mentally when writing Grafana queries.<\/p>\n\n\n\n<p>Example file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.usage_active.wsp\n<\/code><\/pre>\n\n\n\n<p>Grafana query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.usage_active\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"13-explore-cpu-metrics\">1.3 Explore CPU metrics<\/h2>\n\n\n\n<p>Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.usage_active\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU active usage graph appears.\n<\/code><\/pre>\n\n\n\n<p>Other CPU queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.usage_idle\ntelegraf.linux-demo.cpu.usage_user\ntelegraf.linux-demo.cpu.usage_system\ntelegraf.linux-demo.cpu.usage_iowait\ntelegraf.linux-demo.cpu.usage_steal\n<\/code><\/pre>\n\n\n\n<p>Recommended aliases:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %')\nalias(telegraf.linux-demo.cpu.usage_idle, 'CPU Idle %')\nalias(telegraf.linux-demo.cpu.usage_user, 'CPU User %')\nalias(telegraf.linux-demo.cpu.usage_system, 'CPU System %')\nalias(telegraf.linux-demo.cpu.usage_iowait, 'CPU I\/O Wait %')\n<\/code><\/pre>\n\n\n\n<p>Validation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stress --cpu 2 --timeout 120\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU Active % should increase.\nCPU Idle % should decrease.\nLoad average may increase.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"14-explore-memory-metrics\">1.4 Explore memory metrics<\/h2>\n\n\n\n<p>Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.mem.used_percent\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Memory used percentage graph appears.\n<\/code><\/pre>\n\n\n\n<p>Other memory queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.mem.used\ntelegraf.linux-demo.mem.available\ntelegraf.linux-demo.mem.free\ntelegraf.linux-demo.mem.total\ntelegraf.linux-demo.mem.available_percent\n<\/code><\/pre>\n\n\n\n<p>Recommended query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.mem.used_percent, 'Memory Used %')\n<\/code><\/pre>\n\n\n\n<p>Validation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stress --vm 1 --vm-bytes 128M --timeout 120\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Memory usage may increase depending on system size.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"15-explore-disk-metrics\">1.5 Explore disk metrics<\/h2>\n\n\n\n<p>Correct query for this lab:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.disk.used_percent\n<\/code><\/pre>\n\n\n\n<p>Recommended query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.disk.used_percent, 'Disk Used %')\n<\/code><\/pre>\n\n\n\n<p>Other disk queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.disk.used\ntelegraf.linux-demo.disk.free\ntelegraf.linux-demo.disk.total\ntelegraf.linux-demo.disk.inodes_used_percent\n<\/code><\/pre>\n\n\n\n<p>Important:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.disk.*.used_percent does not work in this lab because disk mountpoint is not stored as a separate Graphite path node.\n<\/code><\/pre>\n\n\n\n<p>Validation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dd if=\/dev\/zero of=\/tmp\/graphite-test-file bs=10M count=20 oflag=direct\nrm -f \/tmp\/graphite-test-file\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Disk usage may briefly change. On large disks, the percentage change may be small.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"16-explore-network-metrics\">1.6 Explore network metrics<\/h2>\n\n\n\n<p>Correct queries for this lab:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.net.bytes_recv\ntelegraf.linux-demo.net.bytes_sent\n<\/code><\/pre>\n\n\n\n<p>For dashboards, use derivatives because network bytes are counters:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_recv), 'Network RX bytes\/sec')\nalias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_sent), 'Network TX bytes\/sec')\n<\/code><\/pre>\n\n\n\n<p>Important:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.net.eth0.bytes_recv does not work in this lab because interface name is not stored as a separate Graphite path node.\n<\/code><\/pre>\n\n\n\n<p>Validation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -L https:\/\/speed.cloudflare.com\/__down?bytes=10000000 -o \/tmp\/network-test.bin\nrm -f \/tmp\/network-test.bin\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Network RX bytes\/sec should increase.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"17-explore-load-average\">1.7 Explore load average<\/h2>\n\n\n\n<p>Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.system.load1\ntelegraf.linux-demo.system.load5\ntelegraf.linux-demo.system.load15\n<\/code><\/pre>\n\n\n\n<p>Recommended queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.system.load1, 'Load 1m')\nalias(telegraf.linux-demo.system.load5, 'Load 5m')\nalias(telegraf.linux-demo.system.load15, 'Load 15m')\n<\/code><\/pre>\n\n\n\n<p>Validation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stress --cpu 2 --timeout 120\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Load 1m should increase first.\nLoad 5m and Load 15m change more slowly.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"18-explore-process-metrics\">1.8 Explore process metrics<\/h2>\n\n\n\n<p>Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.processes.total\ntelegraf.linux-demo.processes.running\ntelegraf.linux-demo.processes.sleeping\ntelegraf.linux-demo.processes.zombies\n<\/code><\/pre>\n\n\n\n<p>Recommended queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.processes.total, 'Total Processes')\nalias(telegraf.linux-demo.processes.running, 'Running Processes')\nalias(telegraf.linux-demo.processes.zombies, 'Zombie Processes')\n<\/code><\/pre>\n\n\n\n<p>Expected zombie process value:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"19-explore-swap-metrics\">1.9 Explore swap metrics<\/h2>\n\n\n\n<p>Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.swap.used_percent\n<\/code><\/pre>\n\n\n\n<p>Recommended query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.swap.used_percent, 'Swap Used %')\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"step-1-final-validated-query-table\">Step 1 final validated query table<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Area<\/th><th class=\"has-text-align-left\" data-align=\"left\">Correct query<\/th><\/tr><\/thead><tbody><tr><td>CPU Active<\/td><td><code>alias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %')<\/code><\/td><\/tr><tr><td>CPU Idle<\/td><td><code>alias(telegraf.linux-demo.cpu.usage_idle, 'CPU Idle %')<\/code><\/td><\/tr><tr><td>CPU User<\/td><td><code>alias(telegraf.linux-demo.cpu.usage_user, 'CPU User %')<\/code><\/td><\/tr><tr><td>CPU System<\/td><td><code>alias(telegraf.linux-demo.cpu.usage_system, 'CPU System %')<\/code><\/td><\/tr><tr><td>CPU I\/O Wait<\/td><td><code>alias(telegraf.linux-demo.cpu.usage_iowait, 'CPU I\/O Wait %')<\/code><\/td><\/tr><tr><td>Memory Used<\/td><td><code>alias(telegraf.linux-demo.mem.used_percent, 'Memory Used %')<\/code><\/td><\/tr><tr><td>Disk Used<\/td><td><code>alias(telegraf.linux-demo.disk.used_percent, 'Disk Used %')<\/code><\/td><\/tr><tr><td>Network RX<\/td><td><code>alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_recv), 'Network RX bytes\/sec')<\/code><\/td><\/tr><tr><td>Network TX<\/td><td><code>alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_sent), 'Network TX bytes\/sec')<\/code><\/td><\/tr><tr><td>Load 1m<\/td><td><code>alias(telegraf.linux-demo.system.load1, 'Load 1m')<\/code><\/td><\/tr><tr><td>Load 5m<\/td><td><code>alias(telegraf.linux-demo.system.load5, 'Load 5m')<\/code><\/td><\/tr><tr><td>Load 15m<\/td><td><code>alias(telegraf.linux-demo.system.load15, 'Load 15m')<\/code><\/td><\/tr><tr><td>Total Processes<\/td><td><code>alias(telegraf.linux-demo.processes.total, 'Total Processes')<\/code><\/td><\/tr><tr><td>Zombie Processes<\/td><td><code>alias(telegraf.linux-demo.processes.zombies, 'Zombie Processes')<\/code><\/td><\/tr><tr><td>Swap Used<\/td><td><code>alias(telegraf.linux-demo.swap.used_percent, 'Swap Used %')<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"step-2-create-a-linux-monitoring-dashboard\">Step 2: Create a Linux Monitoring Dashboard<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"21-create-dashboard\">2.1 Create dashboard<\/h2>\n\n\n\n<p>Go to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dashboards \u2192 New \u2192 New dashboard \u2192 Add visualization\n<\/code><\/pre>\n\n\n\n<p>Select datasource:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Graphite\n<\/code><\/pre>\n\n\n\n<p>Save dashboard as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Linux Monitoring - Graphite Telegraf\n<\/code><\/pre>\n\n\n\n<p>Set:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Time range: Last 15 minutes\nRefresh: 10s\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"22-panel-1-cpu-usage-\">2.2 Panel 1: CPU Usage %<\/h2>\n\n\n\n<p>Visualization:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Time series\n<\/code><\/pre>\n\n\n\n<p>Query A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %')\n<\/code><\/pre>\n\n\n\n<p>Query B:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.cpu.usage_system, 'CPU System %')\n<\/code><\/pre>\n\n\n\n<p>Query C:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.cpu.usage_user, 'CPU User %')\n<\/code><\/pre>\n\n\n\n<p>Unit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Percent (0-100)\n<\/code><\/pre>\n\n\n\n<p>Min\/Max:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0 \/ 100\n<\/code><\/pre>\n\n\n\n<p>Thresholds:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>70 warning\n90 critical\n<\/code><\/pre>\n\n\n\n<p>Validation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stress --cpu 2 --timeout 120\n<\/code><\/pre>\n\n\n\n<p>Expected:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU Active % increases.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"23-panel-2-memory-used-\">2.3 Panel 2: Memory Used %<\/h2>\n\n\n\n<p>Visualization:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Time series\n<\/code><\/pre>\n\n\n\n<p>Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.mem.used_percent, 'Memory Used %')\n<\/code><\/pre>\n\n\n\n<p>Unit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Percent (0-100)\n<\/code><\/pre>\n\n\n\n<p>Min\/Max:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0 \/ 100\n<\/code><\/pre>\n\n\n\n<p>Thresholds:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>75 warning\n90 critical\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"24-panel-3-system-load-average\">2.4 Panel 3: System Load Average<\/h2>\n\n\n\n<p>Visualization:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Time series\n<\/code><\/pre>\n\n\n\n<p>Queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.system.load1, 'Load 1m')\nalias(telegraf.linux-demo.system.load5, 'Load 5m')\nalias(telegraf.linux-demo.system.load15, 'Load 15m')\n<\/code><\/pre>\n\n\n\n<p>Unit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Short\n<\/code><\/pre>\n\n\n\n<p>Do not use percent for load.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"25-panel-4-disk-usage-\">2.5 Panel 4: Disk Usage %<\/h2>\n\n\n\n<p>Visualization:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Time series\n<\/code><\/pre>\n\n\n\n<p>Correct query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.disk.used_percent, 'Disk Used %')\n<\/code><\/pre>\n\n\n\n<p>Do not use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>aliasByNode(telegraf.linux-demo.disk.*.used_percent, 3)\n<\/code><\/pre>\n\n\n\n<p>Reason:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>The current metric path has no mountpoint node.\n<\/code><\/pre>\n\n\n\n<p>Unit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Percent (0-100)\n<\/code><\/pre>\n\n\n\n<p>Thresholds:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>75 warning\n90 critical\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"26-panel-5-network-traffic\">2.6 Panel 5: Network Traffic<\/h2>\n\n\n\n<p>Visualization:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Time series\n<\/code><\/pre>\n\n\n\n<p>Queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_recv), 'Network RX bytes\/sec')\nalias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_sent), 'Network TX bytes\/sec')\n<\/code><\/pre>\n\n\n\n<p>Unit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Bytes\/sec\n<\/code><\/pre>\n\n\n\n<p>Do not use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.net.eth0.bytes_recv\ntelegraf.linux-demo.net.ens5.bytes_recv\n<\/code><\/pre>\n\n\n\n<p>Reason:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>The current metric path has no interface node.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"27-panel-6-process-count\">2.7 Panel 6: Process Count<\/h2>\n\n\n\n<p>Visualization:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Time series\n<\/code><\/pre>\n\n\n\n<p>Queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.processes.total, 'Total Processes')\nalias(telegraf.linux-demo.processes.running, 'Running Processes')\nalias(telegraf.linux-demo.processes.sleeping, 'Sleeping Processes')\n<\/code><\/pre>\n\n\n\n<p>Unit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Short\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"28-panel-7-zombie-processes\">2.8 Panel 7: Zombie Processes<\/h2>\n\n\n\n<p>Visualization:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Stat\n<\/code><\/pre>\n\n\n\n<p>Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.processes.zombies, 'Zombie Processes')\n<\/code><\/pre>\n\n\n\n<p>Unit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Short\n<\/code><\/pre>\n\n\n\n<p>Thresholds:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0 good\n1 critical\n<\/code><\/pre>\n\n\n\n<p>Expected:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"29-optional-panels\">2.9 Optional panels<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"swap-used-\">Swap Used %<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.swap.used_percent, 'Swap Used %')\n<\/code><\/pre>\n\n\n\n<p>Unit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Percent (0-100)\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"system-uptime\">System Uptime<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.system.uptime, 'System Uptime')\n<\/code><\/pre>\n\n\n\n<p>Unit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Seconds\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"disk-inodes-used-\">Disk Inodes Used %<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.disk.inodes_used_percent, 'Disk Inodes Used %')\n<\/code><\/pre>\n\n\n\n<p>Unit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Percent (0-100)\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"210-final-dashboard-query-table\">2.10 Final dashboard query table<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Panel<\/th><th class=\"has-text-align-left\" data-align=\"left\">Visualization<\/th><th class=\"has-text-align-left\" data-align=\"left\">Correct query<\/th><\/tr><\/thead><tbody><tr><td>CPU Usage %<\/td><td>Time series<\/td><td><code>alias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %')<\/code><\/td><\/tr><tr><td>CPU Usage %<\/td><td>Time series<\/td><td><code>alias(telegraf.linux-demo.cpu.usage_system, 'CPU System %')<\/code><\/td><\/tr><tr><td>CPU Usage %<\/td><td>Time series<\/td><td><code>alias(telegraf.linux-demo.cpu.usage_user, 'CPU User %')<\/code><\/td><\/tr><tr><td>Memory Used %<\/td><td>Time series<\/td><td><code>alias(telegraf.linux-demo.mem.used_percent, 'Memory Used %')<\/code><\/td><\/tr><tr><td>System Load<\/td><td>Time series<\/td><td><code>alias(telegraf.linux-demo.system.load1, 'Load 1m')<\/code><\/td><\/tr><tr><td>System Load<\/td><td>Time series<\/td><td><code>alias(telegraf.linux-demo.system.load5, 'Load 5m')<\/code><\/td><\/tr><tr><td>System Load<\/td><td>Time series<\/td><td><code>alias(telegraf.linux-demo.system.load15, 'Load 15m')<\/code><\/td><\/tr><tr><td>Disk Used %<\/td><td>Time series<\/td><td><code>alias(telegraf.linux-demo.disk.used_percent, 'Disk Used %')<\/code><\/td><\/tr><tr><td>Network RX<\/td><td>Time series<\/td><td><code>alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_recv), 'Network RX bytes\/sec')<\/code><\/td><\/tr><tr><td>Network TX<\/td><td>Time series<\/td><td><code>alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_sent), 'Network TX bytes\/sec')<\/code><\/td><\/tr><tr><td>Process Count<\/td><td>Time series<\/td><td><code>alias(telegraf.linux-demo.processes.total, 'Total Processes')<\/code><\/td><\/tr><tr><td>Zombie Processes<\/td><td>Stat<\/td><td><code>alias(telegraf.linux-demo.processes.zombies, 'Zombie Processes')<\/code><\/td><\/tr><tr><td>Swap Used %<\/td><td>Time series<\/td><td><code>alias(telegraf.linux-demo.swap.used_percent, 'Swap Used %')<\/code><\/td><\/tr><tr><td>Uptime<\/td><td>Stat<\/td><td><code>alias(telegraf.linux-demo.system.uptime, 'System Uptime')<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"step-3-create-alerts\">Step 3: Create Alerts<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"important-alert-rule-model\">Important alert rule model<\/h2>\n\n\n\n<p>Use this model for each Grafana alert rule:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A = Graphite query\nB = Reduce expression\nC = Threshold expression\nCondition = C\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"31-high-cpu-usage-alert\">3.1 High CPU Usage Alert<\/h2>\n\n\n\n<p>Rule name:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Linux - High CPU Usage\n<\/code><\/pre>\n\n\n\n<p>Query A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.usage_active\n<\/code><\/pre>\n\n\n\n<p>Relative time range:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>From: 5m\nTo: now\n<\/code><\/pre>\n\n\n\n<p>Expression B:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Reduce A using Mean\n<\/code><\/pre>\n\n\n\n<p>Expression C:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Threshold B is above 80\n<\/code><\/pre>\n\n\n\n<p>Evaluation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Evaluate every: 1m\nPending period: 2m\n<\/code><\/pre>\n\n\n\n<p>Labels:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>severity=warning\nservice=linux\nhost=linux-demo\nmetric=cpu\n<\/code><\/pre>\n\n\n\n<p>Validation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stress --cpu 2 --timeout 180\n<\/code><\/pre>\n\n\n\n<p>For demo testing, temporarily reduce threshold to 20.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"32-high-memory-usage-alert\">3.2 High Memory Usage Alert<\/h2>\n\n\n\n<p>Rule name:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Linux - High Memory Usage\n<\/code><\/pre>\n\n\n\n<p>Query A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.mem.used_percent\n<\/code><\/pre>\n\n\n\n<p>Reduce:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Last\n<\/code><\/pre>\n\n\n\n<p>Threshold:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Above 85\n<\/code><\/pre>\n\n\n\n<p>Evaluation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Evaluate every: 1m\nPending period: 3m\n<\/code><\/pre>\n\n\n\n<p>For demo testing, temporarily set threshold slightly below current memory usage.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"33-high-disk-usage-alert\">3.3 High Disk Usage Alert<\/h2>\n\n\n\n<p>Rule name:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Linux - High Disk Usage\n<\/code><\/pre>\n\n\n\n<p>Correct query A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.disk.used_percent\n<\/code><\/pre>\n\n\n\n<p>Do not use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>highestCurrent(telegraf.linux-demo.disk.*.used_percent, 1)\n<\/code><\/pre>\n\n\n\n<p>Reason:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>The current Graphite path has only one disk used_percent series.\n<\/code><\/pre>\n\n\n\n<p>Reduce:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Last\n<\/code><\/pre>\n\n\n\n<p>Threshold:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Above 85\n<\/code><\/pre>\n\n\n\n<p>Evaluation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Evaluate every: 1m\nPending period: 5m\n<\/code><\/pre>\n\n\n\n<p>Validation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dd if=\/dev\/zero of=\/tmp\/disk-alert-test.img bs=100M count=5\nrm -f \/tmp\/disk-alert-test.img\n<\/code><\/pre>\n\n\n\n<p>For a large disk, temporarily lower threshold near current usage.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"34-high-load-average-alert\">3.4 High Load Average Alert<\/h2>\n\n\n\n<p>Rule name:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Linux - High Load Average\n<\/code><\/pre>\n\n\n\n<p>Query A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.system.load1\n<\/code><\/pre>\n\n\n\n<p>Reduce:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Mean\n<\/code><\/pre>\n\n\n\n<p>Threshold:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Above 2\n<\/code><\/pre>\n\n\n\n<p>Evaluation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Evaluate every: 1m\nPending period: 3m\n<\/code><\/pre>\n\n\n\n<p>Validation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stress --cpu 2 --timeout 180\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"35-zombie-processes-alert\">3.5 Zombie Processes Alert<\/h2>\n\n\n\n<p>Rule name:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Linux - Zombie Processes Detected\n<\/code><\/pre>\n\n\n\n<p>Query A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.processes.zombies\n<\/code><\/pre>\n\n\n\n<p>Reduce:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Last\n<\/code><\/pre>\n\n\n\n<p>Threshold:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Above 0\n<\/code><\/pre>\n\n\n\n<p>Evaluation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Evaluate every: 1m\nPending period: 1m\n<\/code><\/pre>\n\n\n\n<p>For demo testing only:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Temporarily set threshold above -1, then restore to above 0.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"36-alert-summary-table\">3.6 Alert summary table<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Alert<\/th><th class=\"has-text-align-left\" data-align=\"left\">Correct query<\/th><th class=\"has-text-align-left\" data-align=\"left\">Reduce<\/th><th class=\"has-text-align-left\" data-align=\"left\">Threshold<\/th><th class=\"has-text-align-left\" data-align=\"left\">Evaluate<\/th><th class=\"has-text-align-left\" data-align=\"left\">Pending<\/th><\/tr><\/thead><tbody><tr><td>High CPU<\/td><td><code>telegraf.linux-demo.cpu.usage_active<\/code><\/td><td>Mean<\/td><td>&gt; 80<\/td><td>1m<\/td><td>2m<\/td><\/tr><tr><td>High Memory<\/td><td><code>telegraf.linux-demo.mem.used_percent<\/code><\/td><td>Last<\/td><td>&gt; 85<\/td><td>1m<\/td><td>3m<\/td><\/tr><tr><td>High Disk<\/td><td><code>telegraf.linux-demo.disk.used_percent<\/code><\/td><td>Last<\/td><td>&gt; 85<\/td><td>1m<\/td><td>5m<\/td><\/tr><tr><td>High Load<\/td><td><code>telegraf.linux-demo.system.load1<\/code><\/td><td>Mean<\/td><td>&gt; 2<\/td><td>1m<\/td><td>3m<\/td><\/tr><tr><td>Zombie Processes<\/td><td><code>telegraf.linux-demo.processes.zombies<\/code><\/td><td>Last<\/td><td>&gt; 0<\/td><td>1m<\/td><td>1m<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"final-correction-summary\">Final correction summary<\/h1>\n\n\n\n<p>Replace all old assumed metric paths:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_active\ntelegraf.linux-demo.disk.*.used_percent\ntelegraf.linux-demo.net.eth0.bytes_recv\ntelegraf.linux-demo.net.ens5.bytes_recv\n<\/code><\/pre>\n\n\n\n<p>With the real collected metric paths:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.usage_active\ntelegraf.linux-demo.disk.used_percent\ntelegraf.linux-demo.net.bytes_recv\ntelegraf.linux-demo.net.bytes_sent\n<\/code><\/pre>\n\n\n\n<p>The correct lab is now based on the actual Graphite data collected in your server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">JSON &#8211; file name graphite.json<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"__inputs\": &#91;\n    {\n      \"name\": \"DS_GRAPHITE\",\n      \"label\": \"Graphite\",\n      \"description\": \"Graphite datasource\",\n      \"type\": \"datasource\",\n      \"pluginId\": \"graphite\",\n      \"pluginName\": \"Graphite\"\n    }\n  ],\n  \"__requires\": &#91;\n    {\n      \"type\": \"grafana\",\n      \"id\": \"grafana\",\n      \"name\": \"Grafana\",\n      \"version\": \"13.0.0\"\n    },\n    {\n      \"type\": \"datasource\",\n      \"id\": \"graphite\",\n      \"name\": \"Graphite\",\n      \"version\": \"1.0.0\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"timeseries\",\n      \"name\": \"Time series\",\n      \"version\": \"\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"stat\",\n      \"name\": \"Stat\",\n      \"version\": \"\"\n    }\n  ],\n  \"uid\": \"linux-graphite-telegraf-actual\",\n  \"title\": \"Linux Monitoring - Graphite Telegraf Actual Metrics\",\n  \"tags\": &#91;\n    \"graphite\",\n    \"telegraf\",\n    \"linux\",\n    \"grafana-13\"\n  ],\n  \"timezone\": \"browser\",\n  \"schemaVersion\": 42,\n  \"version\": 1,\n  \"refresh\": \"10s\",\n  \"time\": {\n    \"from\": \"now-15m\",\n    \"to\": \"now\"\n  },\n  \"templating\": {\n    \"list\": &#91;]\n  },\n  \"annotations\": {\n    \"list\": &#91;\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"grafana\",\n          \"uid\": \"-- Grafana --\"\n        },\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations &amp; Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"panels\": &#91;\n    {\n      \"id\": 1,\n      \"type\": \"timeseries\",\n      \"title\": \"CPU Usage %\",\n      \"datasource\": {\n        \"type\": \"graphite\",\n        \"uid\": \"${DS_GRAPHITE}\"\n      },\n      \"gridPos\": {\n        \"x\": 0,\n        \"y\": 0,\n        \"w\": 12,\n        \"h\": 8\n      },\n      \"targets\": &#91;\n        {\n          \"target\": \"alias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %')\",\n          \"refId\": \"A\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        },\n        {\n          \"target\": \"alias(telegraf.linux-demo.cpu.usage_system, 'CPU System %')\",\n          \"refId\": \"B\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        },\n        {\n          \"target\": \"alias(telegraf.linux-demo.cpu.usage_user, 'CPU User %')\",\n          \"refId\": \"C\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        }\n      ],\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"percent\",\n          \"mappings\": &#91;],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": &#91;\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"orange\",\n                \"value\": 70\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 90\n              }\n            ]\n          },\n          \"min\": 0,\n          \"max\": 100\n        },\n        \"overrides\": &#91;]\n      },\n      \"options\": {\n        \"legend\": {\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"none\"\n        }\n      }\n    },\n    {\n      \"id\": 2,\n      \"type\": \"timeseries\",\n      \"title\": \"Memory Used %\",\n      \"datasource\": {\n        \"type\": \"graphite\",\n        \"uid\": \"${DS_GRAPHITE}\"\n      },\n      \"gridPos\": {\n        \"x\": 12,\n        \"y\": 0,\n        \"w\": 12,\n        \"h\": 8\n      },\n      \"targets\": &#91;\n        {\n          \"target\": \"alias(telegraf.linux-demo.mem.used_percent, 'Memory Used %')\",\n          \"refId\": \"A\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        }\n      ],\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"percent\",\n          \"mappings\": &#91;],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": &#91;\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"orange\",\n                \"value\": 75\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 90\n              }\n            ]\n          },\n          \"min\": 0,\n          \"max\": 100\n        },\n        \"overrides\": &#91;]\n      },\n      \"options\": {\n        \"legend\": {\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"none\"\n        }\n      }\n    },\n    {\n      \"id\": 3,\n      \"type\": \"timeseries\",\n      \"title\": \"System Load Average\",\n      \"datasource\": {\n        \"type\": \"graphite\",\n        \"uid\": \"${DS_GRAPHITE}\"\n      },\n      \"gridPos\": {\n        \"x\": 0,\n        \"y\": 8,\n        \"w\": 12,\n        \"h\": 8\n      },\n      \"targets\": &#91;\n        {\n          \"target\": \"alias(telegraf.linux-demo.system.load1, 'Load 1m')\",\n          \"refId\": \"A\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        },\n        {\n          \"target\": \"alias(telegraf.linux-demo.system.load5, 'Load 5m')\",\n          \"refId\": \"B\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        },\n        {\n          \"target\": \"alias(telegraf.linux-demo.system.load15, 'Load 15m')\",\n          \"refId\": \"C\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        }\n      ],\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"short\",\n          \"mappings\": &#91;],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": &#91;\n              {\n                \"color\": \"green\",\n                \"value\": null\n              }\n            ]\n          }\n        },\n        \"overrides\": &#91;]\n      },\n      \"options\": {\n        \"legend\": {\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"none\"\n        }\n      }\n    },\n    {\n      \"id\": 4,\n      \"type\": \"timeseries\",\n      \"title\": \"Disk Usage %\",\n      \"datasource\": {\n        \"type\": \"graphite\",\n        \"uid\": \"${DS_GRAPHITE}\"\n      },\n      \"gridPos\": {\n        \"x\": 12,\n        \"y\": 8,\n        \"w\": 12,\n        \"h\": 8\n      },\n      \"targets\": &#91;\n        {\n          \"target\": \"alias(telegraf.linux-demo.disk.used_percent, 'Disk Used %')\",\n          \"refId\": \"A\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        },\n        {\n          \"target\": \"alias(telegraf.linux-demo.disk.inodes_used_percent, 'Inodes Used %')\",\n          \"refId\": \"B\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        }\n      ],\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"percent\",\n          \"mappings\": &#91;],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": &#91;\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"orange\",\n                \"value\": 75\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 90\n              }\n            ]\n          },\n          \"min\": 0,\n          \"max\": 100\n        },\n        \"overrides\": &#91;]\n      },\n      \"options\": {\n        \"legend\": {\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"none\"\n        }\n      }\n    },\n    {\n      \"id\": 5,\n      \"type\": \"timeseries\",\n      \"title\": \"Network Traffic\",\n      \"datasource\": {\n        \"type\": \"graphite\",\n        \"uid\": \"${DS_GRAPHITE}\"\n      },\n      \"gridPos\": {\n        \"x\": 0,\n        \"y\": 16,\n        \"w\": 12,\n        \"h\": 8\n      },\n      \"targets\": &#91;\n        {\n          \"target\": \"alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_recv), 'Network RX bytes\/sec')\",\n          \"refId\": \"A\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        },\n        {\n          \"target\": \"alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_sent), 'Network TX bytes\/sec')\",\n          \"refId\": \"B\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        }\n      ],\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"Bps\",\n          \"mappings\": &#91;],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": &#91;\n              {\n                \"color\": \"green\",\n                \"value\": null\n              }\n            ]\n          }\n        },\n        \"overrides\": &#91;]\n      },\n      \"options\": {\n        \"legend\": {\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"none\"\n        }\n      }\n    },\n    {\n      \"id\": 6,\n      \"type\": \"timeseries\",\n      \"title\": \"Process Count\",\n      \"datasource\": {\n        \"type\": \"graphite\",\n        \"uid\": \"${DS_GRAPHITE}\"\n      },\n      \"gridPos\": {\n        \"x\": 12,\n        \"y\": 16,\n        \"w\": 12,\n        \"h\": 8\n      },\n      \"targets\": &#91;\n        {\n          \"target\": \"alias(telegraf.linux-demo.processes.total, 'Total Processes')\",\n          \"refId\": \"A\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        },\n        {\n          \"target\": \"alias(telegraf.linux-demo.processes.running, 'Running Processes')\",\n          \"refId\": \"B\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        },\n        {\n          \"target\": \"alias(telegraf.linux-demo.processes.sleeping, 'Sleeping Processes')\",\n          \"refId\": \"C\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        }\n      ],\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"short\",\n          \"mappings\": &#91;],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": &#91;\n              {\n                \"color\": \"green\",\n                \"value\": null\n              }\n            ]\n          },\n          \"min\": 0\n        },\n        \"overrides\": &#91;]\n      },\n      \"options\": {\n        \"legend\": {\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"none\"\n        }\n      }\n    },\n    {\n      \"id\": 7,\n      \"type\": \"stat\",\n      \"title\": \"Zombie Processes\",\n      \"datasource\": {\n        \"type\": \"graphite\",\n        \"uid\": \"${DS_GRAPHITE}\"\n      },\n      \"gridPos\": {\n        \"x\": 0,\n        \"y\": 24,\n        \"w\": 6,\n        \"h\": 5\n      },\n      \"targets\": &#91;\n        {\n          \"target\": \"alias(telegraf.linux-demo.processes.zombies, 'Zombie Processes')\",\n          \"refId\": \"A\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        }\n      ],\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"short\",\n          \"mappings\": &#91;],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": &#91;\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 1\n              }\n            ]\n          },\n          \"min\": 0\n        },\n        \"overrides\": &#91;]\n      },\n      \"options\": {\n        \"reduceOptions\": {\n          \"values\": false,\n          \"calcs\": &#91;\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\"\n        },\n        \"orientation\": \"auto\",\n        \"textMode\": \"auto\",\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\"\n      }\n    },\n    {\n      \"id\": 8,\n      \"type\": \"stat\",\n      \"title\": \"Swap Used %\",\n      \"datasource\": {\n        \"type\": \"graphite\",\n        \"uid\": \"${DS_GRAPHITE}\"\n      },\n      \"gridPos\": {\n        \"x\": 6,\n        \"y\": 24,\n        \"w\": 6,\n        \"h\": 5\n      },\n      \"targets\": &#91;\n        {\n          \"target\": \"alias(telegraf.linux-demo.swap.used_percent, 'Swap Used %')\",\n          \"refId\": \"A\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        }\n      ],\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"percent\",\n          \"mappings\": &#91;],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": &#91;\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"orange\",\n                \"value\": 50\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"min\": 0,\n          \"max\": 100\n        },\n        \"overrides\": &#91;]\n      },\n      \"options\": {\n        \"reduceOptions\": {\n          \"values\": false,\n          \"calcs\": &#91;\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\"\n        },\n        \"orientation\": \"auto\",\n        \"textMode\": \"auto\",\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\"\n      }\n    },\n    {\n      \"id\": 9,\n      \"type\": \"stat\",\n      \"title\": \"System Uptime\",\n      \"datasource\": {\n        \"type\": \"graphite\",\n        \"uid\": \"${DS_GRAPHITE}\"\n      },\n      \"gridPos\": {\n        \"x\": 12,\n        \"y\": 24,\n        \"w\": 6,\n        \"h\": 5\n      },\n      \"targets\": &#91;\n        {\n          \"target\": \"alias(telegraf.linux-demo.system.uptime, 'System Uptime')\",\n          \"refId\": \"A\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        }\n      ],\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"s\",\n          \"mappings\": &#91;],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": &#91;\n              {\n                \"color\": \"green\",\n                \"value\": null\n              }\n            ]\n          }\n        },\n        \"overrides\": &#91;]\n      },\n      \"options\": {\n        \"reduceOptions\": {\n          \"values\": false,\n          \"calcs\": &#91;\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\"\n        },\n        \"orientation\": \"auto\",\n        \"textMode\": \"auto\",\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\"\n      }\n    },\n    {\n      \"id\": 10,\n      \"type\": \"timeseries\",\n      \"title\": \"CPU Idle vs Active\",\n      \"datasource\": {\n        \"type\": \"graphite\",\n        \"uid\": \"${DS_GRAPHITE}\"\n      },\n      \"gridPos\": {\n        \"x\": 18,\n        \"y\": 24,\n        \"w\": 6,\n        \"h\": 5\n      },\n      \"targets\": &#91;\n        {\n          \"target\": \"alias(telegraf.linux-demo.cpu.usage_idle, 'CPU Idle %')\",\n          \"refId\": \"A\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        },\n        {\n          \"target\": \"alias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %')\",\n          \"refId\": \"B\",\n          \"datasource\": {\n            \"type\": \"graphite\",\n            \"uid\": \"${DS_GRAPHITE}\"\n          }\n        }\n      ],\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"unit\": \"percent\",\n          \"mappings\": &#91;],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": &#91;\n              {\n                \"color\": \"green\",\n                \"value\": null\n              }\n            ]\n          },\n          \"min\": 0,\n          \"max\": 100\n        },\n        \"overrides\": &#91;]\n      },\n      \"options\": {\n        \"legend\": {\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"none\"\n        }\n      }\n    }\n  ]\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Grafana 13.x + Graphite + Telegraf Linux Monitoring Lab Guide Important validation from the real Graphite storage The real collected [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2237","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Grafana Lab with Graphite Datasource metrics \u2013 Dashboard - SRE School<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Grafana Lab with Graphite Datasource metrics \u2013 Dashboard - SRE School\" \/>\n<meta property=\"og:description\" content=\"Grafana 13.x + Graphite + Telegraf Linux Monitoring Lab Guide Important validation from the real Graphite storage The real collected [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/\" \/>\n<meta property=\"og:site_name\" content=\"SRE School\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-24T08:23:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T10:41:57+00:00\" \/>\n<meta name=\"author\" content=\"Rajesh Kumar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rajesh Kumar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/\",\"url\":\"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/\",\"name\":\"Grafana Lab with Graphite Datasource metrics \u2013 Dashboard - SRE School\",\"isPartOf\":{\"@id\":\"https:\/\/sreschool.com\/blog\/#website\"},\"datePublished\":\"2026-04-24T08:23:09+00:00\",\"dateModified\":\"2026-04-24T10:41:57+00:00\",\"author\":{\"@id\":\"https:\/\/sreschool.com\/blog\/#\/schema\/person\/0ffe446f77bb2589992dbe3a7f417201\"},\"breadcrumb\":{\"@id\":\"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/sreschool.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Grafana Lab with Graphite Datasource metrics \u2013 Dashboard\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/sreschool.com\/blog\/#website\",\"url\":\"https:\/\/sreschool.com\/blog\/\",\"name\":\"SRESchool\",\"description\":\"Master SRE. Build Resilient Systems. Lead the Future of Reliability\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/sreschool.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/sreschool.com\/blog\/#\/schema\/person\/0ffe446f77bb2589992dbe3a7f417201\",\"name\":\"Rajesh Kumar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\/\/sreschool.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f901a4f2929fa034a291a8363d589791d5a3c1f6a051c22e744acb8bfc8e022a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f901a4f2929fa034a291a8363d589791d5a3c1f6a051c22e744acb8bfc8e022a?s=96&d=mm&r=g\",\"caption\":\"Rajesh Kumar\"},\"sameAs\":[\"http:\/\/sreschool.com\/blog\"],\"url\":\"https:\/\/sreschool.com\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Grafana Lab with Graphite Datasource metrics \u2013 Dashboard - SRE School","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/","og_locale":"en_US","og_type":"article","og_title":"Grafana Lab with Graphite Datasource metrics \u2013 Dashboard - SRE School","og_description":"Grafana 13.x + Graphite + Telegraf Linux Monitoring Lab Guide Important validation from the real Graphite storage The real collected [&hellip;]","og_url":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/","og_site_name":"SRE School","article_published_time":"2026-04-24T08:23:09+00:00","article_modified_time":"2026-04-24T10:41:57+00:00","author":"Rajesh Kumar","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Rajesh Kumar","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/","url":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/","name":"Grafana Lab with Graphite Datasource metrics \u2013 Dashboard - SRE School","isPartOf":{"@id":"https:\/\/sreschool.com\/blog\/#website"},"datePublished":"2026-04-24T08:23:09+00:00","dateModified":"2026-04-24T10:41:57+00:00","author":{"@id":"https:\/\/sreschool.com\/blog\/#\/schema\/person\/0ffe446f77bb2589992dbe3a7f417201"},"breadcrumb":{"@id":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-dashboard\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sreschool.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Grafana Lab with Graphite Datasource metrics \u2013 Dashboard"}]},{"@type":"WebSite","@id":"https:\/\/sreschool.com\/blog\/#website","url":"https:\/\/sreschool.com\/blog\/","name":"SRESchool","description":"Master SRE. Build Resilient Systems. Lead the Future of Reliability","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sreschool.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"},{"@type":"Person","@id":"https:\/\/sreschool.com\/blog\/#\/schema\/person\/0ffe446f77bb2589992dbe3a7f417201","name":"Rajesh Kumar","image":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/sreschool.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f901a4f2929fa034a291a8363d589791d5a3c1f6a051c22e744acb8bfc8e022a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f901a4f2929fa034a291a8363d589791d5a3c1f6a051c22e744acb8bfc8e022a?s=96&d=mm&r=g","caption":"Rajesh Kumar"},"sameAs":["http:\/\/sreschool.com\/blog"],"url":"https:\/\/sreschool.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/posts\/2237","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/comments?post=2237"}],"version-history":[{"count":4,"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/posts\/2237\/revisions"}],"predecessor-version":[{"id":2259,"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/posts\/2237\/revisions\/2259"}],"wp:attachment":[{"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/media?parent=2237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/categories?post=2237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/tags?post=2237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}