feat(monitoring): dashboard infra — section services systemd + NFS I/O

Nouvelle section "Services — état systemd" en bas du dashboard :

storage-01 (8 panels verts/rouges) :
  DNS (dnsmasq), NFS server, PostgreSQL, Qdrant, LiteLLM,
  Hermes Agent, nftables, chronyd (NTP)

gpu-01 (4 panels) :
  llama-server GPU (:1234), llama-server system (:1236),
  llama-server monitor (:1237), chronyd (NTP)

Timeseries NFS :
  - Débit NFS disque (read/write bytes/s)
  - Requêtes NFS/s par type (read/write/getattr/lookup)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
alkatrazz 2026-05-14 19:02:27 +02:00
parent 428fa4ce2a
commit 719cd4bf8c

View file

@ -1222,6 +1222,284 @@ data:
}
],
"type": "timeseries"
},
{
"collapsed": false,
"gridPos": {"h": 1, "w": 24, "x": 0, "y": 55},
"id": 51,
"title": "Services — état systemd",
"type": "row"
},
{
"collapsed": false,
"gridPos": {"h": 1, "w": 24, "x": 0, "y": 56},
"id": 70,
"title": "storage-01",
"type": "row"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]},
"unit": "none",
"mappings": [{"type": "value", "options": {"1": {"text": "dnsmasq", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}]
},
"overrides": []
},
"gridPos": {"h": 3, "w": 3, "x": 0, "y": 57},
"id": 52,
"options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"},
"title": "DNS (dnsmasq)",
"targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"storage-01\",name=\"dnsmasq.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}],
"type": "stat"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]},
"unit": "none",
"mappings": [{"type": "value", "options": {"1": {"text": "nfs-server", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}]
},
"overrides": []
},
"gridPos": {"h": 3, "w": 3, "x": 3, "y": 57},
"id": 53,
"options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"},
"title": "NFS server",
"targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"storage-01\",name=\"nfs-server.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}],
"type": "stat"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]},
"unit": "none",
"mappings": [{"type": "value", "options": {"1": {"text": "postgresql", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}]
},
"overrides": []
},
"gridPos": {"h": 3, "w": 3, "x": 6, "y": 57},
"id": 54,
"options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"},
"title": "PostgreSQL",
"targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"storage-01\",name=\"postgresql-16.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}],
"type": "stat"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]},
"unit": "none",
"mappings": [{"type": "value", "options": {"1": {"text": "qdrant", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}]
},
"overrides": []
},
"gridPos": {"h": 3, "w": 3, "x": 9, "y": 57},
"id": 55,
"options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"},
"title": "Qdrant",
"targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"storage-01\",name=\"qdrant.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}],
"type": "stat"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]},
"unit": "none",
"mappings": [{"type": "value", "options": {"1": {"text": "litellm", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}]
},
"overrides": []
},
"gridPos": {"h": 3, "w": 3, "x": 12, "y": 57},
"id": 56,
"options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"},
"title": "LiteLLM",
"targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"storage-01\",name=\"litellm.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}],
"type": "stat"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]},
"unit": "none",
"mappings": [{"type": "value", "options": {"1": {"text": "hermes-agent", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}]
},
"overrides": []
},
"gridPos": {"h": 3, "w": 3, "x": 15, "y": 57},
"id": 57,
"options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"},
"title": "Hermes Agent",
"targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"storage-01\",name=\"hermes-agent.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}],
"type": "stat"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]},
"unit": "none",
"mappings": [{"type": "value", "options": {"1": {"text": "nftables", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}]
},
"overrides": []
},
"gridPos": {"h": 3, "w": 3, "x": 18, "y": 57},
"id": 58,
"options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"},
"title": "nftables (firewall)",
"targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"storage-01\",name=\"nftables.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}],
"type": "stat"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]},
"unit": "none",
"mappings": [{"type": "value", "options": {"1": {"text": "chronyd", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}]
},
"overrides": []
},
"gridPos": {"h": 3, "w": 3, "x": 21, "y": 57},
"id": 59,
"options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"},
"title": "NTP (chronyd)",
"targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"storage-01\",name=\"chronyd.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}],
"type": "stat"
},
{
"collapsed": false,
"gridPos": {"h": 1, "w": 24, "x": 0, "y": 60},
"id": 71,
"title": "gpu-01",
"type": "row"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]},
"unit": "none",
"mappings": [{"type": "value", "options": {"1": {"text": "llama-server GPU", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}]
},
"overrides": []
},
"gridPos": {"h": 3, "w": 6, "x": 0, "y": 61},
"id": 60,
"options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"},
"title": "llama-server GPU (:1234)",
"targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"gpu-01-node\",name=\"llama-server.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}],
"type": "stat"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]},
"unit": "none",
"mappings": [{"type": "value", "options": {"1": {"text": "llama-server system", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}]
},
"overrides": []
},
"gridPos": {"h": 3, "w": 6, "x": 6, "y": 61},
"id": 61,
"options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"},
"title": "llama-server CPU system (:1236)",
"targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"gpu-01-node\",name=\"llama-server-system.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}],
"type": "stat"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]},
"unit": "none",
"mappings": [{"type": "value", "options": {"1": {"text": "llama-server monitor", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}]
},
"overrides": []
},
"gridPos": {"h": 3, "w": 6, "x": 12, "y": 61},
"id": 62,
"options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"},
"title": "llama-server CPU monitor (:1237)",
"targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"gpu-01-node\",name=\"llama-server-monitor.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}],
"type": "stat"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"thresholds": {"mode": "absolute", "steps": [{"color": "red", "value": null}, {"color": "green", "value": 1}]},
"unit": "none",
"mappings": [{"type": "value", "options": {"1": {"text": "chronyd", "color": "green", "index": 0}, "0": {"text": "ARRÊTÉ", "color": "red", "index": 1}}}]
},
"overrides": []
},
"gridPos": {"h": 3, "w": 6, "x": 18, "y": 61},
"id": 63,
"options": {"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": false}, "textMode": "auto", "colorMode": "background", "graphMode": "none"},
"title": "NTP (chronyd)",
"targets": [{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "node_systemd_unit_state{job=\"gpu-01-node\",name=\"chronyd.service\",state=\"active\"}", "legendFormat": "", "refId": "A"}],
"type": "stat"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "palette-classic"},
"custom": {"lineWidth": 1, "fillOpacity": 8, "drawStyle": "line", "spanNulls": false},
"unit": "Bps",
"min": 0
},
"overrides": []
},
"gridPos": {"h": 7, "w": 12, "x": 0, "y": 64},
"id": 64,
"options": {"tooltip": {"mode": "multi"}, "legend": {"displayMode": "list", "placement": "bottom"}},
"title": "NFS I/O — storage-01 (débit disque NFS)",
"targets": [
{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "irate(node_nfsd_disk_bytes_read_total{job=\"storage-01\"}[5m])", "legendFormat": "read", "refId": "A"},
{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "irate(node_nfsd_disk_bytes_written_total{job=\"storage-01\"}[5m])", "legendFormat": "write", "refId": "B"}
],
"type": "timeseries"
},
{
"datasource": {"type": "prometheus", "uid": "${datasource}"},
"fieldConfig": {
"defaults": {
"color": {"mode": "palette-classic"},
"custom": {"lineWidth": 1, "fillOpacity": 8, "drawStyle": "line", "spanNulls": false},
"unit": "reqps",
"min": 0
},
"overrides": []
},
"gridPos": {"h": 7, "w": 12, "x": 12, "y": 64},
"id": 65,
"options": {"tooltip": {"mode": "multi"}, "legend": {"displayMode": "list", "placement": "bottom"}},
"title": "NFS requêtes/s par type — storage-01",
"targets": [
{"datasource": {"type": "prometheus", "uid": "${datasource}"}, "expr": "irate(node_nfsd_requests_total{job=\"storage-01\",method=~\"read|write|getattr|lookup\"}[5m])", "legendFormat": "{{method}}", "refId": "A"}
],
"type": "timeseries"
}
],
"refresh": "30s",