Grafana 13.x + Graphite + Telegraf Linux Monitoring Lab Guide
Important validation from the real Graphite storage
The real collected metrics in this lab use this structure:
telegraf.linux-demo.<measurement>.<field>
Therefore, use these queries:
telegraf.linux-demo.cpu.usage_active
telegraf.linux-demo.cpu.usage_system
telegraf.linux-demo.mem.used_percent
telegraf.linux-demo.disk.used_percent
telegraf.linux-demo.net.bytes_recv
telegraf.linux-demo.system.load1
telegraf.linux-demo.processes.total
telegraf.linux-demo.processes.zombies
Do not use these older assumed tag-based paths in this lab:
telegraf.linux-demo.cpu.cpu-total.usage_active
telegraf.linux-demo.disk.*.used_percent
telegraf.linux-demo.net.eth0.bytes_recv
telegraf.linux-demo.net.ens5.bytes_recv
Reason: the current Telegraf Graphite output template is storing metrics without CPU, disk mountpoint, and network interface tag nodes.
Step 1: Explore the Metrics Using Grafana Explore
Objective
Students will use Grafana Explore to discover and query Graphite metrics collected from Linux by Telegraf.
1.1 Open Grafana Explore
Go to:
Explore
Select the datasource:
Graphite
Set time range:
Last 15 minutes
Set refresh:
10s
1.2 Validate the real metric paths before querying
On the Graphite server, run:
docker exec -it graphite find /opt/graphite/storage/whisper/telegraf -type f | sed 's#/opt/graphite/storage/whisper/##; s#/#.#g; s#.wsp$##' | sort
If output still shows .wsp, remove .wsp mentally when writing Grafana queries.
Example file:
telegraf.linux-demo.cpu.usage_active.wsp
Grafana query:
telegraf.linux-demo.cpu.usage_active
1.3 Explore CPU metrics
Run:
telegraf.linux-demo.cpu.usage_active
Expected result:
CPU active usage graph appears.
Other CPU queries:
telegraf.linux-demo.cpu.usage_idle
telegraf.linux-demo.cpu.usage_user
telegraf.linux-demo.cpu.usage_system
telegraf.linux-demo.cpu.usage_iowait
telegraf.linux-demo.cpu.usage_steal
Recommended aliases:
alias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %')
alias(telegraf.linux-demo.cpu.usage_idle, 'CPU Idle %')
alias(telegraf.linux-demo.cpu.usage_user, 'CPU User %')
alias(telegraf.linux-demo.cpu.usage_system, 'CPU System %')
alias(telegraf.linux-demo.cpu.usage_iowait, 'CPU I/O Wait %')
Validation:
stress --cpu 2 --timeout 120
Expected result:
CPU Active % should increase.
CPU Idle % should decrease.
Load average may increase.
1.4 Explore memory metrics
Run:
telegraf.linux-demo.mem.used_percent
Expected result:
Memory used percentage graph appears.
Other memory queries:
telegraf.linux-demo.mem.used
telegraf.linux-demo.mem.available
telegraf.linux-demo.mem.free
telegraf.linux-demo.mem.total
telegraf.linux-demo.mem.available_percent
Recommended query:
alias(telegraf.linux-demo.mem.used_percent, 'Memory Used %')
Validation:
stress --vm 1 --vm-bytes 128M --timeout 120
Expected result:
Memory usage may increase depending on system size.
1.5 Explore disk metrics
Correct query for this lab:
telegraf.linux-demo.disk.used_percent
Recommended query:
alias(telegraf.linux-demo.disk.used_percent, 'Disk Used %')
Other disk queries:
telegraf.linux-demo.disk.used
telegraf.linux-demo.disk.free
telegraf.linux-demo.disk.total
telegraf.linux-demo.disk.inodes_used_percent
Important:
telegraf.linux-demo.disk.*.used_percent does not work in this lab because disk mountpoint is not stored as a separate Graphite path node.
Validation:
dd if=/dev/zero of=/tmp/graphite-test-file bs=10M count=20 oflag=direct
rm -f /tmp/graphite-test-file
Expected result:
Disk usage may briefly change. On large disks, the percentage change may be small.
1.6 Explore network metrics
Correct queries for this lab:
telegraf.linux-demo.net.bytes_recv
telegraf.linux-demo.net.bytes_sent
For dashboards, use derivatives because network bytes are counters:
alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_recv), 'Network RX bytes/sec')
alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_sent), 'Network TX bytes/sec')
Important:
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.
Validation:
curl -L https://speed.cloudflare.com/__down?bytes=10000000 -o /tmp/network-test.bin
rm -f /tmp/network-test.bin
Expected result:
Network RX bytes/sec should increase.
1.7 Explore load average
Run:
telegraf.linux-demo.system.load1
telegraf.linux-demo.system.load5
telegraf.linux-demo.system.load15
Recommended queries:
alias(telegraf.linux-demo.system.load1, 'Load 1m')
alias(telegraf.linux-demo.system.load5, 'Load 5m')
alias(telegraf.linux-demo.system.load15, 'Load 15m')
Validation:
stress --cpu 2 --timeout 120
Expected result:
Load 1m should increase first.
Load 5m and Load 15m change more slowly.
1.8 Explore process metrics
Run:
telegraf.linux-demo.processes.total
telegraf.linux-demo.processes.running
telegraf.linux-demo.processes.sleeping
telegraf.linux-demo.processes.zombies
Recommended queries:
alias(telegraf.linux-demo.processes.total, 'Total Processes')
alias(telegraf.linux-demo.processes.running, 'Running Processes')
alias(telegraf.linux-demo.processes.zombies, 'Zombie Processes')
Expected zombie process value:
0
1.9 Explore swap metrics
Run:
telegraf.linux-demo.swap.used_percent
Recommended query:
alias(telegraf.linux-demo.swap.used_percent, 'Swap Used %')
Step 1 final validated query table
| Area | Correct query |
|---|---|
| CPU Active | alias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %') |
| CPU Idle | alias(telegraf.linux-demo.cpu.usage_idle, 'CPU Idle %') |
| CPU User | alias(telegraf.linux-demo.cpu.usage_user, 'CPU User %') |
| CPU System | alias(telegraf.linux-demo.cpu.usage_system, 'CPU System %') |
| CPU I/O Wait | alias(telegraf.linux-demo.cpu.usage_iowait, 'CPU I/O Wait %') |
| Memory Used | alias(telegraf.linux-demo.mem.used_percent, 'Memory Used %') |
| Disk Used | alias(telegraf.linux-demo.disk.used_percent, 'Disk Used %') |
| Network RX | alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_recv), 'Network RX bytes/sec') |
| Network TX | alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_sent), 'Network TX bytes/sec') |
| Load 1m | alias(telegraf.linux-demo.system.load1, 'Load 1m') |
| Load 5m | alias(telegraf.linux-demo.system.load5, 'Load 5m') |
| Load 15m | alias(telegraf.linux-demo.system.load15, 'Load 15m') |
| Total Processes | alias(telegraf.linux-demo.processes.total, 'Total Processes') |
| Zombie Processes | alias(telegraf.linux-demo.processes.zombies, 'Zombie Processes') |
| Swap Used | alias(telegraf.linux-demo.swap.used_percent, 'Swap Used %') |
Step 2: Create a Linux Monitoring Dashboard
2.1 Create dashboard
Go to:
Dashboards → New → New dashboard → Add visualization
Select datasource:
Graphite
Save dashboard as:
Linux Monitoring - Graphite Telegraf
Set:
Time range: Last 15 minutes
Refresh: 10s
2.2 Panel 1: CPU Usage %
Visualization:
Time series
Query A:
alias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %')
Query B:
alias(telegraf.linux-demo.cpu.usage_system, 'CPU System %')
Query C:
alias(telegraf.linux-demo.cpu.usage_user, 'CPU User %')
Unit:
Percent (0-100)
Min/Max:
0 / 100
Thresholds:
70 warning
90 critical
Validation:
stress --cpu 2 --timeout 120
Expected:
CPU Active % increases.
2.3 Panel 2: Memory Used %
Visualization:
Time series
Query:
alias(telegraf.linux-demo.mem.used_percent, 'Memory Used %')
Unit:
Percent (0-100)
Min/Max:
0 / 100
Thresholds:
75 warning
90 critical
2.4 Panel 3: System Load Average
Visualization:
Time series
Queries:
alias(telegraf.linux-demo.system.load1, 'Load 1m')
alias(telegraf.linux-demo.system.load5, 'Load 5m')
alias(telegraf.linux-demo.system.load15, 'Load 15m')
Unit:
Short
Do not use percent for load.
2.5 Panel 4: Disk Usage %
Visualization:
Time series
Correct query:
alias(telegraf.linux-demo.disk.used_percent, 'Disk Used %')
Do not use:
aliasByNode(telegraf.linux-demo.disk.*.used_percent, 3)
Reason:
The current metric path has no mountpoint node.
Unit:
Percent (0-100)
Thresholds:
75 warning
90 critical
2.6 Panel 5: Network Traffic
Visualization:
Time series
Queries:
alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_recv), 'Network RX bytes/sec')
alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_sent), 'Network TX bytes/sec')
Unit:
Bytes/sec
Do not use:
telegraf.linux-demo.net.eth0.bytes_recv
telegraf.linux-demo.net.ens5.bytes_recv
Reason:
The current metric path has no interface node.
2.7 Panel 6: Process Count
Visualization:
Time series
Queries:
alias(telegraf.linux-demo.processes.total, 'Total Processes')
alias(telegraf.linux-demo.processes.running, 'Running Processes')
alias(telegraf.linux-demo.processes.sleeping, 'Sleeping Processes')
Unit:
Short
2.8 Panel 7: Zombie Processes
Visualization:
Stat
Query:
alias(telegraf.linux-demo.processes.zombies, 'Zombie Processes')
Unit:
Short
Thresholds:
0 good
1 critical
Expected:
0
2.9 Optional panels
Swap Used %
alias(telegraf.linux-demo.swap.used_percent, 'Swap Used %')
Unit:
Percent (0-100)
System Uptime
alias(telegraf.linux-demo.system.uptime, 'System Uptime')
Unit:
Seconds
Disk Inodes Used %
alias(telegraf.linux-demo.disk.inodes_used_percent, 'Disk Inodes Used %')
Unit:
Percent (0-100)
2.10 Final dashboard query table
| Panel | Visualization | Correct query |
|---|---|---|
| CPU Usage % | Time series | alias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %') |
| CPU Usage % | Time series | alias(telegraf.linux-demo.cpu.usage_system, 'CPU System %') |
| CPU Usage % | Time series | alias(telegraf.linux-demo.cpu.usage_user, 'CPU User %') |
| Memory Used % | Time series | alias(telegraf.linux-demo.mem.used_percent, 'Memory Used %') |
| System Load | Time series | alias(telegraf.linux-demo.system.load1, 'Load 1m') |
| System Load | Time series | alias(telegraf.linux-demo.system.load5, 'Load 5m') |
| System Load | Time series | alias(telegraf.linux-demo.system.load15, 'Load 15m') |
| Disk Used % | Time series | alias(telegraf.linux-demo.disk.used_percent, 'Disk Used %') |
| Network RX | Time series | alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_recv), 'Network RX bytes/sec') |
| Network TX | Time series | alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_sent), 'Network TX bytes/sec') |
| Process Count | Time series | alias(telegraf.linux-demo.processes.total, 'Total Processes') |
| Zombie Processes | Stat | alias(telegraf.linux-demo.processes.zombies, 'Zombie Processes') |
| Swap Used % | Time series | alias(telegraf.linux-demo.swap.used_percent, 'Swap Used %') |
| Uptime | Stat | alias(telegraf.linux-demo.system.uptime, 'System Uptime') |
Step 3: Create Alerts
Important alert rule model
Use this model for each Grafana alert rule:
A = Graphite query
B = Reduce expression
C = Threshold expression
Condition = C
3.1 High CPU Usage Alert
Rule name:
Linux - High CPU Usage
Query A:
telegraf.linux-demo.cpu.usage_active
Relative time range:
From: 5m
To: now
Expression B:
Reduce A using Mean
Expression C:
Threshold B is above 80
Evaluation:
Evaluate every: 1m
Pending period: 2m
Labels:
severity=warning
service=linux
host=linux-demo
metric=cpu
Validation:
stress --cpu 2 --timeout 180
For demo testing, temporarily reduce threshold to 20.
3.2 High Memory Usage Alert
Rule name:
Linux - High Memory Usage
Query A:
telegraf.linux-demo.mem.used_percent
Reduce:
Last
Threshold:
Above 85
Evaluation:
Evaluate every: 1m
Pending period: 3m
For demo testing, temporarily set threshold slightly below current memory usage.
3.3 High Disk Usage Alert
Rule name:
Linux - High Disk Usage
Correct query A:
telegraf.linux-demo.disk.used_percent
Do not use:
highestCurrent(telegraf.linux-demo.disk.*.used_percent, 1)
Reason:
The current Graphite path has only one disk used_percent series.
Reduce:
Last
Threshold:
Above 85
Evaluation:
Evaluate every: 1m
Pending period: 5m
Validation:
dd if=/dev/zero of=/tmp/disk-alert-test.img bs=100M count=5
rm -f /tmp/disk-alert-test.img
For a large disk, temporarily lower threshold near current usage.
3.4 High Load Average Alert
Rule name:
Linux - High Load Average
Query A:
telegraf.linux-demo.system.load1
Reduce:
Mean
Threshold:
Above 2
Evaluation:
Evaluate every: 1m
Pending period: 3m
Validation:
stress --cpu 2 --timeout 180
3.5 Zombie Processes Alert
Rule name:
Linux - Zombie Processes Detected
Query A:
telegraf.linux-demo.processes.zombies
Reduce:
Last
Threshold:
Above 0
Evaluation:
Evaluate every: 1m
Pending period: 1m
For demo testing only:
Temporarily set threshold above -1, then restore to above 0.
3.6 Alert summary table
| Alert | Correct query | Reduce | Threshold | Evaluate | Pending |
|---|---|---|---|---|---|
| High CPU | telegraf.linux-demo.cpu.usage_active | Mean | > 80 | 1m | 2m |
| High Memory | telegraf.linux-demo.mem.used_percent | Last | > 85 | 1m | 3m |
| High Disk | telegraf.linux-demo.disk.used_percent | Last | > 85 | 1m | 5m |
| High Load | telegraf.linux-demo.system.load1 | Mean | > 2 | 1m | 3m |
| Zombie Processes | telegraf.linux-demo.processes.zombies | Last | > 0 | 1m | 1m |
Final correction summary
Replace all old assumed metric paths:
telegraf.linux-demo.cpu.cpu-total.usage_active
telegraf.linux-demo.disk.*.used_percent
telegraf.linux-demo.net.eth0.bytes_recv
telegraf.linux-demo.net.ens5.bytes_recv
With the real collected metric paths:
telegraf.linux-demo.cpu.usage_active
telegraf.linux-demo.disk.used_percent
telegraf.linux-demo.net.bytes_recv
telegraf.linux-demo.net.bytes_sent
The correct lab is now based on the actual Graphite data collected in your server.
JSON – file name graphite.json
{
"__inputs": [
{
"name": "DS_GRAPHITE",
"label": "Graphite",
"description": "Graphite datasource",
"type": "datasource",
"pluginId": "graphite",
"pluginName": "Graphite"
}
],
"__requires": [
{
"type": "grafana",
"id": "grafana",
"name": "Grafana",
"version": "13.0.0"
},
{
"type": "datasource",
"id": "graphite",
"name": "Graphite",
"version": "1.0.0"
},
{
"type": "panel",
"id": "timeseries",
"name": "Time series",
"version": ""
},
{
"type": "panel",
"id": "stat",
"name": "Stat",
"version": ""
}
],
"uid": "linux-graphite-telegraf-actual",
"title": "Linux Monitoring - Graphite Telegraf Actual Metrics",
"tags": [
"graphite",
"telegraf",
"linux",
"grafana-13"
],
"timezone": "browser",
"schemaVersion": 42,
"version": 1,
"refresh": "10s",
"time": {
"from": "now-15m",
"to": "now"
},
"templating": {
"list": []
},
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"panels": [
{
"id": 1,
"type": "timeseries",
"title": "CPU Usage %",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
},
"gridPos": {
"x": 0,
"y": 0,
"w": 12,
"h": 8
},
"targets": [
{
"target": "alias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %')",
"refId": "A",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
},
{
"target": "alias(telegraf.linux-demo.cpu.usage_system, 'CPU System %')",
"refId": "B",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
},
{
"target": "alias(telegraf.linux-demo.cpu.usage_user, 'CPU User %')",
"refId": "C",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
}
],
"fieldConfig": {
"defaults": {
"unit": "percent",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 70
},
{
"color": "red",
"value": 90
}
]
},
"min": 0,
"max": 100
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
}
},
{
"id": 2,
"type": "timeseries",
"title": "Memory Used %",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
},
"gridPos": {
"x": 12,
"y": 0,
"w": 12,
"h": 8
},
"targets": [
{
"target": "alias(telegraf.linux-demo.mem.used_percent, 'Memory Used %')",
"refId": "A",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
}
],
"fieldConfig": {
"defaults": {
"unit": "percent",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 75
},
{
"color": "red",
"value": 90
}
]
},
"min": 0,
"max": 100
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
}
},
{
"id": 3,
"type": "timeseries",
"title": "System Load Average",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
},
"gridPos": {
"x": 0,
"y": 8,
"w": 12,
"h": 8
},
"targets": [
{
"target": "alias(telegraf.linux-demo.system.load1, 'Load 1m')",
"refId": "A",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
},
{
"target": "alias(telegraf.linux-demo.system.load5, 'Load 5m')",
"refId": "B",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
},
{
"target": "alias(telegraf.linux-demo.system.load15, 'Load 15m')",
"refId": "C",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
}
},
{
"id": 4,
"type": "timeseries",
"title": "Disk Usage %",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
},
"gridPos": {
"x": 12,
"y": 8,
"w": 12,
"h": 8
},
"targets": [
{
"target": "alias(telegraf.linux-demo.disk.used_percent, 'Disk Used %')",
"refId": "A",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
},
{
"target": "alias(telegraf.linux-demo.disk.inodes_used_percent, 'Inodes Used %')",
"refId": "B",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
}
],
"fieldConfig": {
"defaults": {
"unit": "percent",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 75
},
{
"color": "red",
"value": 90
}
]
},
"min": 0,
"max": 100
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
}
},
{
"id": 5,
"type": "timeseries",
"title": "Network Traffic",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
},
"gridPos": {
"x": 0,
"y": 16,
"w": 12,
"h": 8
},
"targets": [
{
"target": "alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_recv), 'Network RX bytes/sec')",
"refId": "A",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
},
{
"target": "alias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_sent), 'Network TX bytes/sec')",
"refId": "B",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
}
],
"fieldConfig": {
"defaults": {
"unit": "Bps",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
}
},
{
"id": 6,
"type": "timeseries",
"title": "Process Count",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
},
"gridPos": {
"x": 12,
"y": 16,
"w": 12,
"h": 8
},
"targets": [
{
"target": "alias(telegraf.linux-demo.processes.total, 'Total Processes')",
"refId": "A",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
},
{
"target": "alias(telegraf.linux-demo.processes.running, 'Running Processes')",
"refId": "B",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
},
{
"target": "alias(telegraf.linux-demo.processes.sleeping, 'Sleeping Processes')",
"refId": "C",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"min": 0
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
}
},
{
"id": 7,
"type": "stat",
"title": "Zombie Processes",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
},
"gridPos": {
"x": 0,
"y": 24,
"w": 6,
"h": 5
},
"targets": [
{
"target": "alias(telegraf.linux-demo.processes.zombies, 'Zombie Processes')",
"refId": "A",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
}
],
"fieldConfig": {
"defaults": {
"unit": "short",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 1
}
]
},
"min": 0
},
"overrides": []
},
"options": {
"reduceOptions": {
"values": false,
"calcs": [
"lastNotNull"
],
"fields": ""
},
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto"
}
},
{
"id": 8,
"type": "stat",
"title": "Swap Used %",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
},
"gridPos": {
"x": 6,
"y": 24,
"w": 6,
"h": 5
},
"targets": [
{
"target": "alias(telegraf.linux-demo.swap.used_percent, 'Swap Used %')",
"refId": "A",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
}
],
"fieldConfig": {
"defaults": {
"unit": "percent",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "orange",
"value": 50
},
{
"color": "red",
"value": 80
}
]
},
"min": 0,
"max": 100
},
"overrides": []
},
"options": {
"reduceOptions": {
"values": false,
"calcs": [
"lastNotNull"
],
"fields": ""
},
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto"
}
},
{
"id": 9,
"type": "stat",
"title": "System Uptime",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
},
"gridPos": {
"x": 12,
"y": 24,
"w": 6,
"h": 5
},
"targets": [
{
"target": "alias(telegraf.linux-demo.system.uptime, 'System Uptime')",
"refId": "A",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
}
],
"fieldConfig": {
"defaults": {
"unit": "s",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
}
},
"overrides": []
},
"options": {
"reduceOptions": {
"values": false,
"calcs": [
"lastNotNull"
],
"fields": ""
},
"orientation": "auto",
"textMode": "auto",
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto"
}
},
{
"id": 10,
"type": "timeseries",
"title": "CPU Idle vs Active",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
},
"gridPos": {
"x": 18,
"y": 24,
"w": 6,
"h": 5
},
"targets": [
{
"target": "alias(telegraf.linux-demo.cpu.usage_idle, 'CPU Idle %')",
"refId": "A",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
},
{
"target": "alias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %')",
"refId": "B",
"datasource": {
"type": "graphite",
"uid": "${DS_GRAPHITE}"
}
}
],
"fieldConfig": {
"defaults": {
"unit": "percent",
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
}
]
},
"min": 0,
"max": 100
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
}
}
]
}