Grafana Lab with Graphite Datasource metrics – Dashboard

Uncategorized

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

AreaCorrect query
CPU Activealias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %')
CPU Idlealias(telegraf.linux-demo.cpu.usage_idle, 'CPU Idle %')
CPU Useralias(telegraf.linux-demo.cpu.usage_user, 'CPU User %')
CPU Systemalias(telegraf.linux-demo.cpu.usage_system, 'CPU System %')
CPU I/O Waitalias(telegraf.linux-demo.cpu.usage_iowait, 'CPU I/O Wait %')
Memory Usedalias(telegraf.linux-demo.mem.used_percent, 'Memory Used %')
Disk Usedalias(telegraf.linux-demo.disk.used_percent, 'Disk Used %')
Network RXalias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_recv), 'Network RX bytes/sec')
Network TXalias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_sent), 'Network TX bytes/sec')
Load 1malias(telegraf.linux-demo.system.load1, 'Load 1m')
Load 5malias(telegraf.linux-demo.system.load5, 'Load 5m')
Load 15malias(telegraf.linux-demo.system.load15, 'Load 15m')
Total Processesalias(telegraf.linux-demo.processes.total, 'Total Processes')
Zombie Processesalias(telegraf.linux-demo.processes.zombies, 'Zombie Processes')
Swap Usedalias(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

PanelVisualizationCorrect query
CPU Usage %Time seriesalias(telegraf.linux-demo.cpu.usage_active, 'CPU Active %')
CPU Usage %Time seriesalias(telegraf.linux-demo.cpu.usage_system, 'CPU System %')
CPU Usage %Time seriesalias(telegraf.linux-demo.cpu.usage_user, 'CPU User %')
Memory Used %Time seriesalias(telegraf.linux-demo.mem.used_percent, 'Memory Used %')
System LoadTime seriesalias(telegraf.linux-demo.system.load1, 'Load 1m')
System LoadTime seriesalias(telegraf.linux-demo.system.load5, 'Load 5m')
System LoadTime seriesalias(telegraf.linux-demo.system.load15, 'Load 15m')
Disk Used %Time seriesalias(telegraf.linux-demo.disk.used_percent, 'Disk Used %')
Network RXTime seriesalias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_recv), 'Network RX bytes/sec')
Network TXTime seriesalias(nonNegativeDerivative(telegraf.linux-demo.net.bytes_sent), 'Network TX bytes/sec')
Process CountTime seriesalias(telegraf.linux-demo.processes.total, 'Total Processes')
Zombie ProcessesStatalias(telegraf.linux-demo.processes.zombies, 'Zombie Processes')
Swap Used %Time seriesalias(telegraf.linux-demo.swap.used_percent, 'Swap Used %')
UptimeStatalias(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

AlertCorrect queryReduceThresholdEvaluatePending
High CPUtelegraf.linux-demo.cpu.usage_activeMean> 801m2m
High Memorytelegraf.linux-demo.mem.used_percentLast> 851m3m
High Disktelegraf.linux-demo.disk.used_percentLast> 851m5m
High Loadtelegraf.linux-demo.system.load1Mean> 21m3m
Zombie Processestelegraf.linux-demo.processes.zombiesLast> 01m1m

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"
        }
      }
    }
  ]
}