# services/monitoring/grafana-dashboard-public.yaml apiVersion: v1 kind: ConfigMap metadata: name: grafana-dashboard-public labels: grafana_dashboard: "1" data: atlas-public-overview.json: | { "annotations": { "list": [ { "builtIn": 1, "datasource": { "type": "datasource", "uid": "grafana" }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "type": "dashboard" } ] }, "editable": false, "folderUid": "atlas-public", "graphTooltip": 0, "links": [], "panels": [ { "id": 1, "type": "stat", "title": "Running pods", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 5, "w": 4, "x": 0, "y": 0 }, "targets": [ { "expr": "sum(kube_pod_status_phase{phase=\"Running\"})", "refId": "A" } ], "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "rgba(115, 115, 115, 1)", "value": null }, { "color": "green", "value": 1 } ] }, "unit": "none" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "value" } }, { "id": 2, "type": "stat", "title": "Ready nodes", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 5, "w": 4, "x": 4, "y": 0 }, "targets": [ { "expr": "sum(kube_node_status_condition{condition=\"Ready\",status=\"true\"})", "refId": "A" } ], "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "rgba(115, 115, 115, 1)", "value": null }, { "color": "green", "value": 1 } ] }, "unit": "none" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "value" } }, { "id": 3, "type": "stat", "title": "Cluster nodes", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 5, "w": 4, "x": 8, "y": 0 }, "targets": [ { "expr": "count(kube_node_info)", "refId": "A" } ], "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "rgba(115, 115, 115, 1)", "value": null }, { "color": "green", "value": 1 } ] }, "unit": "none" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "value" } }, { "id": 4, "type": "stat", "title": "Hottest node CPU", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 5, "w": 4, "x": 12, "y": 0 }, "targets": [ { "expr": "topk(1, avg by (node) ((((1 - label_replace(rate(node_cpu_seconds_total{mode=\"idle\"}[5m]), \"internal_ip\", \"$1\", \"instance\", \"([^:]+):.*\")) * 100) * on (internal_ip) group_left(node) kube_node_info)))", "refId": "A" } ], "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "mappings": [], "thresholds": { "mode": "percentage", "steps": [ { "color": "green", "value": null }, { "color": "yellow", "value": 70 }, { "color": "red", "value": 85 } ] }, "unit": "percent" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "value_and_name" } }, { "id": 5, "type": "stat", "title": "Hottest node memory", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 5, "w": 4, "x": 16, "y": 0 }, "targets": [ { "expr": "topk(1, avg by (node) (((label_replace((node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes, \"internal_ip\", \"$1\", \"instance\", \"([^:]+):.*\") * 100) * on (internal_ip) group_left(node) kube_node_info)))", "refId": "A" } ], "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "mappings": [], "thresholds": { "mode": "percentage", "steps": [ { "color": "green", "value": null }, { "color": "yellow", "value": 75 }, { "color": "red", "value": 90 } ] }, "unit": "percent" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "value_and_name" } }, { "id": 6, "type": "stat", "title": "Failed pods (24h)", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 5, "w": 4, "x": 20, "y": 0 }, "targets": [ { "expr": "sum(increase(kube_pod_status_phase{phase=\"Failed\"}[24h]))", "refId": "A" } ], "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "yellow", "value": 1 }, { "color": "red", "value": 3 } ] }, "unit": "none" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "value" } }, { "id": 7, "type": "piechart", "title": "Namespace CPU share", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 5 }, "targets": [ { "expr": "topk(10, sum(rate(container_cpu_usage_seconds_total{namespace!=\"\",pod!=\"\",container!=\"\"}[5m])) by (namespace))", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "cores" }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "right" }, "pieType": "pie", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } } }, { "id": 8, "type": "piechart", "title": "Namespace memory share", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 5 }, "targets": [ { "expr": "topk(10, sum(container_memory_working_set_bytes{namespace!=\"\",pod!=\"\",container!=\"\"}) by (namespace))", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "bytes" }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "right" }, "pieType": "donut", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } } }, { "id": 9, "type": "timeseries", "title": "Node CPU usage (per node)", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 14 }, "targets": [ { "expr": "avg by (node) ((((1 - label_replace(rate(node_cpu_seconds_total{mode=\"idle\"}[5m]), \"internal_ip\", \"$1\", \"instance\", \"([^:]+):.*\")) * 100) * on (internal_ip) group_left(node) kube_node_info))", "refId": "A", "legendFormat": "{{node}}" } ], "fieldConfig": { "defaults": { "unit": "percent" }, "overrides": [] }, "options": { "legend": { "displayMode": "table", "placement": "bottom" }, "tooltip": { "mode": "multi" } } }, { "id": 10, "type": "timeseries", "title": "Node memory usage (per node)", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 14 }, "targets": [ { "expr": "avg by (node) (((label_replace((node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes, \"internal_ip\", \"$1\", \"instance\", \"([^:]+):.*\") * 100) * on (internal_ip) group_left(node) kube_node_info))", "refId": "A", "legendFormat": "{{node}}" } ], "fieldConfig": { "defaults": { "unit": "percent" }, "overrides": [] }, "options": { "legend": { "displayMode": "table", "placement": "bottom" }, "tooltip": { "mode": "multi" } } }, { "id": 11, "type": "table", "title": "Key service availability", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 22 }, "targets": [ { "expr": "label_replace((sum by (deployment,namespace) (kube_deployment_status_replicas_available{deployment=~\"traefik|gitea|grafana\",namespace=~\"traefik|gitea|monitoring\"}) / sum by (deployment,namespace) (kube_deployment_spec_replicas{deployment=~\"traefik|gitea|grafana\",namespace=~\"traefik|gitea|monitoring\"})), \"service\", \"$1\", \"deployment\", \"(.*)\") or label_replace((sum by (statefulset,namespace) (kube_statefulset_status_replicas_ready{statefulset=~\"vault|alertmanager|victoria-metrics-single-server\",namespace=~\"vault|monitoring\"}) / sum by (statefulset,namespace) (kube_statefulset_status_replicas{statefulset=~\"vault|alertmanager|victoria-metrics-single-server\",namespace=~\"vault|monitoring\"})), \"service\", \"$1\", \"statefulset\", \"(.*)\")", "refId": "A" } ], "fieldConfig": { "defaults": { "custom": { "align": "auto" }, "unit": "percent" }, "overrides": [] }, "options": { "showHeader": true } }, { "id": 12, "type": "table", "title": "Failed pods by namespace (24h)", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 22 }, "targets": [ { "expr": "topk(10, sum by (namespace) (increase(kube_pod_status_phase{phase=\"Failed\"}[24h])))", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "none" }, "overrides": [] }, "options": { "showHeader": true } }, { "id": 13, "type": "timeseries", "title": "Root filesystem usage per node", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 29 }, "targets": [ { "expr": "avg by (node) (((label_replace(1 - (node_filesystem_avail_bytes{mountpoint=\"/\",fstype!~\"tmpfs|overlay\"} / node_filesystem_size_bytes{mountpoint=\"/\",fstype!~\"tmpfs|overlay\"}), \"internal_ip\", \"$1\", \"instance\", \"([^:]+):.*\") * 100) * on (internal_ip) group_left(node) kube_node_info))", "refId": "A", "legendFormat": "{{node}}" } ], "fieldConfig": { "defaults": { "unit": "percent" }, "overrides": [] }, "options": { "legend": { "displayMode": "table", "placement": "bottom" }, "tooltip": { "mode": "multi" } } }, { "id": 14, "type": "bargauge", "title": "Nodes closest to full root disks", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 29 }, "targets": [ { "expr": "topk(8, avg by (node) (((label_replace(1 - (node_filesystem_avail_bytes{mountpoint=\"/\",fstype!~\"tmpfs|overlay\"} / node_filesystem_size_bytes{mountpoint=\"/\",fstype!~\"tmpfs|overlay\"}), \"internal_ip\", \"$1\", \"instance\", \"([^:]+):.*\") * 100) * on (internal_ip) group_left(node) kube_node_info)))", "refId": "A" } ], "fieldConfig": { "defaults": { "unit": "percent", "min": 0, "max": 100 }, "overrides": [] }, "options": { "displayMode": "gradient", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } } }, { "id": 15, "type": "stat", "title": "Astreae usage", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 7, "w": 6, "x": 0, "y": 37 }, "targets": [ { "expr": "(sum(longhorn_disk_usage_bytes{disk=~\"astreae-.*\"}) / sum(longhorn_disk_capacity_bytes{disk=~\"astreae-.*\"})) * 100", "refId": "A" } ], "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "mappings": [], "thresholds": { "mode": "percentage", "steps": [ { "color": "green", "value": null }, { "color": "yellow", "value": 70 }, { "color": "red", "value": 85 } ] }, "unit": "percent" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "value" } }, { "id": 16, "type": "stat", "title": "Asteria usage", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 7, "w": 6, "x": 6, "y": 37 }, "targets": [ { "expr": "(sum(longhorn_disk_usage_bytes{disk=~\"asteria-.*\"}) / sum(longhorn_disk_capacity_bytes{disk=~\"asteria-.*\"})) * 100", "refId": "A" } ], "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "mappings": [], "thresholds": { "mode": "percentage", "steps": [ { "color": "green", "value": null }, { "color": "yellow", "value": 70 }, { "color": "red", "value": 85 } ] }, "unit": "percent" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "value" } }, { "id": 17, "type": "stat", "title": "Astreae schedulable", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 7, "w": 6, "x": 12, "y": 37 }, "targets": [ { "expr": "(sum(longhorn_disk_capacity_bytes{disk=~\"astreae-.*\"}) - sum(longhorn_disk_usage_bytes{disk=~\"astreae-.*\"}) - sum(longhorn_disk_reservation_bytes{disk=~\"astreae-.*\"}))", "refId": "A" } ], "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "rgba(115, 115, 115, 1)", "value": null }, { "color": "green", "value": 1 } ] }, "unit": "bytesSI" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "value" } }, { "id": 18, "type": "stat", "title": "Asteria schedulable", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 7, "w": 6, "x": 18, "y": 37 }, "targets": [ { "expr": "(sum(longhorn_disk_capacity_bytes{disk=~\"asteria-.*\"}) - sum(longhorn_disk_usage_bytes{disk=~\"asteria-.*\"}) - sum(longhorn_disk_reservation_bytes{disk=~\"asteria-.*\"}))", "refId": "A" } ], "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "rgba(115, 115, 115, 1)", "value": null }, { "color": "green", "value": 1 } ] }, "unit": "bytesSI" }, "overrides": [] }, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "value" } }, { "id": 19, "type": "piechart", "title": "Longhorn node readiness", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 7, "w": 12, "x": 0, "y": 44 }, "targets": [ { "expr": "sum(longhorn_node_status{condition=\"ready\"})", "refId": "A", "legendFormat": "Ready" }, { "expr": "(longhorn_node_count_total - sum(longhorn_node_status{condition=\"ready\"}))", "refId": "B", "legendFormat": "Offline" } ], "fieldConfig": { "defaults": { "unit": "none" }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "right" }, "pieType": "donut", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } } }, { "id": 20, "type": "piechart", "title": "Longhorn disk schedulability", "datasource": { "type": "prometheus", "uid": "atlas-vm" }, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 44 }, "targets": [ { "expr": "sum(sum by (node,disk) (longhorn_disk_status{condition=\"schedulable\"}))", "refId": "A", "legendFormat": "Schedulable" }, { "expr": "(count(sum by (node,disk) (longhorn_disk_status{condition=\"ready\"})) - sum(sum by (node,disk) (longhorn_disk_status{condition=\"schedulable\"})))", "refId": "B", "legendFormat": "Blocked" } ], "fieldConfig": { "defaults": { "unit": "none" }, "overrides": [] }, "options": { "legend": { "displayMode": "list", "placement": "right" }, "pieType": "donut", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false } } }, { "id": 21, "type": "text", "title": "About this dashboard", "gridPos": { "h": 5, "w": 24, "x": 0, "y": 51 }, "options": { "mode": "markdown", "content": "### Atlas at a glance\n- Flux-managed Pi + Jetson cluster with 20+ active nodes\n- Longhorn tiers: Astreae (3x replicas) & Asteria (2x replicas) tracked separately\n- Login for the SRE view with alert routing, Longhorn drilldowns, and workload burn rates" } } ], "refresh": "30s", "schemaVersion": 39, "style": "dark", "tags": [ "atlas", "public" ], "templating": { "list": [] }, "time": { "from": "now-12h", "to": "now" }, "title": "Atlas Public Overview", "uid": "atlas-public", "version": 5 }