Files
repo/grafana-host-docker-dashboard.json
2025-12-23 09:18:53 +01:00

968 lines
24 KiB
JSON

{
"dashboard": {
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"name": "Annotations & Alerts",
"type": "dashboard"
}
]
},
"editable": true,
"fiscalYearStartMonth": 0,
"graphTooltip": 1,
"id": null,
"links": [],
"liveNow": false,
"panels": [
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 0
},
"id": 1,
"panels": [],
"title": "Host health",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "percent",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 0,
"y": 1
},
"id": 2,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"expr": "100 - (avg by (instance) (irate(node_cpu_seconds_total{job=\"$job_node\", instance=\"$instance\", mode=\"idle\"}[5m])) * 100)",
"legendFormat": "{{instance}}",
"refId": "A"
}
],
"title": "CPU usage (%)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "short",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 8,
"y": 1
},
"id": 3,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"expr": "node_load1{job=\"$job_node\", instance=\"$instance\"}",
"legendFormat": "load1",
"refId": "A"
},
{
"expr": "node_load5{job=\"$job_node\", instance=\"$instance\"}",
"legendFormat": "load5",
"refId": "B"
},
{
"expr": "node_load15{job=\"$job_node\", instance=\"$instance\"}",
"legendFormat": "load15",
"refId": "C"
}
],
"title": "Load (1m/5m/15m)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "bytes",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 8,
"x": 16,
"y": 1
},
"id": 4,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"expr": "(node_memory_MemTotal_bytes{job=\"$job_node\", instance=\"$instance\"} - node_memory_MemAvailable_bytes{job=\"$job_node\", instance=\"$instance\"})",
"legendFormat": "used",
"refId": "A"
},
{
"expr": "node_memory_MemAvailable_bytes{job=\"$job_node\", instance=\"$instance\"}",
"legendFormat": "available",
"refId": "B"
}
],
"title": "Memory used (bytes)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "percent",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 9
},
"id": 5,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"targets": [
{
"expr": "100 * (1 - (node_filesystem_avail_bytes{job=\"$job_node\", instance=\"$instance\", fstype!~\"tmpfs|overlay|squashfs\"} / node_filesystem_size_bytes{job=\"$job_node\", instance=\"$instance\", fstype!~\"tmpfs|overlay|squashfs\"}))",
"legendFormat": "{{mountpoint}} ({{device}})",
"refId": "A"
}
],
"title": "Disk usage (%) by mountpoint",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "Bps",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 9,
"w": 12,
"x": 12,
"y": 9
},
"id": 6,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"targets": [
{
"expr": "sum by (device) (irate(node_disk_read_bytes_total{job=\"$job_node\", instance=\"$instance\"}[5m]))",
"legendFormat": "read {{device}}",
"refId": "A"
},
{
"expr": "sum by (device) (irate(node_disk_written_bytes_total{job=\"$job_node\", instance=\"$instance\"}[5m]))",
"legendFormat": "write {{device}}",
"refId": "B"
}
],
"title": "Disk I/O (bytes/s)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "Bps",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 18
},
"id": 7,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"targets": [
{
"expr": "sum by (device) (irate(node_network_receive_bytes_total{job=\"$job_node\", instance=\"$instance\", device!~\"lo\"}[5m]))",
"legendFormat": "rx {{device}}",
"refId": "A"
},
{
"expr": "sum by (device) (irate(node_network_transmit_bytes_total{job=\"$job_node\", instance=\"$instance\", device!~\"lo\"}[5m]))",
"legendFormat": "tx {{device}}",
"refId": "B"
}
],
"title": "Network throughput (bytes/s)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "s",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 6,
"x": 12,
"y": 18
},
"id": 8,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"expr": "time() - node_boot_time_seconds{job=\"$job_node\", instance=\"$instance\"}",
"legendFormat": "uptime",
"refId": "A"
}
],
"title": "Uptime (seconds)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "short",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 6,
"x": 18,
"y": 18
},
"id": 9,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "single",
"sort": "none"
}
},
"targets": [
{
"expr": "max by (name) (node_systemd_unit_state{job=\"$job_node\", instance=\"$instance\", name=\"proxmox-vm.service\", state=\"active\"})",
"legendFormat": "{{name}}",
"refId": "A"
}
],
"title": "proxmox-vm.service (systemd active=1)",
"type": "timeseries"
},
{
"collapsed": false,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 26
},
"id": 10,
"panels": [],
"title": "Docker (cAdvisor)",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "percent",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 9,
"w": 12,
"x": 0,
"y": 27
},
"id": 11,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"targets": [
{
"expr": "topk(10, 100 * sum by (name) (rate(container_cpu_usage_seconds_total{job=\"$job_cadvisor\", instance=\"$instance\", name=~\"$container\"}[5m])))",
"legendFormat": "{{name}}",
"refId": "A"
}
],
"title": "Top container CPU (%)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "bytes",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 9,
"w": 12,
"x": 12,
"y": 27
},
"id": 12,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"targets": [
{
"expr": "topk(10, container_memory_usage_bytes{job=\"$job_cadvisor\", instance=\"$instance\", name=~\"$container\"})",
"legendFormat": "{{name}}",
"refId": "A"
}
],
"title": "Top container memory (bytes)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "bytes",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 36
},
"id": 13,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"targets": [
{
"expr": "topk(10, container_fs_usage_bytes{job=\"$job_cadvisor\", instance=\"$instance\", name=~\"$container\"})",
"legendFormat": "{{name}}",
"refId": "A"
}
],
"title": "Container filesystem usage (bytes)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "Bps",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 36
},
"id": 14,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"targets": [
{
"expr": "topk(10, sum by (name) (rate(container_network_receive_bytes_total{job=\"$job_cadvisor\", instance=\"$instance\", name=~\"$container\"}[5m])))",
"legendFormat": "rx {{name}}",
"refId": "A"
},
{
"expr": "topk(10, sum by (name) (rate(container_network_transmit_bytes_total{job=\"$job_cadvisor\", instance=\"$instance\", name=~\"$container\"}[5m])))",
"legendFormat": "tx {{name}}",
"refId": "B"
}
],
"title": "Container network (bytes/s)",
"type": "timeseries"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"gridPos": {
"h": 8,
"w": 24,
"x": 0,
"y": 44
},
"id": 15,
"title": "Container seen (last 2m)",
"type": "table",
"targets": [
{
"expr": "max by (name) (container_last_seen{job=\"$job_cadvisor\", instance=\"$instance\", name=~\"$container\"})",
"legendFormat": "{{name}}",
"refId": "A",
"format": "table",
"instant": true
}
],
"options": {
"showHeader": true,
"sortBy": [
{
"displayName": "Value",
"desc": true
}
]
},
"fieldConfig": {
"defaults": {
"unit": "dateTimeFromNow",
"custom": {
"align": "auto"
}
},
"overrides": []
},
"transformations": [
{
"id": "organize",
"options": {
"renameByName": {
"Value": "Last seen (unix seconds)"
},
"excludeByName": {
"Time": true
}
}
}
]
},
{
"collapsed": true,
"gridPos": {
"h": 1,
"w": 24,
"x": 0,
"y": 52
},
"id": 16,
"panels": [],
"title": "Optional: directory sizes (node_exporter textfile collector)",
"type": "row"
},
{
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
},
"fieldConfig": {
"defaults": {
"unit": "bytes",
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "red",
"value": 80
}
]
}
},
"overrides": []
},
"gridPos": {
"h": 8,
"w": 24,
"x": 0,
"y": 53
},
"id": 17,
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true
},
"tooltip": {
"mode": "multi",
"sort": "none"
}
},
"targets": [
{
"expr": "dir_size_bytes{job=\"$job_node\", instance=\"$instance\", path=~\"/opt/monitoring|/nextcloud|/gitea|/vaultwarden\"}",
"legendFormat": "{{path}}",
"refId": "A"
}
],
"title": "Directory sizes (bytes) — requires custom metric dir_size_bytes",
"type": "timeseries"
}
],
"refresh": "10s",
"schemaVersion": 39,
"style": "dark",
"tags": [
"host",
"docker",
"prometheus"
],
"templating": {
"list": [
{
"current": {
"selected": false,
"text": "Prometheus",
"value": "Prometheus"
},
"hide": 0,
"includeAll": false,
"label": "Datasource",
"name": "DS_PROMETHEUS",
"options": [],
"query": "prometheus",
"refresh": 1,
"regex": "",
"type": "datasource"
},
{
"current": {
"selected": false,
"text": "node",
"value": "node"
},
"hide": 0,
"includeAll": false,
"label": "Job (Node Exporter)",
"name": "job_node",
"options": [],
"query": "label_values(node_uname_info, job)",
"refresh": 2,
"regex": "",
"type": "query",
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
}
},
{
"current": {
"selected": false,
"text": "",
"value": ""
},
"hide": 0,
"includeAll": false,
"label": "Instance",
"name": "instance",
"options": [],
"query": "label_values(node_uname_info{job=\"$job_node\"}, instance)",
"refresh": 2,
"regex": "",
"type": "query",
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
}
},
{
"current": {
"selected": false,
"text": "cadvisor",
"value": "cadvisor"
},
"hide": 0,
"includeAll": false,
"label": "Job (cAdvisor)",
"name": "job_cadvisor",
"options": [],
"query": "label_values(container_last_seen, job)",
"refresh": 2,
"regex": "",
"type": "query",
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
}
},
{
"current": {
"selected": false,
"text": "All",
"value": "$__all"
},
"hide": 0,
"includeAll": true,
"label": "Container",
"name": "container",
"options": [],
"query": "label_values(container_last_seen{job=\"$job_cadvisor\", instance=\"$instance\"}, name)",
"refresh": 2,
"regex": "^(?!/).*$",
"type": "query",
"datasource": {
"type": "prometheus",
"uid": "${DS_PROMETHEUS}"
}
}
]
},
"time": {
"from": "now-6h",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"5s",
"10s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h"
],
"time_options": [
"5m",
"15m",
"1h",
"6h",
"12h",
"24h",
"2d",
"7d",
"30d"
]
},
"timezone": "",
"title": "Host + Docker (Node Exporter + cAdvisor)",
"uid": "emy-host-docker",
"version": 1
},
"overwrite": true
}