{"id":2232,"date":"2026-04-24T08:12:07","date_gmt":"2026-04-24T08:12:07","guid":{"rendered":"https:\/\/sreschool.com\/blog\/?p=2232"},"modified":"2026-04-24T08:18:20","modified_gmt":"2026-04-24T08:18:20","slug":"grafana-lab-with-graphite-datasource-metrics-exploring","status":"publish","type":"post","link":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-exploring\/","title":{"rendered":"Grafana Lab with Graphite Datasource metrics &#8211; Exploring"},"content":{"rendered":"\n<p>Below is <strong>Step 1 only<\/strong>: a deep, student-ready lab guide for <strong>Exploring Graphite metrics in Grafana 13.x using Explore<\/strong>.<\/p>\n\n\n\n<p>This assumes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Graphite datasource is already added in Grafana\nGraphite URL is working\nTelegraf is sending Linux metrics to Graphite\nMetrics prefix is telegraf\nHostname is linux-demo\n<\/code><\/pre>\n\n\n\n<p>Grafana Explore is designed for ad-hoc investigation before creating dashboards. Grafana describes Explore as the place to query, analyze, and aggregate data without first creating a dashboard. (<a href=\"https:\/\/grafana.com\/docs\/grafana\/latest\/visualizations\/explore\/?utm_source=chatgpt.com\">Grafana Labs<\/a>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Lab 1: Explore Linux Metrics from Graphite in Grafana Explore<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Objective<\/h2>\n\n\n\n<p>By the end of this lab, students will be able to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. Open Grafana Explore\n2. Select the Graphite datasource\n3. Browse available Graphite metrics\n4. Query CPU, memory, disk, network, and load metrics\n5. Use Graphite functions in Grafana Explore\n6. Compare multiple metrics\n7. Understand Graphite metric naming\n8. Troubleshoot common Explore\/query issues\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Lab Architecture<\/h1>\n\n\n\n<p>Your current data flow is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Linux Host\n   \u2193\nTelegraf\n   \u2193\nGraphite Carbon :2003\n   \u2193\nWhisper Storage\n   \u2193\nGraphite Web :8080\n   \u2193\nGrafana Graphite Datasource\n   \u2193\nGrafana Explore\n<\/code><\/pre>\n\n\n\n<p>In this setup, Telegraf collects Linux metrics every 10 seconds and sends them to Graphite. Grafana then reads those metrics from Graphite.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Important Concepts Before Starting<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">What is Grafana Explore?<\/h2>\n\n\n\n<p><strong>Explore<\/strong> is Grafana\u2019s investigation workspace. It is used to test queries, inspect metrics, compare values, and experiment before building dashboards or alerts. Grafana\u2019s documentation says Explore lets you query and analyze data without creating a dashboard first. (<a href=\"https:\/\/grafana.com\/docs\/grafana\/latest\/visualizations\/explore\/?utm_source=chatgpt.com\">Grafana Labs<\/a>)<\/p>\n\n\n\n<p>In simple words:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dashboard = saved view for long-term monitoring\nExplore = temporary workspace for investigation and learning\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">What is Graphite Query Format?<\/h2>\n\n\n\n<p>Graphite metrics are usually stored in a dot-separated path format:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_active\n<\/code><\/pre>\n\n\n\n<p>Breakdown:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Part<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td><code>telegraf<\/code><\/td><td>Metric prefix configured in Telegraf<\/td><\/tr><tr><td><code>linux-demo<\/code><\/td><td>Hostname configured in Telegraf<\/td><\/tr><tr><td><code>cpu<\/code><\/td><td>Measurement type<\/td><\/tr><tr><td><code>cpu-total<\/code><\/td><td>CPU instance<\/td><\/tr><tr><td><code>usage_active<\/code><\/td><td>Actual metric field<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Grafana includes a Graphite-specific query editor that helps users navigate metric paths, add functions, and build Graphite queries. (<a href=\"https:\/\/grafana.com\/docs\/grafana\/latest\/datasources\/graphite\/query-editor\/?utm_source=chatgpt.com\">Grafana Labs<\/a>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Pre-Lab Validation<\/h1>\n\n\n\n<p>Before students open Grafana Explore, validate that Graphite has metrics.<\/p>\n\n\n\n<p>Run this on the Graphite server:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it graphite find \/opt\/graphite\/storage\/whisper\/telegraf -type f | head -20\n<\/code><\/pre>\n\n\n\n<p>Expected output should look similar to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/graphite\/storage\/whisper\/telegraf\/linux-demo\/cpu\/cpu-total\/usage_active.wsp\n\/opt\/graphite\/storage\/whisper\/telegraf\/linux-demo\/mem\/used_percent.wsp\n\/opt\/graphite\/storage\/whisper\/telegraf\/linux-demo\/system\/load1.wsp\n<\/code><\/pre>\n\n\n\n<p>If <code>.wsp<\/code> files are visible, Graphite is storing metrics.<\/p>\n\n\n\n<p>Also test Graphite API:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl \"http:\/\/localhost:8080\/render?target=telegraf.linux-demo.cpu.cpu-total.usage_active&amp;from=-10min&amp;format=json\"\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JSON output with datapoints\n<\/code><\/pre>\n\n\n\n<p>If this works, Grafana should also be able to query Graphite.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.1: Open Grafana Explore<\/h1>\n\n\n\n<p>Login to Grafana.<\/p>\n\n\n\n<p>From the left-side menu, click:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explore\n<\/code><\/pre>\n\n\n\n<p>Depending on your Grafana 13.x UI, this may appear as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explore\n<\/code><\/pre>\n\n\n\n<p>or under the navigation\/search menu.<\/p>\n\n\n\n<p>You should see a query workspace with a datasource selector at the top.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.2: Select Graphite Datasource<\/h1>\n\n\n\n<p>At the top of Explore, select your Graphite datasource.<\/p>\n\n\n\n<p>Example datasource name:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Graphite\n<\/code><\/pre>\n\n\n\n<p>or whatever name you used when adding it.<\/p>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Grafana Explore opens the Graphite query editor.\n<\/code><\/pre>\n\n\n\n<p>If you see another datasource such as Prometheus, Loki, MySQL, or Elasticsearch, change it to Graphite.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.3: Set Time Range<\/h1>\n\n\n\n<p>At the top-right corner, set the time range to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Last 15 minutes\n<\/code><\/pre>\n\n\n\n<p>Why?<\/p>\n\n\n\n<p>Telegraf is sending fresh Linux metrics every 10 seconds. A short time range makes it easier to confirm live data.<\/p>\n\n\n\n<p>Recommended time ranges for this lab:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Time Range<\/th><th>Use Case<\/th><\/tr><\/thead><tbody><tr><td>Last 5 minutes<\/td><td>Live verification<\/td><\/tr><tr><td>Last 15 minutes<\/td><td>Best for initial lab<\/td><\/tr><tr><td>Last 1 hour<\/td><td>Better trend visibility<\/td><\/tr><tr><td>Last 6 hours<\/td><td>Longer infrastructure trend<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>For first-time testing, use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Last 15 minutes\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.4: Run First CPU Query<\/h1>\n\n\n\n<p>In the Graphite query field, enter:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_active\n<\/code><\/pre>\n\n\n\n<p>Click:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Run query\n<\/code><\/pre>\n\n\n\n<p>or press:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Shift + Enter\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>A time-series graph showing CPU active usage percentage.\n<\/code><\/pre>\n\n\n\n<p>This metric shows active CPU usage.<\/p>\n\n\n\n<p>Example meaning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>If value is 5, CPU active usage is around 5%.\nIf value is 80, CPU active usage is around 80%.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.5: Understand CPU Metrics<\/h1>\n\n\n\n<p>Try these CPU queries one by one.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Total CPU Active Usage<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_active\n<\/code><\/pre>\n\n\n\n<p>Meaning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Overall active CPU usage across the server.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">CPU Idle Percentage<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_idle\n<\/code><\/pre>\n\n\n\n<p>Meaning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Percentage of time CPU is idle.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">CPU User Usage<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_user\n<\/code><\/pre>\n\n\n\n<p>Meaning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU used by user-space processes.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">CPU System Usage<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_system\n<\/code><\/pre>\n\n\n\n<p>Meaning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU used by kernel\/system processes.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">CPU I\/O Wait<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_iowait\n<\/code><\/pre>\n\n\n\n<p>Meaning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU waiting for disk I\/O operations.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.6: Compare CPU Active and CPU Idle<\/h1>\n\n\n\n<p>In Explore, add two queries.<\/p>\n\n\n\n<p>Query A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_active\n<\/code><\/pre>\n\n\n\n<p>Query B:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_idle\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Two lines appear in the graph.\n<\/code><\/pre>\n\n\n\n<p>Observation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>When usage_active increases, usage_idle normally decreases.\n<\/code><\/pre>\n\n\n\n<p>Teaching point:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU active and CPU idle are opposite indicators.\nHigh active CPU means the server is busy.\nHigh idle CPU means the server has spare capacity.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.7: Generate CPU Load for Testing<\/h1>\n\n\n\n<p>On the Linux server, install stress:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt update\napt install -y stress\n<\/code><\/pre>\n\n\n\n<p>Generate CPU load for 2 minutes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>stress --cpu 2 --timeout 120\n<\/code><\/pre>\n\n\n\n<p>Now return to Grafana Explore.<\/p>\n\n\n\n<p>Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_active\n<\/code><\/pre>\n\n\n\n<p>Set time range:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Last 5 minutes\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU usage should increase during the stress test.\n<\/code><\/pre>\n\n\n\n<p>This confirms the full monitoring chain is working:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Linux CPU activity \u2192 Telegraf \u2192 Graphite \u2192 Grafana Explore\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.8: Explore Memory Metrics<\/h1>\n\n\n\n<p>Now query memory usage.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Memory Used Percentage<\/h2>\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>Graph shows percentage of memory used.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Memory Available<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.mem.available\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Graph shows available memory in bytes.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Memory Used<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.mem.used\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Graph shows used memory in bytes.\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Memory Free<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.mem.free\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Graph shows free memory in bytes.\n<\/code><\/pre>\n\n\n\n<p>Teaching point:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>used_percent is easier for dashboards and alerts.\nused, available, and free are raw byte values.\n<\/code><\/pre>\n\n\n\n<p>For student learning, use this as primary memory metric:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.mem.used_percent\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.9: Explore System Load Metrics<\/h1>\n\n\n\n<p>Linux load average shows how many processes are waiting or running.<\/p>\n\n\n\n<p>Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.system.load1\n<\/code><\/pre>\n\n\n\n<p>Other useful queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.system.load5\ntelegraf.linux-demo.system.load15\n<\/code><\/pre>\n\n\n\n<p>Meaning:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Metric<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td><code>load1<\/code><\/td><td>1-minute load average<\/td><\/tr><tr><td><code>load5<\/code><\/td><td>5-minute load average<\/td><\/tr><tr><td><code>load15<\/code><\/td><td>15-minute load average<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Teaching explanation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Load average helps identify whether the system is under sustained pressure.\nA short spike in load1 may be normal.\nIf load1, load5, and load15 are all high, the system may be consistently overloaded.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.10: Compare Load Average Metrics<\/h1>\n\n\n\n<p>Add three queries in Explore.<\/p>\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>Query B:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.system.load5\n<\/code><\/pre>\n\n\n\n<p>Query C:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.system.load15\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Three lines appear in the same graph.\n<\/code><\/pre>\n\n\n\n<p>Interpretation:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Pattern<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td><code>load1<\/code> high, <code>load5\/load15<\/code> low<\/td><td>Recent spike<\/td><\/tr><tr><td>All three high<\/td><td>Sustained load<\/td><\/tr><tr><td><code>load15<\/code> high, <code>load1<\/code> low<\/td><td>Load was high earlier but is reducing<\/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\">Step 1.11: Explore Disk Metrics<\/h1>\n\n\n\n<p>Use disk used percentage:<\/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>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>One or more disk mount series appear.\n<\/code><\/pre>\n\n\n\n<p>The <code>*<\/code> wildcard matches available disk paths or devices.<\/p>\n\n\n\n<p>You can also try:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.disk.*.free\ntelegraf.linux-demo.disk.*.used\ntelegraf.linux-demo.disk.*.total\n<\/code><\/pre>\n\n\n\n<p>Teaching point:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Disk percentage is better than raw bytes for quick operational monitoring.\n<\/code><\/pre>\n\n\n\n<p>Recommended dashboard metric later:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.disk.*.used_percent\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.12: Explore Network Metrics<\/h1>\n\n\n\n<p>Use network received bytes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.net.*.bytes_recv\n<\/code><\/pre>\n\n\n\n<p>Use network sent bytes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.net.*.bytes_sent\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Network interfaces appear as separate series.\n<\/code><\/pre>\n\n\n\n<p>Common interfaces may include:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>eth0\nlo\nens5\ndocker0\n<\/code><\/pre>\n\n\n\n<p>Teaching point:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>lo is loopback traffic.\neth0, ens5, or similar is usually the actual network interface.\ndocker0 may appear if Docker networking exists.\n<\/code><\/pre>\n\n\n\n<p>For useful server network monitoring, focus on real interfaces, not loopback.<\/p>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.net.eth0.bytes_recv\n<\/code><\/pre>\n\n\n\n<p>or on AWS EC2, sometimes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.net.ens5.bytes_recv\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.13: Explore Process Metrics<\/h1>\n\n\n\n<p>Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.processes.total\n<\/code><\/pre>\n\n\n\n<p>Other process metrics:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.processes.running\ntelegraf.linux-demo.processes.sleeping\ntelegraf.linux-demo.processes.blocked\ntelegraf.linux-demo.processes.zombies\n<\/code><\/pre>\n\n\n\n<p>Teaching point:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Process metrics help detect process growth, stuck processes, and zombie processes.\n<\/code><\/pre>\n\n\n\n<p>Good operational metric:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.processes.zombies\n<\/code><\/pre>\n\n\n\n<p>Expected normal value:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.14: Use Wildcards in Graphite Queries<\/h1>\n\n\n\n<p>Graphite supports wildcard-style metric selection.<\/p>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.*\n<\/code><\/pre>\n\n\n\n<p>This returns multiple CPU fields, such as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>usage_active\nusage_idle\nusage_user\nusage_system\nusage_iowait\n<\/code><\/pre>\n\n\n\n<p>Another example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.system.*\n<\/code><\/pre>\n\n\n\n<p>This returns system metrics such as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>load1\nload5\nload15\nn_users\nuptime\n<\/code><\/pre>\n\n\n\n<p>Another example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.mem.*\n<\/code><\/pre>\n\n\n\n<p>This returns memory metrics.<\/p>\n\n\n\n<p>Teaching point:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Wildcards are useful for discovery, but too many series can make graphs noisy.\nFor dashboards and alerts, use specific metrics.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.15: Use Graphite Functions in Explore<\/h1>\n\n\n\n<p>Graphite functions transform, combine, and calculate values from time-series data. Graphite\u2019s official documentation describes functions as tools to transform, combine, and perform computations on series data. (<a href=\"https:\/\/graphite.readthedocs.io\/en\/latest\/functions.html?utm_source=chatgpt.com\">Graphite Documentation<\/a>)<\/p>\n\n\n\n<p>Grafana\u2019s Graphite query editor supports adding functions directly in the query editor. (<a href=\"https:\/\/grafana.com\/docs\/grafana\/latest\/datasources\/graphite\/query-editor\/?utm_source=chatgpt.com\">Grafana Labs<\/a>)<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Function 1: alias()<\/h2>\n\n\n\n<p>Use <code>alias()<\/code> to rename a metric in the graph legend.<\/p>\n\n\n\n<p>Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.cpu.cpu-total.usage_active, 'CPU Active %')\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Graph legend shows CPU Active % instead of the long metric path.\n<\/code><\/pre>\n\n\n\n<p>Why useful:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Long Graphite metric names are hard to read.\nalias() makes Explore and dashboards easier to understand.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Function 2: movingAverage()<\/h2>\n\n\n\n<p>Use <code>movingAverage()<\/code> to smooth noisy data.<\/p>\n\n\n\n<p>Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>movingAverage(telegraf.linux-demo.cpu.cpu-total.usage_active, 5)\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU graph becomes smoother.\n<\/code><\/pre>\n\n\n\n<p>Teaching point:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>movingAverage is useful when raw metrics are too spiky.\nBut for alerts, be careful because smoothing can hide short incidents.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Function 3: summarize()<\/h2>\n\n\n\n<p>Use <code>summarize()<\/code> to aggregate data into larger time buckets.<\/p>\n\n\n\n<p>Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>summarize(telegraf.linux-demo.cpu.cpu-total.usage_active, '1min', 'avg')\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU usage is shown as 1-minute average values.\n<\/code><\/pre>\n\n\n\n<p>Teaching point:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>summarize helps convert high-resolution data into cleaner trend data.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Function 4: highestCurrent()<\/h2>\n\n\n\n<p>Use <code>highestCurrent()<\/code> to find the highest current value among multiple series.<\/p>\n\n\n\n<p>Example for disk:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>highestCurrent(telegraf.linux-demo.disk.*.used_percent, 5)\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Grafana shows the top 5 disk mount points by current used percentage.\n<\/code><\/pre>\n\n\n\n<p>Teaching point:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>This is helpful when many disks or mount points exist.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Function 5: averageSeries()<\/h2>\n\n\n\n<p>Use <code>averageSeries()<\/code> to average multiple matching series.<\/p>\n\n\n\n<p>Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>averageSeries(telegraf.linux-demo.cpu.cpu*.usage_active)\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Average CPU active usage across CPU cores.\n<\/code><\/pre>\n\n\n\n<p>Teaching point:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>averageSeries is useful when there are multiple CPU cores or multiple similar series.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.16: Use Query Builder vs Raw Query<\/h1>\n\n\n\n<p>Grafana Graphite datasource usually provides two ways to build queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. Visual\/query builder style\n2. Raw Graphite query text\n<\/code><\/pre>\n\n\n\n<p>For students, teach both.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Query Builder Approach<\/h2>\n\n\n\n<p>Use the metric browser to select:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf\n \u2192 linux-demo\n   \u2192 cpu\n     \u2192 cpu-total\n       \u2192 usage_active\n<\/code><\/pre>\n\n\n\n<p>Then run the query.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Raw Query Approach<\/h2>\n\n\n\n<p>Directly type:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_active\n<\/code><\/pre>\n\n\n\n<p>Teaching recommendation:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Beginners should start with metric browsing.\nIntermediate users should learn raw Graphite query syntax.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.17: Explore Multiple Metrics Together<\/h1>\n\n\n\n<p>Now create an investigation view.<\/p>\n\n\n\n<p>Add these queries:<\/p>\n\n\n\n<p>Query A:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>alias(telegraf.linux-demo.cpu.cpu-total.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.mem.used_percent, 'Memory Used %')\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.system.load1, 'Load 1m')\n<\/code><\/pre>\n\n\n\n<p>Expected result:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU, memory, and load appear together.\n<\/code><\/pre>\n\n\n\n<p>Important warning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CPU and memory are percentages.\nLoad average is not a percentage.\nSo this combined graph is useful for quick investigation, but not always perfect for dashboard presentation.\n<\/code><\/pre>\n\n\n\n<p>Teaching point:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Explore is good for correlation.\nDashboards should be cleaner and better structured.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.18: Use Split View in Explore<\/h1>\n\n\n\n<p>Grafana Explore supports side-by-side investigation.<\/p>\n\n\n\n<p>In Explore, use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Split\n<\/code><\/pre>\n\n\n\n<p>or:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Split view\n<\/code><\/pre>\n\n\n\n<p>depending on the UI.<\/p>\n\n\n\n<p>Left side:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_active\n<\/code><\/pre>\n\n\n\n<p>Right side:<\/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>CPU and memory can be investigated side by side.\n<\/code><\/pre>\n\n\n\n<p>Use case:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>When CPU is high, check whether memory also increased.\nWhen load is high, check whether disk or network also changed.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.19: Inspect Query Results<\/h1>\n\n\n\n<p>In Explore, after running a query, use the query result\/inspect options if available.<\/p>\n\n\n\n<p>Look for:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Data\nStats\nQuery\nJSON\n<\/code><\/pre>\n\n\n\n<p>The exact UI may vary slightly depending on Grafana 13.x build and permissions.<\/p>\n\n\n\n<p>Students should understand:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Graph view shows trend.\nData\/table view shows actual datapoints.\nQuery inspector helps troubleshoot query and response.\n<\/code><\/pre>\n\n\n\n<p>This is especially useful when:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Graph is empty\nMetric path is wrong\nDatasource is not responding\nTime range is incorrect\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.20: Recommended Metrics for Students to Explore<\/h1>\n\n\n\n<p>Use this table as the main lab reference.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Area<\/th><th>Graphite Query<\/th><th>Meaning<\/th><\/tr><\/thead><tbody><tr><td>CPU<\/td><td><code>telegraf.linux-demo.cpu.cpu-total.usage_active<\/code><\/td><td>Active CPU usage %<\/td><\/tr><tr><td>CPU<\/td><td><code>telegraf.linux-demo.cpu.cpu-total.usage_idle<\/code><\/td><td>Idle CPU %<\/td><\/tr><tr><td>CPU<\/td><td><code>telegraf.linux-demo.cpu.cpu-total.usage_iowait<\/code><\/td><td>CPU waiting on disk I\/O<\/td><\/tr><tr><td>Memory<\/td><td><code>telegraf.linux-demo.mem.used_percent<\/code><\/td><td>Memory used %<\/td><\/tr><tr><td>Memory<\/td><td><code>telegraf.linux-demo.mem.available<\/code><\/td><td>Available memory bytes<\/td><\/tr><tr><td>Load<\/td><td><code>telegraf.linux-demo.system.load1<\/code><\/td><td>1-minute load average<\/td><\/tr><tr><td>Load<\/td><td><code>telegraf.linux-demo.system.load5<\/code><\/td><td>5-minute load average<\/td><\/tr><tr><td>Load<\/td><td><code>telegraf.linux-demo.system.load15<\/code><\/td><td>15-minute load average<\/td><\/tr><tr><td>Disk<\/td><td><code>telegraf.linux-demo.disk.*.used_percent<\/code><\/td><td>Disk usage %<\/td><\/tr><tr><td>Network<\/td><td><code>telegraf.linux-demo.net.*.bytes_recv<\/code><\/td><td>Network received bytes<\/td><\/tr><tr><td>Network<\/td><td><code>telegraf.linux-demo.net.*.bytes_sent<\/code><\/td><td>Network sent bytes<\/td><\/tr><tr><td>Processes<\/td><td><code>telegraf.linux-demo.processes.total<\/code><\/td><td>Total process count<\/td><\/tr><tr><td>Processes<\/td><td><code>telegraf.linux-demo.processes.zombies<\/code><\/td><td>Zombie processes<\/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\">Step 1.21: Recommended Explore Exercises<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Exercise 1: Find CPU Usage<\/h2>\n\n\n\n<p>Task:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Find current CPU active usage.\n<\/code><\/pre>\n\n\n\n<p>Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_active\n<\/code><\/pre>\n\n\n\n<p>Expected learning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Students understand CPU percentage metric.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Exercise 2: Compare CPU Active and Idle<\/h2>\n\n\n\n<p>Queries:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_active\ntelegraf.linux-demo.cpu.cpu-total.usage_idle\n<\/code><\/pre>\n\n\n\n<p>Expected learning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Students understand relationship between CPU busy and idle time.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Exercise 3: Find Memory Usage<\/h2>\n\n\n\n<p>Query:<\/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 learning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Students understand memory utilization percentage.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Exercise 4: Find System Load Trend<\/h2>\n\n\n\n<p>Queries:<\/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>Expected learning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Students understand short-term vs long-term load.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Exercise 5: Find Disk Usage<\/h2>\n\n\n\n<p>Query:<\/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>Expected learning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Students understand wildcard-based disk exploration.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Exercise 6: Find Network Traffic<\/h2>\n\n\n\n<p>Queries:<\/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>Expected learning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Students understand network receive\/send metrics.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Exercise 7: Use alias()<\/h2>\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>Expected learning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Students understand how to make legends readable.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Exercise 8: Use movingAverage()<\/h2>\n\n\n\n<p>Query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>movingAverage(telegraf.linux-demo.cpu.cpu-total.usage_active, 5)\n<\/code><\/pre>\n\n\n\n<p>Expected learning:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Students understand smoothing.\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.22: Student Troubleshooting Guide<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Problem 1: No data in Explore<\/h2>\n\n\n\n<p>Check time range first.<\/p>\n\n\n\n<p>Use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Last 15 minutes\n<\/code><\/pre>\n\n\n\n<p>Then check Graphite files:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it graphite find \/opt\/graphite\/storage\/whisper\/telegraf -type f | head\n<\/code><\/pre>\n\n\n\n<p>If no files exist, Telegraf is not sending metrics.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Problem 2: Query path not found<\/h2>\n\n\n\n<p>Try wildcard discovery:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.*\n<\/code><\/pre>\n\n\n\n<p>Then:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.*\n<\/code><\/pre>\n\n\n\n<p>Then:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.*\n<\/code><\/pre>\n\n\n\n<p>This helps discover the actual metric path.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Problem 3: Wrong hostname<\/h2>\n\n\n\n<p>Your hostname is configured as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>linux-demo\n<\/code><\/pre>\n\n\n\n<p>But if students changed it, metric path may be different.<\/p>\n\n\n\n<p>Check actual metric directories:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker exec -it graphite find \/opt\/graphite\/storage\/whisper\/telegraf -maxdepth 2 -type d\n<\/code><\/pre>\n\n\n\n<p>Example output:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/opt\/graphite\/storage\/whisper\/telegraf\/linux-demo\n<\/code><\/pre>\n\n\n\n<p>If hostname is different, use that name in Grafana queries.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Problem 4: Grafana datasource test works, but Explore has no data<\/h2>\n\n\n\n<p>Check Graphite directly:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl \"http:\/\/YOUR_GRAPHITE_SERVER:8080\/render?target=telegraf.linux-demo.mem.used_percent&amp;from=-10min&amp;format=json\"\n<\/code><\/pre>\n\n\n\n<p>If Graphite returns datapoints, Grafana query path or time range is wrong.<\/p>\n\n\n\n<p>If Graphite returns empty datapoints, the metric may not exist or no data is available for the selected time.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Problem 5: Too many lines in graph<\/h2>\n\n\n\n<p>This happens with wildcard queries like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.*\n<\/code><\/pre>\n\n\n\n<p>Fix by using a more specific query:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>telegraf.linux-demo.cpu.cpu-total.usage_active\n<\/code><\/pre>\n\n\n\n<p>or use Graphite functions like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>highestCurrent(telegraf.linux-demo.disk.*.used_percent, 5)\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1.23: Lab Completion Checklist<\/h1>\n\n\n\n<p>Students should complete the following before moving to dashboard creation:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Task<\/th><th>Completed<\/th><\/tr><\/thead><tbody><tr><td>Opened Grafana Explore<\/td><td>\u2610<\/td><\/tr><tr><td>Selected Graphite datasource<\/td><td>\u2610<\/td><\/tr><tr><td>Queried CPU active usage<\/td><td>\u2610<\/td><\/tr><tr><td>Queried memory used percentage<\/td><td>\u2610<\/td><\/tr><tr><td>Queried load average<\/td><td>\u2610<\/td><\/tr><tr><td>Queried disk usage using wildcard<\/td><td>\u2610<\/td><\/tr><tr><td>Queried network receive\/send metrics<\/td><td>\u2610<\/td><\/tr><tr><td>Used <code>alias()<\/code> function<\/td><td>\u2610<\/td><\/tr><tr><td>Used <code>movingAverage()<\/code> function<\/td><td>\u2610<\/td><\/tr><tr><td>Used multiple queries together<\/td><td>\u2610<\/td><\/tr><tr><td>Understood metric path structure<\/td><td>\u2610<\/td><\/tr><tr><td>Verified data changes during stress test<\/td><td>\u2610<\/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\">Step 1.24: Final Student Summary<\/h1>\n\n\n\n<p>At the end of this lab, students should understand this clearly:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Grafana Explore is used for ad-hoc metric investigation.\nGraphite stores metrics in dot-separated paths.\nTelegraf is collecting Linux metrics and sending them to Graphite.\nGrafana reads Graphite metrics using the Graphite datasource.\nCPU, memory, disk, network, load, and process metrics can be explored directly.\nGraphite functions such as alias(), movingAverage(), summarize(), and highestCurrent() help make queries more useful.\nExplore is the best place to test queries before creating dashboards and alerts.\n<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Below is Step 1 only: a deep, student-ready lab guide for Exploring Graphite metrics in Grafana 13.x using Explore. This [&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-2232","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 - Exploring - 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-exploring\/\" \/>\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 - Exploring - SRE School\" \/>\n<meta property=\"og:description\" content=\"Below is Step 1 only: a deep, student-ready lab guide for Exploring Graphite metrics in Grafana 13.x using Explore. This [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-exploring\/\" \/>\n<meta property=\"og:site_name\" content=\"SRE School\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-24T08:12:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-24T08:18:20+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=\"7 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-exploring\/\",\"url\":\"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-exploring\/\",\"name\":\"Grafana Lab with Graphite Datasource metrics - Exploring - SRE School\",\"isPartOf\":{\"@id\":\"https:\/\/sreschool.com\/blog\/#website\"},\"datePublished\":\"2026-04-24T08:12:07+00:00\",\"dateModified\":\"2026-04-24T08:18:20+00:00\",\"author\":{\"@id\":\"https:\/\/sreschool.com\/blog\/#\/schema\/person\/0ffe446f77bb2589992dbe3a7f417201\"},\"breadcrumb\":{\"@id\":\"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-exploring\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-exploring\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-exploring\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/sreschool.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Grafana Lab with Graphite Datasource metrics &#8211; Exploring\"}]},{\"@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 - Exploring - 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-exploring\/","og_locale":"en_US","og_type":"article","og_title":"Grafana Lab with Graphite Datasource metrics - Exploring - SRE School","og_description":"Below is Step 1 only: a deep, student-ready lab guide for Exploring Graphite metrics in Grafana 13.x using Explore. This [&hellip;]","og_url":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-exploring\/","og_site_name":"SRE School","article_published_time":"2026-04-24T08:12:07+00:00","article_modified_time":"2026-04-24T08:18:20+00:00","author":"Rajesh Kumar","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Rajesh Kumar","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-exploring\/","url":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-exploring\/","name":"Grafana Lab with Graphite Datasource metrics - Exploring - SRE School","isPartOf":{"@id":"https:\/\/sreschool.com\/blog\/#website"},"datePublished":"2026-04-24T08:12:07+00:00","dateModified":"2026-04-24T08:18:20+00:00","author":{"@id":"https:\/\/sreschool.com\/blog\/#\/schema\/person\/0ffe446f77bb2589992dbe3a7f417201"},"breadcrumb":{"@id":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-exploring\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-exploring\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/sreschool.com\/blog\/grafana-lab-with-graphite-datasource-metrics-exploring\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sreschool.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Grafana Lab with Graphite Datasource metrics &#8211; Exploring"}]},{"@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\/2232","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=2232"}],"version-history":[{"count":2,"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/posts\/2232\/revisions"}],"predecessor-version":[{"id":2235,"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/posts\/2232\/revisions\/2235"}],"wp:attachment":[{"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/media?parent=2232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/categories?post=2232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sreschool.com\/blog\/wp-json\/wp\/v2\/tags?post=2232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}