stacks/monitoring/grafana/dashboards/node-exporter.json

{
  "annotations": {
    "list": [
      {
        "datasource": { "type": "prometheus", "uid": "prom-homelab" },
        "enable": true,
        "iconColor": "rgba(0, 211, 255, 1)",
        "name": "Reboots",
        "expr": "changes(node_boot_time_seconds[5m]) > 0",
        "titleFormat": "reboot {{instance}}"
      }
    ]
  },
  "editable": false,
  "fiscalYearStartMonth": 0,
  "graphTooltip": 1,
  "id": null,
  "uid": "homelab-node",
  "title": "Homelab / Node",
  "tags": ["homelab", "node"],
  "timezone": "browser",
  "schemaVersion": 39,
  "version": 7,
  "refresh": "30s",
  "time": { "from": "now-6h", "to": "now" },
  "templating": {
    "list": [
      {
        "name": "instance",
        "type": "query",
        "datasource": { "type": "prometheus", "uid": "prom-homelab" },
        "query": "label_values(node_uname_info, instance)",
        "includeAll": false,
        "multi": false,
        "refresh": 2
      }
    ]
  },
  "panels": [
    {
      "type": "stat",
      "title": "Uptime",
      "id": 1,
      "gridPos": { "x": 0, "y": 0, "w": 4, "h": 4 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        {
          "expr": "time() - node_boot_time_seconds{instance=~\"$instance\"}",
          "refId": "A"
        }
      ],
      "fieldConfig": {
        "defaults": { "unit": "s", "decimals": 0 },
        "overrides": []
      },
      "options": { "reduceOptions": { "calcs": ["lastNotNull"] }, "colorMode": "value" }
    },
    {
      "type": "stat",
      "title": "CPU",
      "id": 2,
      "gridPos": { "x": 4, "y": 0, "w": 4, "h": 4 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        {
          "expr": "instance:node_cpu_usage:ratio_avg1m{instance=~\"$instance\"}",
          "refId": "A"
        }
      ],
      "fieldConfig": {
        "defaults": {
          "unit": "percentunit",
          "thresholds": {
            "mode": "absolute",
            "steps": [
              { "color": "green", "value": null },
              { "color": "orange", "value": 0.7 },
              { "color": "red", "value": 0.9 }
            ]
          }
        }
      }
    },
    {
      "type": "stat",
      "title": "Memory used",
      "id": 3,
      "gridPos": { "x": 8, "y": 0, "w": 4, "h": 4 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        {
          "expr": "instance:node_memory_used:ratio{instance=~\"$instance\"}",
          "refId": "A"
        }
      ],
      "fieldConfig": { "defaults": { "unit": "percentunit" } }
    },
    {
      "type": "stat",
      "title": "Load1",
      "id": 4,
      "gridPos": { "x": 12, "y": 0, "w": 4, "h": 4 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        {
          "expr": "node_load1{instance=~\"$instance\"}",
          "refId": "A"
        }
      ]
    },
    {
      "type": "stat",
      "title": "Disk used /",
      "id": 5,
      "gridPos": { "x": 16, "y": 0, "w": 4, "h": 4 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        {
          "expr": "instance:node_filesystem_used:ratio{instance=~\"$instance\",mountpoint=\"/\"}",
          "refId": "A"
        }
      ],
      "fieldConfig": { "defaults": { "unit": "percentunit" } }
    },
    {
      "type": "timeseries",
      "title": "CPU by mode",
      "id": 10,
      "gridPos": { "x": 0, "y": 4, "w": 12, "h": 8 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        {
          "expr": "sum by (mode) (rate(node_cpu_seconds_total{instance=~\"$instance\",mode!=\"idle\"}[5m]))",
          "legendFormat": "{{mode}}",
          "refId": "A"
        }
      ],
      "fieldConfig": {
        "defaults": { "unit": "percentunit", "custom": { "stacking": { "mode": "normal" } } }
      }
    },
    {
      "type": "timeseries",
      "title": "Memory",
      "id": 11,
      "gridPos": { "x": 12, "y": 4, "w": 12, "h": 8 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        {
          "expr": "node_memory_MemTotal_bytes{instance=~\"$instance\"} - node_memory_MemAvailable_bytes{instance=~\"$instance\"}",
          "legendFormat": "used",
          "refId": "A"
        },
        {
          "expr": "node_memory_Buffers_bytes{instance=~\"$instance\"} + node_memory_Cached_bytes{instance=~\"$instance\"}",
          "legendFormat": "buffers+cache",
          "refId": "B"
        }
      ],
      "fieldConfig": { "defaults": { "unit": "bytes" } }
    },
    {
      "type": "timeseries",
      "title": "Network (bps)",
      "id": 12,
      "gridPos": { "x": 0, "y": 12, "w": 12, "h": 8 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        {
          "expr": "instance:node_network_receive:bps5m{instance=~\"$instance\"}",
          "legendFormat": "rx",
          "refId": "A"
        },
        {
          "expr": "instance:node_network_transmit:bps5m{instance=~\"$instance\"}",
          "legendFormat": "tx",
          "refId": "B"
        }
      ],
      "fieldConfig": { "defaults": { "unit": "bps" } }
    },
    {
      "type": "timeseries",
      "title": "Filesystem use",
      "id": 13,
      "gridPos": { "x": 12, "y": 12, "w": 12, "h": 8 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        {
          "expr": "instance:node_filesystem_used:ratio{instance=~\"$instance\",fstype!~\"tmpfs|overlay\"}",
          "legendFormat": "{{mountpoint}}",
          "refId": "A"
        }
      ],
      "fieldConfig": { "defaults": { "unit": "percentunit", "max": 1, "min": 0 } }
    },
    {
      "type": "timeseries",
      "title": "Disk IO",
      "id": 14,
      "gridPos": { "x": 0, "y": 20, "w": 12, "h": 8 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        {
          "expr": "rate(node_disk_read_bytes_total{instance=~\"$instance\"}[5m])",
          "legendFormat": "{{device}} read",
          "refId": "A"
        },
        {
          "expr": "rate(node_disk_written_bytes_total{instance=~\"$instance\"}[5m])",
          "legendFormat": "{{device}} write",
          "refId": "B"
        }
      ],
      "fieldConfig": { "defaults": { "unit": "Bps" } }
    },
    {
      "type": "timeseries",
      "title": "Disk latency",
      "id": 15,
      "gridPos": { "x": 12, "y": 20, "w": 12, "h": 8 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        {
          "expr": "rate(node_disk_read_time_seconds_total{instance=~\"$instance\"}[5m]) / rate(node_disk_reads_completed_total{instance=~\"$instance\"}[5m])",
          "legendFormat": "{{device}} read",
          "refId": "A"
        },
        {
          "expr": "rate(node_disk_write_time_seconds_total{instance=~\"$instance\"}[5m]) / rate(node_disk_writes_completed_total{instance=~\"$instance\"}[5m])",
          "legendFormat": "{{device}} write",
          "refId": "B"
        }
      ],
      "fieldConfig": { "defaults": { "unit": "s" } }
    },
    {
      "type": "timeseries",
      "title": "Load",
      "id": 16,
      "gridPos": { "x": 0, "y": 28, "w": 12, "h": 8 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        { "expr": "node_load1{instance=~\"$instance\"}", "legendFormat": "1m", "refId": "A" },
        { "expr": "node_load5{instance=~\"$instance\"}", "legendFormat": "5m", "refId": "B" },
        { "expr": "node_load15{instance=~\"$instance\"}", "legendFormat": "15m", "refId": "C" }
      ]
    },
    {
      "type": "timeseries",
      "title": "File descriptors",
      "id": 17,
      "gridPos": { "x": 12, "y": 28, "w": 12, "h": 8 },
      "datasource": { "type": "prometheus", "uid": "prom-homelab" },
      "targets": [
        {
          "expr": "node_filefd_allocated{instance=~\"$instance\"}",
          "legendFormat": "allocated",
          "refId": "A"
        }
      ]
    }
  ]
}