2025-11-14 00:02:59 -03:00
# 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 ,
2025-11-15 21:03:11 -03:00
"folderUid": "atlas-public" ,
2025-11-14 00:02:59 -03:00
"graphTooltip": 0 ,
"links": [ ] ,
"panels": [
{
2025-11-15 21:03:11 -03:00
"id": 1 ,
"type": "stat" ,
"title": "Running pods" ,
2025-11-14 00:02:59 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
2025-11-15 21:03:11 -03:00
"gridPos": {
2025-11-16 00:55:28 -03:00
"h": 5 ,
"w": 4 ,
2025-11-15 21:03:11 -03:00
"x": 0 ,
"y": 0
},
"targets": [
{
"expr": "sum(kube_pod_status_phase{phase=\"Running\"})" ,
"refId": "A"
}
] ,
2025-11-14 00:02:59 -03:00
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"mappings": [ ] ,
"thresholds": {
"mode": "absolute" ,
"steps": [
{
2025-11-15 21:03:11 -03:00
"color": "rgba(115, 115, 115, 1)" ,
2025-11-14 00:02:59 -03:00
"value": null
2025-11-15 21:03:11 -03:00
},
{
"color": "green" ,
"value": 1
2025-11-14 00:02:59 -03:00
}
]
},
"unit": "none"
},
"overrides": [ ]
},
"options": {
"colorMode": "value" ,
"graphMode": "area" ,
2025-11-15 21:03:11 -03:00
"justifyMode": "center" ,
2025-11-14 00:02:59 -03:00
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
2025-11-16 00:55:28 -03:00
},
"textMode": "value"
2025-11-15 21:03:11 -03:00
}
},
{
"id": 2 ,
"type": "stat" ,
2025-11-16 00:55:28 -03:00
"title": "Ready nodes" ,
2025-11-15 21:03:11 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
2025-11-16 00:55:28 -03:00
"h": 5 ,
"w": 4 ,
"x": 4 ,
2025-11-15 21:03:11 -03:00
"y": 0
2025-11-14 00:02:59 -03:00
},
"targets": [
{
2025-11-16 00:55:28 -03:00
"expr": "sum(kube_node_status_condition{condition=\"Ready\",status=\"true\"})" ,
2025-11-14 00:02:59 -03:00
"refId": "A"
}
] ,
2025-11-15 21:03:11 -03:00
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"mappings": [ ] ,
"thresholds": {
2025-11-16 00:55:28 -03:00
"mode": "absolute" ,
2025-11-15 21:03:11 -03:00
"steps": [
{
2025-11-16 00:55:28 -03:00
"color": "rgba(115, 115, 115, 1)" ,
2025-11-15 21:03:11 -03:00
"value": null
},
{
2025-11-16 00:55:28 -03:00
"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
2025-11-15 21:03:11 -03:00
},
{
"color": "green" ,
2025-11-16 00:55:28 -03:00
"value": 1
2025-11-15 21:03:11 -03:00
}
]
},
2025-11-16 00:55:28 -03:00
"unit": "none"
2025-11-15 21:03:11 -03:00
},
"overrides": [ ]
},
"options": {
"colorMode": "value" ,
"graphMode": "area" ,
"justifyMode": "center" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
2025-11-16 00:55:28 -03:00
},
"textMode": "value"
2025-11-15 21:03:11 -03:00
}
2025-11-14 00:02:59 -03:00
},
{
2025-11-16 00:55:28 -03:00
"id": 4 ,
2025-11-15 21:03:11 -03:00
"type": "stat" ,
2025-11-16 00:55:28 -03:00
"title": "Hottest node CPU" ,
2025-11-14 00:02:59 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
2025-11-15 21:03:11 -03:00
"gridPos": {
2025-11-16 00:55:28 -03:00
"h": 5 ,
"w": 4 ,
2025-11-15 21:03:11 -03:00
"x": 12 ,
"y": 0
},
"targets": [
{
2025-11-16 00:55:28 -03:00
"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)))" ,
2025-11-15 21:03:11 -03:00
"refId": "A"
}
] ,
2025-11-14 00:02:59 -03:00
"fieldConfig": {
"defaults": {
"color": {
2025-11-15 21:03:11 -03:00
"mode": "palette-classic"
2025-11-14 00:02:59 -03:00
},
"mappings": [ ] ,
"thresholds": {
"mode": "percentage" ,
"steps": [
{
"color": "green" ,
"value": null
},
{
"color": "yellow" ,
2025-11-16 00:55:28 -03:00
"value": 70
2025-11-14 00:02:59 -03:00
},
{
"color": "red" ,
"value": 85
}
]
},
"unit": "percent"
},
"overrides": [ ]
},
2025-11-15 21:03:11 -03:00
"options": {
"colorMode": "value" ,
"graphMode": "area" ,
"justifyMode": "center" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
2025-11-16 00:55:28 -03:00
},
"textMode": "value_and_name"
2025-11-15 21:03:11 -03:00
}
},
{
2025-11-16 00:55:28 -03:00
"id": 5 ,
2025-11-15 21:03:11 -03:00
"type": "stat" ,
2025-11-16 00:55:28 -03:00
"title": "Hottest node memory" ,
2025-11-15 21:03:11 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
2025-11-14 00:02:59 -03:00
"gridPos": {
2025-11-16 00:55:28 -03:00
"h": 5 ,
"w": 4 ,
"x": 16 ,
2025-11-14 00:02:59 -03:00
"y": 0
},
2025-11-15 21:03:11 -03:00
"targets": [
{
2025-11-16 00:55:28 -03:00
"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)))" ,
2025-11-15 21:03:11 -03:00
"refId": "A"
}
] ,
"fieldConfig": {
"defaults": {
"color": {
"mode": "palette-classic"
},
"mappings": [ ] ,
"thresholds": {
"mode": "percentage" ,
"steps": [
{
"color": "green" ,
"value": null
},
{
"color": "yellow" ,
2025-11-16 00:55:28 -03:00
"value": 75
2025-11-15 21:03:11 -03:00
},
{
"color": "red" ,
2025-11-16 00:55:28 -03:00
"value": 90
2025-11-15 21:03:11 -03:00
}
]
},
"unit": "percent"
},
"overrides": [ ]
},
2025-11-14 00:02:59 -03:00
"options": {
"colorMode": "value" ,
"graphMode": "area" ,
2025-11-15 21:03:11 -03:00
"justifyMode": "center" ,
2025-11-14 00:02:59 -03:00
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
2025-11-16 00:55:28 -03:00
},
"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"
2025-11-15 21:03:11 -03:00
}
2025-11-16 00:55:28 -03:00
] ,
"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"
2025-11-15 21:03:11 -03:00
}
},
{
2025-11-16 00:55:28 -03:00
"id": 7 ,
2025-11-15 21:03:11 -03:00
"type": "piechart" ,
"title": "Namespace CPU share" ,
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
"h": 9 ,
"w": 12 ,
"x": 0 ,
2025-11-16 00:55:28 -03:00
"y": 5
2025-11-14 00:02:59 -03:00
},
"targets": [
{
2025-11-16 00:55:28 -03:00
"expr": "topk(10, sum(rate(container_cpu_usage_seconds_total{namespace!=\"\",pod!=\"\",container!=\"\"}[5m])) by (namespace))" ,
2025-11-14 00:02:59 -03:00
"refId": "A"
}
] ,
2025-11-15 21:03:11 -03:00
"fieldConfig": {
"defaults": {
"unit": "cores"
},
"overrides": [ ]
},
"options": {
"legend": {
"displayMode": "list" ,
"placement": "right"
},
"pieType": "pie" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
}
}
2025-11-14 00:02:59 -03:00
},
{
2025-11-16 00:55:28 -03:00
"id": 8 ,
2025-11-15 21:03:11 -03:00
"type": "piechart" ,
"title": "Namespace memory share" ,
2025-11-14 00:02:59 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
2025-11-15 21:03:11 -03:00
"h": 9 ,
2025-11-14 00:02:59 -03:00
"w": 12 ,
2025-11-15 21:03:11 -03:00
"x": 12 ,
2025-11-16 00:55:28 -03:00
"y": 5
2025-11-14 00:02:59 -03:00
},
2025-11-15 11:59:48 -03:00
"targets": [
{
2025-11-16 00:55:28 -03:00
"expr": "topk(10, sum(container_memory_working_set_bytes{namespace!=\"\",pod!=\"\",container!=\"\"}) by (namespace))" ,
2025-11-15 11:59:48 -03:00
"refId": "A"
}
] ,
2025-11-15 21:03:11 -03:00
"fieldConfig": {
"defaults": {
"unit": "bytes"
},
"overrides": [ ]
},
2025-11-14 00:02:59 -03:00
"options": {
2025-11-15 21:03:11 -03:00
"legend": {
"displayMode": "list" ,
"placement": "right"
},
"pieType": "donut" ,
2025-11-15 11:59:48 -03:00
"reduceOptions": {
2025-11-15 21:03:11 -03:00
"calcs": [
"lastNotNull"
] ,
2025-11-15 11:59:48 -03:00
"fields": "" ,
"values": false
2025-11-15 21:03:11 -03:00
}
2025-11-15 11:59:48 -03:00
}
},
{
2025-11-16 00:55:28 -03:00
"id": 9 ,
2025-11-15 21:03:11 -03:00
"type": "timeseries" ,
"title": "Node CPU usage (per node)" ,
2025-11-15 11:59:48 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
"h": 8 ,
"w": 12 ,
"x": 0 ,
2025-11-16 00:55:28 -03:00
"y": 14
2025-11-15 11:59:48 -03:00
},
"targets": [
{
2025-11-16 00:55:28 -03:00
"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))" ,
2025-11-15 21:03:11 -03:00
"refId": "A" ,
2025-11-16 00:55:28 -03:00
"legendFormat": "{{node}}"
2025-11-15 21:03:11 -03:00
}
] ,
"fieldConfig": {
"defaults": {
"unit": "percent"
},
"overrides": [ ]
},
"options": {
"legend": {
"displayMode": "table" ,
"placement": "bottom"
2025-11-14 00:02:59 -03:00
},
2025-11-15 21:03:11 -03:00
"tooltip": {
"mode": "multi"
}
}
},
{
2025-11-16 00:55:28 -03:00
"id": 10 ,
2025-11-15 21:03:11 -03:00
"type": "timeseries" ,
"title": "Node memory usage (per node)" ,
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
"h": 8 ,
"w": 12 ,
"x": 12 ,
2025-11-16 00:55:28 -03:00
"y": 14
2025-11-15 21:03:11 -03:00
},
"targets": [
2025-11-15 11:59:48 -03:00
{
2025-11-16 00:55:28 -03:00
"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))" ,
2025-11-15 21:03:11 -03:00
"refId": "A" ,
2025-11-16 00:55:28 -03:00
"legendFormat": "{{node}}"
2025-11-14 00:02:59 -03:00
}
2025-11-15 11:59:48 -03:00
] ,
2025-11-15 21:03:11 -03:00
"fieldConfig": {
"defaults": {
"unit": "percent"
},
"overrides": [ ]
},
2025-11-15 11:59:48 -03:00
"options": {
"legend": {
"displayMode": "table" ,
2025-11-15 21:03:11 -03:00
"placement": "bottom"
2025-11-15 11:59:48 -03:00
},
2025-11-15 21:03:11 -03:00
"tooltip": {
"mode": "multi"
}
2025-11-15 11:59:48 -03:00
}
},
{
2025-11-16 00:55:28 -03:00
"id": 11 ,
2025-11-15 21:03:11 -03:00
"type": "table" ,
"title": "Key service availability" ,
2025-11-15 11:59:48 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
2025-11-14 00:02:59 -03:00
},
2025-11-16 00:55:28 -03:00
"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"
},
2025-11-15 11:59:48 -03:00
"gridPos": {
"h": 8 ,
"w": 12 ,
"x": 0 ,
2025-11-16 00:55:28 -03:00
"y": 29
2025-11-15 11:59:48 -03:00
},
2025-11-14 00:02:59 -03:00
"targets": [
{
2025-11-16 00:55:28 -03:00
"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)))" ,
2025-11-14 00:02:59 -03:00
"refId": "A"
}
] ,
2025-11-15 11:59:48 -03:00
"fieldConfig": {
"defaults": {
2025-11-16 00:55:28 -03:00
"unit": "percent" ,
"min": 0 ,
"max": 100
},
"overrides": [ ]
},
"options": {
"displayMode": "gradient" ,
"orientation": "horizontal" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
2025-11-15 21:03:11 -03:00
] ,
2025-11-16 00:55:28 -03:00
"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": [ ] ,
2025-11-15 11:59:48 -03:00
"thresholds": {
2025-11-16 00:55:28 -03:00
"mode": "percentage" ,
2025-11-15 11:59:48 -03:00
"steps": [
2025-11-16 00:55:28 -03:00
{
"color": "green" ,
"value": null
},
{
"color": "yellow" ,
"value": 70
},
2025-11-15 21:03:11 -03:00
{
"color": "red" ,
2025-11-16 00:55:28 -03:00
"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)" ,
2025-11-15 21:03:11 -03:00
"value": null
},
{
"color": "green" ,
"value": 1
}
2025-11-15 11:59:48 -03:00
]
2025-11-16 00:55:28 -03:00
},
"unit": "bytesSI"
2025-11-15 11:59:48 -03:00
},
"overrides": [ ]
},
"options": {
2025-11-16 00:55:28 -03:00
"colorMode": "value" ,
"graphMode": "area" ,
"justifyMode": "center" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
},
"textMode": "value"
2025-11-15 11:59:48 -03:00
}
2025-11-15 21:03:11 -03:00
},
{
2025-11-16 00:55:28 -03:00
"id": 18 ,
"type": "stat" ,
"title": "Asteria schedulable" ,
2025-11-15 21:03:11 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
2025-11-16 00:55:28 -03:00
"h": 7 ,
"w": 6 ,
"x": 18 ,
"y": 37
2025-11-15 21:03:11 -03:00
},
"targets": [
{
2025-11-16 00:55:28 -03:00
"expr": "(sum(longhorn_disk_capacity_bytes{disk=~\"asteria-.*\"}) - sum(longhorn_disk_usage_bytes{disk=~\"asteria-.*\"}) - sum(longhorn_disk_reservation_bytes{disk=~\"asteria-.*\"}))" ,
2025-11-15 21:03:11 -03:00
"refId": "A"
}
] ,
"fieldConfig": {
"defaults": {
2025-11-16 00:55:28 -03:00
"color": {
"mode": "palette-classic"
},
"mappings": [ ] ,
"thresholds": {
"mode": "absolute" ,
"steps": [
{
"color": "rgba(115, 115, 115, 1)" ,
"value": null
},
{
"color": "green" ,
"value": 1
}
]
},
"unit": "bytesSI"
2025-11-15 21:03:11 -03:00
},
"overrides": [ ]
},
"options": {
2025-11-16 00:55:28 -03:00
"colorMode": "value" ,
"graphMode": "area" ,
"justifyMode": "center" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
},
"textMode": "value"
2025-11-15 21:03:11 -03:00
}
},
{
2025-11-16 00:55:28 -03:00
"id": 19 ,
"type": "piechart" ,
"title": "Longhorn node readiness" ,
2025-11-15 21:03:11 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
2025-11-16 00:55:28 -03:00
"h": 7 ,
2025-11-15 21:03:11 -03:00
"w": 12 ,
"x": 0 ,
2025-11-16 00:55:28 -03:00
"y": 44
2025-11-15 21:03:11 -03:00
},
"targets": [
{
2025-11-16 00:55:28 -03:00
"expr": "sum(longhorn_node_status{condition=\"ready\"})" ,
2025-11-15 21:03:11 -03:00
"refId": "A" ,
2025-11-16 00:55:28 -03:00
"legendFormat": "Ready"
2025-11-15 21:03:11 -03:00
},
{
2025-11-16 00:55:28 -03:00
"expr": "(longhorn_node_count_total - sum(longhorn_node_status{condition=\"ready\"}))" ,
2025-11-15 21:03:11 -03:00
"refId": "B" ,
2025-11-16 00:55:28 -03:00
"legendFormat": "Offline"
2025-11-15 21:03:11 -03:00
}
] ,
"fieldConfig": {
"defaults": {
2025-11-16 00:55:28 -03:00
"unit": "none"
2025-11-15 21:03:11 -03:00
},
"overrides": [ ]
},
"options": {
"legend": {
2025-11-16 00:55:28 -03:00
"displayMode": "list" ,
"placement": "right"
2025-11-15 21:03:11 -03:00
},
2025-11-16 00:55:28 -03:00
"pieType": "donut" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
2025-11-15 21:03:11 -03:00
}
}
},
{
2025-11-16 00:55:28 -03:00
"id": 20 ,
"type": "piechart" ,
"title": "Longhorn disk schedulability" ,
2025-11-15 21:03:11 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
2025-11-16 00:55:28 -03:00
"h": 7 ,
2025-11-15 21:03:11 -03:00
"w": 12 ,
"x": 12 ,
2025-11-16 00:55:28 -03:00
"y": 44
2025-11-15 21:03:11 -03:00
},
"targets": [
{
2025-11-16 00:55:28 -03:00
"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"
2025-11-15 21:03:11 -03:00
}
] ,
"fieldConfig": {
"defaults": {
2025-11-16 00:55:28 -03:00
"unit": "none"
2025-11-15 21:03:11 -03:00
},
"overrides": [ ]
},
"options": {
"legend": {
"displayMode": "list" ,
2025-11-16 00:55:28 -03:00
"placement": "right"
},
"pieType": "donut" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
2025-11-15 21:03:11 -03:00
}
}
},
{
2025-11-16 00:55:28 -03:00
"id": 21 ,
2025-11-15 21:03:11 -03:00
"type": "text" ,
"title": "About this dashboard" ,
"gridPos": {
2025-11-16 00:55:28 -03:00
"h": 5 ,
2025-11-15 21:03:11 -03:00
"w": 24 ,
"x": 0 ,
2025-11-16 00:55:28 -03:00
"y": 51
2025-11-15 21:03:11 -03:00
},
"options": {
2025-11-16 00:55:28 -03:00
"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"
2025-11-15 21:03:11 -03:00
}
2025-11-14 00:02:59 -03:00
}
] ,
"refresh": "30s" ,
"schemaVersion": 39 ,
"style": "dark" ,
"tags": [
"atlas" ,
"public"
] ,
"templating": {
"list": [ ]
},
"time": {
2025-11-15 11:59:48 -03:00
"from": "now-12h" ,
2025-11-14 00:02:59 -03:00
"to": "now"
},
"title": "Atlas Public Overview" ,
"uid": "atlas-public" ,
2025-11-16 00:55:28 -03:00
"version": 5
2025-11-14 00:02:59 -03:00
}