From 719cd4bf8cf212d73707132e530b9029c1b560ad Mon Sep 17 00:00:00 2001 From: alkatrazz Date: Thu, 14 May 2026 19:02:27 +0200 Subject: [PATCH] =?UTF-8?q?feat(monitoring):=20dashboard=20infra=20?= =?UTF-8?q?=E2=80=94=20section=20services=20systemd=20+=20NFS=20I/O?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../dashboards/dashboard-infrastructure.yaml | 278 ++++++++++++++++++ 1 file changed, 278 insertions(+) diff --git a/k8s/infra/monitoring/dashboards/dashboard-infrastructure.yaml b/k8s/infra/monitoring/dashboards/dashboard-infrastructure.yaml index c4e3c6f..1c4dc0f 100644 --- a/k8s/infra/monitoring/dashboards/dashboard-infrastructure.yaml +++ b/k8s/infra/monitoring/dashboards/dashboard-infrastructure.yaml @@ -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",