From 0545576335508293fc3add113641d99ca129ba85 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Tue, 17 Feb 2026 19:45:12 +0000 Subject: [PATCH] [ci skip] Add Smart Home (ha-sofia) section to Cluster Health Overview dashboard --- .../monitoring/dashboards/cluster_health.json | 2284 ++++++++++++----- 1 file changed, 1616 insertions(+), 668 deletions(-) diff --git a/modules/kubernetes/monitoring/dashboards/cluster_health.json b/modules/kubernetes/monitoring/dashboards/cluster_health.json index 00a662d8..050117ad 100644 --- a/modules/kubernetes/monitoring/dashboards/cluster_health.json +++ b/modules/kubernetes/monitoring/dashboards/cluster_health.json @@ -15,11 +15,11 @@ } ] }, - "description": "Single-pane-of-glass daily health overview \u2014 nodes, pods, quotas, storage, certs, GPU, power", + "description": "Single-pane-of-glass daily health overview — nodes, pods, quotas, storage, certs, GPU, power, smart home", "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 1, - "id": null, + "id": 0, "links": [ { "asDropdown": true, @@ -33,121 +33,121 @@ "url": "" }, { - "title": "API Server", - "type": "link", - "url": "/d/k8s_system_apisrv", "icon": "cloud", - "targetBlank": true, "keepTime": true, - "tooltip": "Kubernetes API Server" + "targetBlank": true, + "title": "API Server", + "tooltip": "Kubernetes API Server", + "type": "link", + "url": "/d/k8s_system_apisrv" }, { + "icon": "dashboard", + "keepTime": true, + "targetBlank": true, "title": "Nodes", + "tooltip": "Kubernetes Nodes View", "type": "link", - "url": "/d/k8s_views_nodes", - "icon": "dashboard", - "targetBlank": true, - "keepTime": true, - "tooltip": "Kubernetes Nodes View" + "url": "/d/k8s_views_nodes" }, { + "icon": "dashboard", + "keepTime": true, + "targetBlank": true, "title": "Pods", + "tooltip": "Kubernetes Pods View", "type": "link", - "url": "/d/k8s_views_pods", - "icon": "dashboard", - "targetBlank": true, - "keepTime": true, - "tooltip": "Kubernetes Pods View" + "url": "/d/k8s_views_pods" }, { - "title": "GPU", - "type": "link", - "url": "/d/Oxed_c6Wz", "icon": "bolt", - "targetBlank": true, "keepTime": true, - "tooltip": "NVIDIA DCGM Exporter" + "targetBlank": true, + "title": "GPU", + "tooltip": "NVIDIA DCGM Exporter", + "type": "link", + "url": "/d/Oxed_c6Wz" }, { + "icon": "server", + "keepTime": true, + "targetBlank": true, "title": "iDRAC", + "tooltip": "Dell iDRAC Hardware", "type": "link", - "url": "/d/YVz226S4z", - "icon": "server", - "targetBlank": true, - "keepTime": true, - "tooltip": "Dell iDRAC Hardware" + "url": "/d/YVz226S4z" }, { - "title": "UPS", - "type": "link", - "url": "/d/ee70yskqw5u68f", "icon": "battery-full", - "targetBlank": true, "keepTime": true, - "tooltip": "Huawei UPS 2000" + "targetBlank": true, + "title": "UPS", + "tooltip": "Huawei UPS 2000", + "type": "link", + "url": "/d/ee70yskqw5u68f" }, { - "title": "CoreDNS", - "type": "link", - "url": "/d/wY4blRMGz", "icon": "signal", - "targetBlank": true, "keepTime": true, - "tooltip": "CoreDNS" + "targetBlank": true, + "title": "CoreDNS", + "tooltip": "CoreDNS", + "type": "link", + "url": "/d/wY4blRMGz" }, { - "title": "Node Exporter", - "type": "link", - "url": "/d/rYdddlPWk", "icon": "monitor", - "targetBlank": true, "keepTime": true, - "tooltip": "Node Exporter Full" + "targetBlank": true, + "title": "Node Exporter", + "tooltip": "Node Exporter Full", + "type": "link", + "url": "/d/rYdddlPWk" }, { - "title": "Docker Registry", - "type": "link", - "url": "/d/CoBSgj8iz", "icon": "cube", - "targetBlank": true, "keepTime": true, - "tooltip": "Docker Registry" + "targetBlank": true, + "title": "Docker Registry", + "tooltip": "Docker Registry", + "type": "link", + "url": "/d/CoBSgj8iz" }, { - "title": "Traefik", - "type": "link", - "url": "/d/n5bu_kv45", "icon": "exchange-alt", - "targetBlank": true, "keepTime": true, - "tooltip": "Traefik Ingress" + "targetBlank": true, + "title": "Traefik", + "tooltip": "Traefik Ingress", + "type": "link", + "url": "/d/n5bu_kv45" }, { - "title": "Loki Logs", - "type": "link", - "url": "/d/o6-BGgnnk", "icon": "file-alt", - "targetBlank": true, "keepTime": true, - "tooltip": "Loki Kubernetes Logs" + "targetBlank": true, + "title": "Loki Logs", + "tooltip": "Loki Kubernetes Logs", + "type": "link", + "url": "/d/o6-BGgnnk" }, { - "title": "kube-state-metrics", - "type": "link", - "url": "/d/garysdevil-kube-state-metrics-v2", "icon": "graph-bar", - "targetBlank": true, "keepTime": true, - "tooltip": "kube-state-metrics v2" + "targetBlank": true, + "title": "kube-state-metrics", + "tooltip": "kube-state-metrics v2", + "type": "link", + "url": "/d/garysdevil-kube-state-metrics-v2" }, { - "title": "Proxmox", - "type": "link", - "url": "/d/rYdddlPW", "icon": "server", - "targetBlank": true, "keepTime": true, - "tooltip": "Proxmox Node Exporter" + "targetBlank": true, + "title": "Proxmox", + "tooltip": "Proxmox Node Exporter", + "type": "link", + "url": "/d/rYdddlPW" } ], "panels": [ @@ -180,7 +180,7 @@ "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "orange", @@ -208,6 +208,7 @@ "graphMode": "area", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -215,10 +216,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "title": "CPU Temp", - "type": "stat", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -229,7 +231,9 @@ "legendFormat": "CPU Temp", "refId": "A" } - ] + ], + "title": "CPU Temp", + "type": "stat" }, { "datasource": { @@ -247,7 +251,7 @@ "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "orange", @@ -275,6 +279,7 @@ "graphMode": "area", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -282,10 +287,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "title": "GPU Temp", - "type": "stat", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -296,7 +302,9 @@ "legendFormat": "GPU Temp", "refId": "A" } - ] + ], + "title": "GPU Temp", + "type": "stat" }, { "datasource": { @@ -312,11 +320,11 @@ { "options": { "from": 1, - "to": 999999, "result": { "color": "red", "text": "OUTAGE" - } + }, + "to": 999999 }, "type": "range" }, @@ -335,7 +343,7 @@ "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "red", @@ -358,6 +366,7 @@ "graphMode": "none", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -365,10 +374,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "title": "Power Source", - "type": "stat", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -379,7 +389,9 @@ "legendFormat": "", "refId": "A" } - ] + ], + "title": "Power Source", + "type": "stat" }, { "datasource": { @@ -399,7 +411,7 @@ "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "orange", @@ -434,10 +446,10 @@ "values": false }, "showThresholdLabels": false, - "showThresholdMarkers": true + "showThresholdMarkers": true, + "sizing": "auto" }, - "title": "GPU Util %", - "type": "gauge", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -448,7 +460,9 @@ "legendFormat": "GPU Util", "refId": "A" } - ] + ], + "title": "GPU Util %", + "type": "gauge" }, { "datasource": { @@ -466,7 +480,7 @@ "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "orange", @@ -494,6 +508,7 @@ "graphMode": "area", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -501,10 +516,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "title": "GPU VRAM Used", - "type": "stat", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -515,7 +531,9 @@ "legendFormat": "VRAM", "refId": "A" } - ] + ], + "title": "GPU VRAM Used", + "type": "stat" }, { "datasource": { @@ -533,7 +551,7 @@ "steps": [ { "color": "red", - "value": null + "value": 0 }, { "color": "orange", @@ -561,6 +579,7 @@ "graphMode": "area", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -568,10 +587,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "title": "UPS Battery (min)", - "type": "stat", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -582,7 +602,9 @@ "legendFormat": "Battery", "refId": "A" } - ] + ], + "title": "UPS Battery (min)", + "type": "stat" }, { "datasource": { @@ -602,7 +624,7 @@ "steps": [ { "color": "red", - "value": null + "value": 0 }, { "color": "orange", @@ -637,10 +659,10 @@ "values": false }, "showThresholdLabels": false, - "showThresholdMarkers": true + "showThresholdMarkers": true, + "sizing": "auto" }, - "title": "UPS Charge %", - "type": "gauge", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -651,7 +673,9 @@ "legendFormat": "Charge", "refId": "A" } - ] + ], + "title": "UPS Charge %", + "type": "gauge" }, { "datasource": { @@ -674,20 +698,20 @@ "type": "value" } ], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "red", "value": 1 } ] - }, - "noValue": "0" + } }, "overrides": [] }, @@ -703,6 +727,7 @@ "graphMode": "none", "justifyMode": "auto", "orientation": "auto", + "percentChangeColorMode": "standard", "reduceOptions": { "calcs": [ "lastNotNull" @@ -710,10 +735,11 @@ "fields": "", "values": false }, - "textMode": "auto" + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true }, - "title": "UPS Alarms", - "type": "stat", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -724,7 +750,9 @@ "legendFormat": "", "refId": "A" } - ] + ], + "title": "UPS Alarms", + "type": "stat" }, { "datasource": { @@ -760,6 +788,7 @@ "type": "linear" }, "showPoints": "never", + "showValues": false, "spanNulls": true, "stacking": { "group": "A", @@ -770,17 +799,17 @@ } }, "mappings": [], + "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", - "value": null + "value": 0 } ] }, - "unit": "watt", - "min": 0 + "unit": "watt" }, "overrides": [ { @@ -850,12 +879,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "desc" } }, - "title": "Power Draw (24h)", - "type": "timeseries", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -884,7 +913,9 @@ "legendFormat": "CPU Temp", "refId": "C" } - ] + ], + "title": "Power Draw (24h)", + "type": "timeseries" }, { "collapsed": false, @@ -894,6 +925,954 @@ "x": 0, "y": 13 }, + "id": 100, + "panels": [], + "title": "Smart Home (ha-sofia)", + "type": "row" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [ + { + "options": { + "0": { + "color": "red", + "text": "DOWN" + }, + "1": { + "color": "green", + "text": "UP" + } + }, + "type": "value" + } + ], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": 0 + }, + { + "color": "green", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 0, + "y": 14 + }, + "id": 101, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "up{job=\"haos\"}", + "legendFormat": "", + "refId": "A" + } + ], + "title": "HA Status", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": 0 + }, + { + "color": "orange", + "value": 70 + }, + { + "color": "green", + "value": 90 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 3, + "y": 14 + }, + "id": 102, + "options": { + "minVizHeight": 75, + "minVizWidth": 75, + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showThresholdLabels": false, + "showThresholdMarkers": true, + "sizing": "auto" + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=~\"alarm_control_panel|camera|climate|fan|humidifier|light|media_player|remote|switch|vacuum\"} == 1) / count(haos_entity_available{domain=~\"alarm_control_panel|camera|climate|fan|humidifier|light|media_player|remote|switch|vacuum\"}) * 100", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Devices Available", + "type": "gauge" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "red", + "value": 1 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 7, + "y": 14 + }, + "id": 103, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "auto", + "wideLayout": true + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=~\"alarm_control_panel|camera|climate|fan|humidifier|light|media_player|remote|switch|vacuum\"} == 0) OR vector(0)", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Unavailable Devices", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "orange", + "value": 0.01 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 10, + "y": 14 + }, + "id": 104, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=\"light\"} == 1)", + "legendFormat": "avail", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=\"light\"})", + "legendFormat": "total", + "refId": "B" + } + ], + "title": "Lights", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "orange", + "value": 0.01 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 12, + "y": 14 + }, + "id": 105, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=\"camera\"} == 1)", + "legendFormat": "avail", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=\"camera\"})", + "legendFormat": "total", + "refId": "B" + } + ], + "title": "Cameras", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "orange", + "value": 0.01 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 14, + "y": 14 + }, + "id": 106, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=\"climate\"} == 1)", + "legendFormat": "avail", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=\"climate\"})", + "legendFormat": "total", + "refId": "B" + } + ], + "title": "Climate", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "orange", + "value": 0.01 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 16, + "y": 14 + }, + "id": 107, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=\"switch\"} == 1)", + "legendFormat": "avail", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=\"switch\"})", + "legendFormat": "total", + "refId": "B" + } + ], + "title": "Switches", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "orange", + "value": 0.01 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 2, + "x": 19, + "y": 14 + }, + "id": 108, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=\"alarm_control_panel\"} == 1)", + "legendFormat": "avail", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=\"alarm_control_panel\"})", + "legendFormat": "total", + "refId": "B" + } + ], + "title": "Alarm", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + }, + { + "color": "orange", + "value": 0.01 + } + ] + } + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 3, + "x": 21, + "y": 14 + }, + "id": 109, + "options": { + "colorMode": "background", + "graphMode": "none", + "justifyMode": "auto", + "orientation": "auto", + "percentChangeColorMode": "standard", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "showPercentChange": false, + "textMode": "value_and_name", + "wideLayout": true + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=\"media_player\"} == 1)", + "legendFormat": "avail", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=\"media_player\"})", + "legendFormat": "total", + "refId": "B" + } + ], + "title": "Media Players", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "footer": { + "reducers": [] + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red", + "value": 0 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Domain" + }, + "properties": [ + { + "id": "custom.width", + "value": 180 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Name" + }, + "properties": [ + { + "id": "custom.width", + "value": 350 + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 14, + "x": 0, + "y": 18 + }, + "id": 110, + "options": { + "cellHeight": "sm", + "showHeader": true, + "sortBy": [ + { + "desc": false, + "displayName": "Domain" + } + ] + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "editorMode": "code", + "expr": "haos_entity_available{domain=~\"alarm_control_panel|camera|climate|fan|humidifier|light|media_player|remote|switch|vacuum\"} == 0", + "format": "table", + "instant": true, + "legendFormat": "", + "refId": "A" + } + ], + "title": "Unavailable Devices", + "transformations": [ + { + "id": "organize", + "options": { + "excludeByName": { + "Time": true, + "Value": true, + "__name__": true, + "instance": true, + "job": true + }, + "renameByName": { + "domain": "Domain", + "entity": "Entity", + "friendly_name": "Name" + } + } + }, + { + "id": "sortBy", + "options": { + "fields": {}, + "sort": [ + { + "desc": false, + "field": "Domain" + } + ] + } + } + ], + "type": "table" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "axisBorderShow": false, + "axisCenteredZero": false, + "axisColorMode": "text", + "axisLabel": "", + "axisPlacement": "auto", + "barAlignment": 0, + "barWidthFactor": 0.6, + "drawStyle": "line", + "fillOpacity": 20, + "gradientMode": "scheme", + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + }, + "insertNulls": false, + "lineInterpolation": "smooth", + "lineWidth": 2, + "pointSize": 5, + "scaleDistribution": { + "type": "linear" + }, + "showPoints": "never", + "showValues": false, + "spanNulls": true, + "stacking": { + "group": "A", + "mode": "none" + }, + "thresholdsStyle": { + "mode": "off" + } + }, + "mappings": [], + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": 0 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Unavailable" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Available" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "green", + "mode": "fixed" + } + } + ] + } + ] + }, + "gridPos": { + "h": 8, + "w": 10, + "x": 14, + "y": 18 + }, + "id": 111, + "options": { + "legend": { + "calcs": [ + "lastNotNull", + "min", + "max" + ], + "displayMode": "table", + "placement": "bottom", + "showLegend": true + }, + "tooltip": { + "hideZeros": false, + "mode": "multi", + "sort": "none" + } + }, + "pluginVersion": "12.3.1", + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=~\"alarm_control_panel|camera|climate|fan|humidifier|light|media_player|remote|switch|vacuum\"} == 1)", + "legendFormat": "Available", + "refId": "A" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "count(haos_entity_available{domain=~\"alarm_control_panel|camera|climate|fan|humidifier|light|media_player|remote|switch|vacuum\"} == 0)", + "legendFormat": "Unavailable", + "refId": "B" + } + ], + "title": "Device Availability Over Time", + "type": "timeseries" + }, + { + "collapsed": false, + "gridPos": { + "h": 1, + "w": 24, + "x": 0, + "y": 26 + }, "id": 10, "panels": [], "title": "Node Health", @@ -914,6 +1893,9 @@ "cellOptions": { "type": "auto" }, + "footer": { + "reducers": [] + }, "inspect": false }, "mappings": [], @@ -922,7 +1904,7 @@ "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "orange", @@ -1035,19 +2017,11 @@ "h": 8, "w": 8, "x": 0, - "y": 14 + "y": 27 }, "id": 11, "options": { "cellHeight": "sm", - "footer": { - "countRows": false, - "fields": "", - "reducer": [ - "sum" - ], - "show": false - }, "showHeader": true, "sortBy": [ { @@ -1056,8 +2030,7 @@ } ] }, - "title": "Node Resource Table", - "type": "table", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -1104,6 +2077,7 @@ "refId": "PODS" } ], + "title": "Node Resource Table", "transformations": [ { "id": "merge", @@ -1116,16 +2090,17 @@ "Time": true }, "renameByName": { - "instance": "Node", - "node": "Node", "Value #CPU": "CPU %", - "Value #MEM": "Memory %", "Value #DISK": "Disk %", - "Value #PODS": "Pods" + "Value #MEM": "Memory %", + "Value #PODS": "Pods", + "instance": "Node", + "node": "Node" } } } - ] + ], + "type": "table" }, { "datasource": { @@ -1161,6 +2136,7 @@ "type": "linear" }, "showPoints": "never", + "showValues": false, "spanNulls": false, "stacking": { "group": "A", @@ -1171,12 +2147,14 @@ } }, "mappings": [], + "max": 100, + "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "red", @@ -1184,9 +2162,7 @@ } ] }, - "unit": "percent", - "max": 100, - "min": 0 + "unit": "percent" }, "overrides": [] }, @@ -1194,7 +2170,7 @@ "h": 8, "w": 8, "x": 8, - "y": 14 + "y": 27 }, "id": 12, "options": { @@ -1208,12 +2184,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "desc" } }, - "title": "CPU per Node (24h)", - "type": "timeseries", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -1224,7 +2200,9 @@ "legendFormat": "{{instance}}", "refId": "A" } - ] + ], + "title": "CPU per Node (24h)", + "type": "timeseries" }, { "datasource": { @@ -1260,6 +2238,7 @@ "type": "linear" }, "showPoints": "never", + "showValues": false, "spanNulls": false, "stacking": { "group": "A", @@ -1270,12 +2249,14 @@ } }, "mappings": [], + "max": 100, + "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "green", - "value": null + "value": 0 }, { "color": "red", @@ -1283,9 +2264,7 @@ } ] }, - "unit": "percent", - "max": 100, - "min": 0 + "unit": "percent" }, "overrides": [] }, @@ -1293,7 +2272,7 @@ "h": 8, "w": 8, "x": 16, - "y": 14 + "y": 27 }, "id": 13, "options": { @@ -1307,12 +2286,12 @@ "showLegend": true }, "tooltip": { + "hideZeros": false, "mode": "multi", "sort": "desc" } }, - "title": "Memory per Node (24h)", - "type": "timeseries", + "pluginVersion": "12.3.1", "targets": [ { "datasource": { @@ -1323,7 +2302,9 @@ "legendFormat": "{{instance}}", "refId": "A" } - ] + ], + "title": "Memory per Node (24h)", + "type": "timeseries" }, { "collapsed": false, @@ -1331,7 +2312,7 @@ "h": 1, "w": 24, "x": 0, - "y": 22 + "y": 35 }, "id": 40, "panels": [], @@ -1353,8 +2334,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" } ] }, @@ -1366,7 +2346,7 @@ "h": 8, "w": 8, "x": 0, - "y": 23 + "y": 36 }, "id": 41, "options": { @@ -1387,8 +2367,6 @@ "sizing": "auto", "valueMode": "color" }, - "title": "Top 10 Namespaces by CPU", - "type": "bargauge", "targets": [ { "datasource": { @@ -1396,11 +2374,12 @@ "uid": "${datasource}" }, "expr": "topk(10, sum by(namespace)(rate(container_cpu_usage_seconds_total{container!=\"\"}[5m])))", - "refId": "A", "format": "table", - "instant": true + "instant": true, + "refId": "A" } ], + "title": "Top 10 Namespaces by CPU", "transformations": [ { "id": "organize", @@ -1410,13 +2389,13 @@ "__name__": true, "container": true, "endpoint": true, + "id": true, "instance": true, "job": true, - "service": true, - "uid": true, - "id": true, "metrics_path": true, - "node": true + "node": true, + "service": true, + "uid": true }, "renameByName": {} } @@ -1427,8 +2406,8 @@ "fields": {}, "sort": [ { - "field": "Value", - "desc": true + "desc": true, + "field": "Value" } ] } @@ -1437,7 +2416,8 @@ "id": "rowsToFields", "options": {} } - ] + ], + "type": "bargauge" }, { "datasource": { @@ -1454,8 +2434,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" } ] }, @@ -1467,7 +2446,7 @@ "h": 8, "w": 8, "x": 8, - "y": 23 + "y": 36 }, "id": 42, "options": { @@ -1488,8 +2467,6 @@ "sizing": "auto", "valueMode": "color" }, - "title": "Top 10 Namespaces by Memory", - "type": "bargauge", "targets": [ { "datasource": { @@ -1497,11 +2474,12 @@ "uid": "${datasource}" }, "expr": "topk(10, sum by(namespace)(container_memory_working_set_bytes{container!=\"\"}))", - "refId": "A", "format": "table", - "instant": true + "instant": true, + "refId": "A" } ], + "title": "Top 10 Namespaces by Memory", "transformations": [ { "id": "organize", @@ -1511,13 +2489,13 @@ "__name__": true, "container": true, "endpoint": true, + "id": true, "instance": true, "job": true, - "service": true, - "uid": true, - "id": true, "metrics_path": true, - "node": true + "node": true, + "service": true, + "uid": true }, "renameByName": {} } @@ -1528,8 +2506,8 @@ "fields": {}, "sort": [ { - "field": "Value", - "desc": true + "desc": true, + "field": "Value" } ] } @@ -1538,7 +2516,8 @@ "id": "rowsToFields", "options": {} } - ] + ], + "type": "bargauge" }, { "datasource": { @@ -1584,17 +2563,16 @@ } }, "mappings": [], + "min": 0, "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" } ] }, - "unit": "bytes", - "min": 0 + "unit": "bytes" }, "overrides": [] }, @@ -1602,7 +2580,7 @@ "h": 8, "w": 8, "x": 16, - "y": 23 + "y": 36 }, "id": 43, "options": { @@ -1619,8 +2597,6 @@ "sort": "desc" } }, - "title": "GPU Memory by Namespace", - "type": "timeseries", "targets": [ { "datasource": { @@ -1633,7 +2609,9 @@ "legendFormat": "{{namespace}}", "refId": "A" } - ] + ], + "title": "GPU Memory by Namespace", + "type": "timeseries" }, { "collapsed": false, @@ -1641,7 +2619,7 @@ "h": 1, "w": 24, "x": 0, - "y": 31 + "y": 44 }, "id": 80, "panels": [], @@ -1658,286 +2636,16 @@ "color": { "mode": "thresholds" }, - "mappings": [], - "max": 100, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "orange", - "value": 50 - }, - { - "color": "green", - "value": 80 - } - ] - }, - "unit": "percent", - "decimals": 1 - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 4, - "x": 8, - "y": 32 - }, - "id": 83, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "title": "DNS Cache Hit %", - "type": "stat", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "sum(rate(coredns_cache_hits_total[5m])) / (sum(rate(coredns_cache_hits_total[5m])) + sum(rate(coredns_cache_misses_total[5m]))) * 100", - "legendFormat": "", - "refId": "A" - } - ] - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, + "decimals": 0, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { - "color": "blue", - "value": null + "color": "blue" } ] - }, - "unit": "reqps", - "decimals": 1 - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 4, - "x": 12, - "y": 32 - }, - "id": 84, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "title": "Traefik req/s", - "type": "stat", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "sum(rate(traefik_entrypoint_requests_total[5m]))", - "legendFormat": "", - "refId": "A" - } - ] - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "orange", - "value": 5 - }, - { - "color": "red", - "value": 15 - } - ] - }, - "unit": "percent", - "noValue": "0", - "decimals": 1 - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 4, - "x": 16, - "y": 32 - }, - "id": 85, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "title": "Traefik Error %", - "type": "stat", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "sum(rate(traefik_entrypoint_requests_total{code=~\"[45]..\"}[5m])) / sum(rate(traefik_entrypoint_requests_total[5m])) * 100", - "legendFormat": "", - "refId": "A" - } - ] - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "max": 100, - "min": 0, - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "red", - "value": null - }, - { - "color": "orange", - "value": 50 - }, - { - "color": "green", - "value": 80 - } - ] - }, - "unit": "percent", - "decimals": 1 - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 4, - "x": 20, - "y": 32 - }, - "id": 86, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "textMode": "auto" - }, - "title": "Registry Cache %", - "type": "stat", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "expr": "sum(registry_registry_storage_cache_total{type=\"Hit\"}) / sum(registry_registry_storage_cache_total) * 100", - "legendFormat": "", - "refId": "A" - } - ] - }, - { - "datasource": { - "type": "prometheus", - "uid": "${datasource}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "blue", - "value": null - } - ] - }, - "decimals": 0 + } }, "overrides": [] }, @@ -1945,7 +2653,7 @@ "h": 4, "w": 4, "x": 0, - "y": 36 + "y": 45 }, "id": 87, "options": { @@ -1962,8 +2670,6 @@ }, "textMode": "auto" }, - "title": "Open Connections", - "type": "stat", "targets": [ { "datasource": { @@ -1974,7 +2680,9 @@ "legendFormat": "", "refId": "A" } - ] + ], + "title": "Open Connections", + "type": "stat" }, { "datasource": { @@ -1986,18 +2694,27 @@ "color": { "mode": "thresholds" }, + "decimals": 1, "mappings": [], + "max": 100, + "min": 0, "thresholds": { "mode": "absolute", "steps": [ { - "color": "blue", - "value": null + "color": "red" + }, + { + "color": "orange", + "value": 50 + }, + { + "color": "green", + "value": 80 } ] }, - "unit": "reqps", - "decimals": 1 + "unit": "percent" }, "overrides": [] }, @@ -2005,7 +2722,262 @@ "h": 4, "w": 4, "x": 8, - "y": 36 + "y": 45 + }, + "id": 83, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(rate(coredns_cache_hits_total[5m])) / (sum(rate(coredns_cache_hits_total[5m])) + sum(rate(coredns_cache_misses_total[5m]))) * 100", + "legendFormat": "", + "refId": "A" + } + ], + "title": "DNS Cache Hit %", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue" + } + ] + }, + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 12, + "y": 45 + }, + "id": 84, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(rate(traefik_entrypoint_requests_total[5m]))", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Traefik req/s", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "noValue": "0", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green" + }, + { + "color": "orange", + "value": 5 + }, + { + "color": "red", + "value": 15 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 16, + "y": 45 + }, + "id": 85, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(rate(traefik_entrypoint_requests_total{code=~\"[45]..\"}[5m])) / sum(rate(traefik_entrypoint_requests_total[5m])) * 100", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Traefik Error %", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "max": 100, + "min": 0, + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "red" + }, + { + "color": "orange", + "value": 50 + }, + { + "color": "green", + "value": 80 + } + ] + }, + "unit": "percent" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 20, + "y": 45 + }, + "id": 86, + "options": { + "colorMode": "value", + "graphMode": "area", + "justifyMode": "auto", + "orientation": "auto", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": false + }, + "textMode": "auto" + }, + "targets": [ + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "expr": "sum(registry_registry_storage_cache_total{type=\"Hit\"}) / sum(registry_registry_storage_cache_total) * 100", + "legendFormat": "", + "refId": "A" + } + ], + "title": "Registry Cache %", + "type": "stat" + }, + { + "datasource": { + "type": "prometheus", + "uid": "${datasource}" + }, + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "decimals": 1, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "blue" + } + ] + }, + "unit": "reqps" + }, + "overrides": [] + }, + "gridPos": { + "h": 4, + "w": 4, + "x": 8, + "y": 49 }, "id": 89, "options": { @@ -2022,8 +2994,6 @@ }, "textMode": "auto" }, - "title": "DNS req/s", - "type": "stat", "targets": [ { "datasource": { @@ -2034,7 +3004,9 @@ "legendFormat": "", "refId": "A" } - ] + ], + "title": "DNS req/s", + "type": "stat" }, { "datasource": { @@ -2046,13 +3018,13 @@ "color": { "mode": "thresholds" }, + "decimals": 3, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -2064,8 +3036,7 @@ } ] }, - "unit": "s", - "decimals": 3 + "unit": "s" }, "overrides": [] }, @@ -2073,7 +3044,7 @@ "h": 4, "w": 4, "x": 12, - "y": 36 + "y": 49 }, "id": 90, "options": { @@ -2090,8 +3061,6 @@ }, "textMode": "auto" }, - "title": "DNS Latency P99", - "type": "stat", "targets": [ { "datasource": { @@ -2102,7 +3071,9 @@ "legendFormat": "", "refId": "A" } - ] + ], + "title": "DNS Latency P99", + "type": "stat" }, { "datasource": { @@ -2114,13 +3085,13 @@ "color": { "mode": "thresholds" }, + "decimals": 2, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -2132,8 +3103,7 @@ } ] }, - "unit": "s", - "decimals": 2 + "unit": "s" }, "overrides": [] }, @@ -2141,7 +3111,7 @@ "h": 4, "w": 4, "x": 16, - "y": 36 + "y": 49 }, "id": 91, "options": { @@ -2158,8 +3128,6 @@ }, "textMode": "auto" }, - "title": "Ingress Latency P99", - "type": "stat", "targets": [ { "datasource": { @@ -2170,7 +3138,9 @@ "legendFormat": "", "refId": "A" } - ] + ], + "title": "Ingress Latency P99", + "type": "stat" }, { "collapsed": false, @@ -2178,7 +3148,7 @@ "h": 1, "w": 24, "x": 0, - "y": 40 + "y": 53 }, "id": 1, "panels": [], @@ -2200,8 +3170,7 @@ "mode": "absolute", "steps": [ { - "color": "red", - "value": null + "color": "red" }, { "color": "orange", @@ -2220,7 +3189,7 @@ "h": 4, "w": 4, "x": 0, - "y": 41 + "y": 54 }, "id": 2, "options": { @@ -2237,8 +3206,6 @@ }, "textMode": "auto" }, - "title": "Nodes Ready", - "type": "stat", "targets": [ { "datasource": { @@ -2249,7 +3216,9 @@ "legendFormat": "Ready", "refId": "A" } - ] + ], + "title": "Nodes Ready", + "type": "stat" }, { "datasource": { @@ -2266,8 +3235,7 @@ "mode": "absolute", "steps": [ { - "color": "blue", - "value": null + "color": "blue" } ] } @@ -2278,7 +3246,7 @@ "h": 4, "w": 4, "x": 4, - "y": 41 + "y": 54 }, "id": 3, "options": { @@ -2295,8 +3263,6 @@ }, "textMode": "auto" }, - "title": "Total Pods", - "type": "stat", "targets": [ { "datasource": { @@ -2307,7 +3273,9 @@ "legendFormat": "Pods", "refId": "A" } - ] + ], + "title": "Total Pods", + "type": "stat" }, { "datasource": { @@ -2330,20 +3298,19 @@ "type": "value" } ], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", "value": 1 } ] - }, - "noValue": "0" + } }, "overrides": [] }, @@ -2351,7 +3318,7 @@ "h": 4, "w": 4, "x": 8, - "y": 41 + "y": 54 }, "id": 4, "options": { @@ -2368,8 +3335,6 @@ }, "textMode": "auto" }, - "title": "Firing Alerts", - "type": "stat", "targets": [ { "datasource": { @@ -2380,7 +3345,9 @@ "legendFormat": "Firing", "refId": "A" } - ] + ], + "title": "Firing Alerts", + "type": "stat" }, { "datasource": { @@ -2399,8 +3366,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -2420,7 +3386,7 @@ "h": 4, "w": 4, "x": 12, - "y": 41 + "y": 54 }, "id": 5, "options": { @@ -2437,8 +3403,6 @@ "showThresholdLabels": false, "showThresholdMarkers": true }, - "title": "Cluster CPU %", - "type": "gauge", "targets": [ { "datasource": { @@ -2449,7 +3413,9 @@ "legendFormat": "CPU", "refId": "A" } - ] + ], + "title": "Cluster CPU %", + "type": "gauge" }, { "datasource": { @@ -2468,8 +3434,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -2489,7 +3454,7 @@ "h": 4, "w": 4, "x": 16, - "y": 41 + "y": 54 }, "id": 6, "options": { @@ -2506,8 +3471,6 @@ "showThresholdLabels": false, "showThresholdMarkers": true }, - "title": "Cluster Memory %", - "type": "gauge", "targets": [ { "datasource": { @@ -2518,7 +3481,9 @@ "legendFormat": "Memory", "refId": "A" } - ] + ], + "title": "Cluster Memory %", + "type": "gauge" }, { "datasource": { @@ -2537,8 +3502,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -2558,7 +3522,7 @@ "h": 4, "w": 4, "x": 20, - "y": 41 + "y": 54 }, "id": 7, "options": { @@ -2575,8 +3539,6 @@ "showThresholdLabels": false, "showThresholdMarkers": true }, - "title": "Cluster Disk %", - "type": "gauge", "targets": [ { "datasource": { @@ -2587,7 +3549,9 @@ "legendFormat": "Disk", "refId": "A" } - ] + ], + "title": "Cluster Disk %", + "type": "gauge" }, { "collapsed": false, @@ -2595,11 +3559,11 @@ "h": 1, "w": 24, "x": 0, - "y": 45 + "y": 58 }, "id": 20, "panels": [], - "title": "Resource Governance \u2014 Quota Utilization", + "title": "Resource Governance — Quota Utilization", "type": "row" }, { @@ -2624,8 +3588,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -2692,7 +3655,7 @@ "h": 8, "w": 12, "x": 0, - "y": 46 + "y": 59 }, "id": 21, "options": { @@ -2713,8 +3676,6 @@ } ] }, - "title": "Quota Usage by Namespace", - "type": "table", "targets": [ { "datasource": { @@ -2739,6 +3700,7 @@ "refId": "HARD" } ], + "title": "Quota Usage by Namespace", "transformations": [ { "id": "merge", @@ -2751,8 +3713,8 @@ "binary": { "left": "Value #USED", "operator": "/", - "right": "Value #HARD", - "reducer": "sum" + "reducer": "sum", + "right": "Value #HARD" }, "mode": "binary", "reduce": { @@ -2766,17 +3728,17 @@ "excludeByName": { "Time": true, "__name__": true, - "job": true, "instance": true, - "type": true, - "resourcequota": true + "job": true, + "resourcequota": true, + "type": true }, "renameByName": { - "namespace": "Namespace", - "resource": "Resource", - "Value #USED": "Used", + "Usage %": "Usage %", "Value #HARD": "Hard Limit", - "Usage %": "Usage %" + "Value #USED": "Used", + "namespace": "Namespace", + "resource": "Resource" } } }, @@ -2798,7 +3760,8 @@ "type": "include" } } - ] + ], + "type": "table" }, { "datasource": { @@ -2817,8 +3780,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -2838,7 +3800,7 @@ "h": 8, "w": 12, "x": 12, - "y": 46 + "y": 59 }, "id": 22, "options": { @@ -2859,8 +3821,6 @@ "sizing": "auto", "valueMode": "color" }, - "title": "Top Quota Consumers", - "type": "bargauge", "targets": [ { "datasource": { @@ -2868,11 +3828,12 @@ "uid": "${datasource}" }, "expr": "topk(15, kube_resourcequota{type=\"used\",resource=~\"requests.cpu|requests.memory|limits.cpu|limits.memory|pods\"} / kube_resourcequota{type=\"hard\",resource=~\"requests.cpu|requests.memory|limits.cpu|limits.memory|pods\"} * 100 > 0)", - "refId": "A", "format": "table", - "instant": true + "instant": true, + "refId": "A" } ], + "title": "Top Quota Consumers", "transformations": [ { "id": "organize", @@ -2880,15 +3841,15 @@ "excludeByName": { "Time": true, "__name__": true, - "job": true, - "instance": true, "endpoint": true, - "service": true, - "uid": true, - "type": true, - "resourcequota": true, + "instance": true, + "job": true, "metrics_path": true, - "resource": true + "resource": true, + "resourcequota": true, + "service": true, + "type": true, + "uid": true }, "renameByName": {} } @@ -2899,8 +3860,8 @@ "fields": {}, "sort": [ { - "field": "Value", - "desc": true + "desc": true, + "field": "Value" } ] } @@ -2909,7 +3870,8 @@ "id": "rowsToFields", "options": {} } - ] + ], + "type": "bargauge" }, { "collapsed": false, @@ -2917,7 +3879,7 @@ "h": 1, "w": 24, "x": 0, - "y": 54 + "y": 67 }, "id": 30, "panels": [], @@ -2935,20 +3897,19 @@ "mode": "thresholds" }, "mappings": [], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", "value": 1 } ] - }, - "noValue": "0" + } }, "overrides": [] }, @@ -2956,7 +3917,7 @@ "h": 4, "w": 3, "x": 0, - "y": 55 + "y": 68 }, "id": 31, "options": { @@ -2973,8 +3934,6 @@ }, "textMode": "auto" }, - "title": "CrashLooping Pods", - "type": "stat", "targets": [ { "datasource": { @@ -2985,7 +3944,9 @@ "legendFormat": "", "refId": "A" } - ] + ], + "title": "CrashLooping Pods", + "type": "stat" }, { "datasource": { @@ -2998,12 +3959,12 @@ "mode": "thresholds" }, "mappings": [], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -3014,8 +3975,7 @@ "value": 5 } ] - }, - "noValue": "0" + } }, "overrides": [] }, @@ -3023,7 +3983,7 @@ "h": 4, "w": 3, "x": 3, - "y": 55 + "y": 68 }, "id": 32, "options": { @@ -3040,8 +4000,6 @@ }, "textMode": "auto" }, - "title": "OOMKilled (24h)", - "type": "stat", "targets": [ { "datasource": { @@ -3052,7 +4010,9 @@ "legendFormat": "", "refId": "A" } - ] + ], + "title": "OOMKilled (24h)", + "type": "stat" }, { "datasource": { @@ -3065,20 +4025,19 @@ "mode": "thresholds" }, "mappings": [], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", "value": 1 } ] - }, - "noValue": "0" + } }, "overrides": [] }, @@ -3086,7 +4045,7 @@ "h": 4, "w": 3, "x": 6, - "y": 55 + "y": 68 }, "id": 33, "options": { @@ -3103,8 +4062,6 @@ }, "textMode": "auto" }, - "title": "Failed Pods", - "type": "stat", "targets": [ { "datasource": { @@ -3115,7 +4072,9 @@ "legendFormat": "", "refId": "A" } - ] + ], + "title": "Failed Pods", + "type": "stat" }, { "datasource": { @@ -3128,12 +4087,12 @@ "mode": "thresholds" }, "mappings": [], + "noValue": "0", "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -3144,8 +4103,7 @@ "value": 5 } ] - }, - "noValue": "0" + } }, "overrides": [] }, @@ -3153,7 +4111,7 @@ "h": 4, "w": 3, "x": 9, - "y": 55 + "y": 68 }, "id": 34, "options": { @@ -3170,8 +4128,6 @@ }, "textMode": "auto" }, - "title": "Pending Pods", - "type": "stat", "targets": [ { "datasource": { @@ -3182,7 +4138,9 @@ "legendFormat": "", "refId": "A" } - ] + ], + "title": "Pending Pods", + "type": "stat" }, { "datasource": { @@ -3228,16 +4186,15 @@ } }, "mappings": [], + "min": 0, "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" } ] - }, - "min": 0 + } }, "overrides": [] }, @@ -3245,7 +4202,7 @@ "h": 8, "w": 12, "x": 12, - "y": 55 + "y": 68 }, "id": 35, "options": { @@ -3262,8 +4219,6 @@ "sort": "desc" } }, - "title": "Restart Rate (24h)", - "type": "timeseries", "targets": [ { "datasource": { @@ -3274,7 +4229,9 @@ "legendFormat": "Total Restarts / hour", "refId": "A" } - ] + ], + "title": "Restart Rate (24h)", + "type": "timeseries" }, { "datasource": { @@ -3298,8 +4255,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -3358,7 +4314,7 @@ "h": 8, "w": 12, "x": 0, - "y": 63 + "y": 72 }, "id": 36, "options": { @@ -3379,8 +4335,6 @@ } ] }, - "title": "High-Restart Pods", - "type": "table", "targets": [ { "datasource": { @@ -3394,6 +4348,7 @@ "refId": "A" } ], + "title": "High-Restart Pods", "transformations": [ { "id": "organize", @@ -3401,21 +4356,22 @@ "excludeByName": { "Time": true, "__name__": true, - "job": true, - "instance": true, - "uid": true, "container": true, "endpoint": true, - "service": true + "instance": true, + "job": true, + "service": true, + "uid": true }, "renameByName": { + "Value": "Restarts", "namespace": "Namespace", - "pod": "Pod", - "Value": "Restarts" + "pod": "Pod" } } } - ] + ], + "type": "table" }, { "collapsed": false, @@ -3423,7 +4379,7 @@ "h": 1, "w": 24, "x": 0, - "y": 71 + "y": 80 }, "id": 50, "panels": [], @@ -3452,8 +4408,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -3544,7 +4499,7 @@ "h": 8, "w": 12, "x": 0, - "y": 72 + "y": 81 }, "id": 51, "options": { @@ -3565,8 +4520,6 @@ } ] }, - "title": "PV Usage Table", - "type": "table", "targets": [ { "datasource": { @@ -3591,6 +4544,7 @@ "refId": "CAP" } ], + "title": "PV Usage Table", "transformations": [ { "id": "merge", @@ -3614,19 +4568,19 @@ "excludeByName": { "Time": true, "__name__": true, - "job": true, - "instance": true, "endpoint": true, - "service": true, + "instance": true, + "job": true, + "metrics_path": true, "node": true, - "metrics_path": true + "service": true }, "renameByName": { - "namespace": "Namespace", - "persistentvolumeclaim": "PVC", - "Value #USED": "Used", + "Used %": "Used %", "Value #CAP": "Capacity", - "Used %": "Used %" + "Value #USED": "Used", + "namespace": "Namespace", + "persistentvolumeclaim": "PVC" } } }, @@ -3648,7 +4602,8 @@ "type": "include" } } - ] + ], + "type": "table" }, { "datasource": { @@ -3667,8 +4622,7 @@ "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "orange", @@ -3688,7 +4642,7 @@ "h": 8, "w": 12, "x": 12, - "y": 72 + "y": 81 }, "id": 52, "options": { @@ -3709,8 +4663,6 @@ "sizing": "auto", "valueMode": "color" }, - "title": "PV Usage Bar", - "type": "bargauge", "targets": [ { "datasource": { @@ -3721,7 +4673,9 @@ "legendFormat": "{{namespace}}/{{persistentvolumeclaim}}", "refId": "A" } - ] + ], + "title": "PV Usage Bar", + "type": "bargauge" }, { "datasource": { @@ -3767,12 +4721,13 @@ } }, "mappings": [], + "max": 100, + "min": 0, "thresholds": { "mode": "absolute", "steps": [ { - "color": "green", - "value": null + "color": "green" }, { "color": "red", @@ -3780,9 +4735,7 @@ } ] }, - "unit": "percent", - "max": 100, - "min": 0 + "unit": "percent" }, "overrides": [ { @@ -3813,7 +4766,7 @@ "h": 8, "w": 24, "x": 0, - "y": 80 + "y": 89 }, "id": 53, "options": { @@ -3831,8 +4784,6 @@ "sort": "desc" } }, - "title": "Node Disk Usage (24h)", - "type": "timeseries", "targets": [ { "datasource": { @@ -3852,7 +4803,9 @@ "legendFormat": "PVE {{id}}", "refId": "B" } - ] + ], + "title": "Node Disk Usage (24h)", + "type": "timeseries" }, { "collapsed": false, @@ -3860,7 +4813,7 @@ "h": 1, "w": 24, "x": 0, - "y": 88 + "y": 97 }, "id": 60, "panels": [], @@ -3889,8 +4842,7 @@ "mode": "absolute", "steps": [ { - "color": "red", - "value": null + "color": "red" }, { "color": "orange", @@ -3941,7 +4893,7 @@ "h": 8, "w": 24, "x": 0, - "y": 89 + "y": 98 }, "id": 61, "options": { @@ -3962,8 +4914,6 @@ } ] }, - "title": "TLS Certificate Expiry", - "type": "table", "targets": [ { "datasource": { @@ -3977,6 +4927,7 @@ "refId": "A" } ], + "title": "TLS Certificate Expiry", "transformations": [ { "id": "organize", @@ -3984,16 +4935,16 @@ "excludeByName": { "Time": true, "__name__": true, - "job": true, - "instance": true, "endpoint": true, - "service": true, - "sans": true + "instance": true, + "job": true, + "sans": true, + "service": true }, "renameByName": { + "Value": "Days Remaining", "cn": "Certificate", - "serial": "Serial", - "Value": "Days Remaining" + "serial": "Serial" } } }, @@ -4003,17 +4954,19 @@ "fields": {}, "sort": [ { - "field": "Days Remaining", - "desc": false + "desc": false, + "field": "Days Remaining" } ] } } - ] + ], + "type": "table" } ], + "preload": false, "refresh": "5m", - "schemaVersion": 39, + "schemaVersion": 42, "tags": [ "cluster-health", "daily-report" @@ -4022,31 +4975,26 @@ "list": [ { "current": { - "selected": false, "text": "Prometheus", "value": "PBFA97CFB590B2093" }, - "hide": 0, "includeAll": false, - "multi": false, "name": "datasource", "options": [], "query": "prometheus", - "queryValue": "", "refresh": 1, "regex": "", - "skipUrlSync": false, "type": "datasource" } ] }, "time": { - "from": "now-24h", + "from": "now-15m", "to": "now" }, "timepicker": {}, "timezone": "", "title": "Cluster Health Overview", "uid": "cluster-health-overview", - "version": 1 + "version": 29 }