2026-04-03 14:55:16 -03:00
# services/monitoring/grafana-dashboard-power.yaml
apiVersion : v1
kind : ConfigMap
metadata :
name : grafana-dashboard-power
labels :
grafana_dashboard : "1"
data :
atlas-power.json : |
{
"uid": "atlas-power" ,
"title": "Atlas Power" ,
"folderUid": "atlas-internal" ,
"editable": true ,
"panels": [
{
"id": 1 ,
2026-04-12 19:56:12 -03:00
"type": "stat" ,
2026-04-03 20:45:40 -03:00
"title": "UPS Current Load" ,
2026-04-03 14:55:16 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
2026-04-03 20:45:40 -03:00
"h": 8 ,
"w": 12 ,
2026-04-03 14:55:16 -03:00
"x": 0 ,
"y": 0
},
"targets": [
{
2026-04-12 22:53:23 -03:00
"expr": "label_replace(label_replace((max((ananke_ups_load_percent{job=\"ananke-power\",source=\"Pyrphoros\"} * ananke_ups_power_nominal_watts{job=\"ananke-power\",source=\"Pyrphoros\"}) / 100) or on() vector(0)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Draw\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)), \"ups\", \"Pyrphoros\", \"__name__\", \".*\"), \"metric\", \"Runtime\", \"__name__\", \".*\") or label_replace(label_replace((max((ananke_ups_load_percent{job=\"ananke-power\",source=\"Statera\"} * ananke_ups_power_nominal_watts{job=\"ananke-power\",source=\"Statera\"}) / 100) or on() vector(0)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Draw\", \"__name__\", \".*\") or label_replace(label_replace((max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)), \"ups\", \"Statera\", \"__name__\", \".*\"), \"metric\", \"Runtime\", \"__name__\", \".*\")" ,
2026-04-03 14:55:16 -03:00
"refId": "A" ,
2026-04-12 19:56:12 -03:00
"legendFormat": "{{ups}} {{metric}}" ,
2026-04-03 14:55:16 -03:00
"instant": true
}
] ,
"fieldConfig": {
"defaults": {
2026-04-12 19:56:12 -03:00
"color": {
"mode": "thresholds"
},
"mappings": [ ] ,
"thresholds": {
"mode": "absolute" ,
"steps": [
{
"color": "rgba(115, 115, 115, 1)" ,
"value": null
},
{
"color": "green" ,
"value": 1
}
]
},
2026-04-03 14:55:16 -03:00
"unit": "none" ,
"custom": {
2026-04-12 19:56:12 -03:00
"displayMode": "auto"
},
"decimals": 1
2026-04-03 14:55:16 -03:00
},
2026-04-03 20:45:40 -03:00
"overrides": [
{
"matcher": {
2026-04-12 19:56:12 -03:00
"id": "byRegexp" ,
2026-04-12 21:32:48 -03:00
"options": ".*Draw$"
2026-04-03 20:45:40 -03:00
},
"properties": [
{
"id": "unit" ,
"value": "watt"
}
]
},
{
"matcher": {
2026-04-12 19:56:12 -03:00
"id": "byRegexp" ,
2026-04-12 21:32:48 -03:00
"options": ".*Runtime$"
2026-04-03 20:45:40 -03:00
},
"properties": [
{
"id": "unit" ,
"value": "s"
}
]
}
]
2026-04-03 14:55:16 -03:00
},
"options": {
2026-04-12 19:56:12 -03:00
"colorMode": "value" ,
"graphMode": "area" ,
"justifyMode": "center" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
2026-04-12 19:46:39 -03:00
},
2026-04-12 19:56:12 -03:00
"textMode": "name_and_value" ,
2026-04-12 22:14:59 -03:00
"orientation": "vertical" ,
2026-04-12 22:03:13 -03:00
"wideLayout": false ,
"text": {
"titleSize": 14 ,
"valueSize": 24
}
2026-04-12 19:56:12 -03:00
},
"description": "Per-UPS live snapshot: draw, discharge runtime, and charging/discharging status."
2026-04-03 14:55:16 -03:00
},
{
"id": 2 ,
2026-04-03 20:45:40 -03:00
"type": "timeseries" ,
"title": "UPS History (Power Draw)" ,
2026-04-03 14:55:16 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
2026-04-03 20:45:40 -03:00
"h": 8 ,
"w": 12 ,
"x": 12 ,
2026-04-03 14:55:16 -03:00
"y": 0
},
"targets": [
{
"refId": "A" ,
2026-04-08 23:33:17 -03:00
"expr": "((ananke_ups_load_percent{job=\"ananke-power\",source=\"Pyrphoros\"} * ananke_ups_power_nominal_watts{job=\"ananke-power\",source=\"Pyrphoros\"}) / 100)" ,
2026-04-04 05:54:16 -03:00
"legendFormat": "Pyrphoros"
2026-04-03 20:45:40 -03:00
},
{
"refId": "B" ,
2026-04-08 23:33:17 -03:00
"expr": "((ananke_ups_load_percent{job=\"ananke-power\",source=\"Statera\"} * ananke_ups_power_nominal_watts{job=\"ananke-power\",source=\"Statera\"}) / 100)" ,
2026-04-04 05:54:16 -03:00
"legendFormat": "Statera"
2026-04-03 14:55:16 -03:00
}
] ,
"fieldConfig": {
"defaults": {
2026-04-03 20:45:40 -03:00
"unit": "watt"
2026-04-03 14:55:16 -03:00
},
"overrides": [ ]
},
"options": {
2026-04-03 20:45:40 -03:00
"legend": {
"displayMode": "table" ,
"placement": "right"
2026-04-03 14:55:16 -03:00
},
2026-04-03 20:45:40 -03:00
"tooltip": {
"mode": "multi"
}
},
2026-04-19 14:50:24 -03:00
"description": "Historical UPS power consumption in watts for titan-db and tethys."
2026-04-03 14:55:16 -03:00
},
{
"id": 3 ,
2026-04-12 19:56:12 -03:00
"type": "stat" ,
2026-04-03 20:45:40 -03:00
"title": "Current Climate" ,
2026-04-03 14:55:16 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
2026-04-03 20:45:40 -03:00
"h": 8 ,
"w": 12 ,
"x": 0 ,
"y": 8
2026-04-03 14:55:16 -03:00
},
"targets": [
{
2026-04-14 00:31:38 -03:00
"expr": "label_replace((max(max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_temperature_celsius != 0)) or on() vector(0)), \"metric\", \"Temp \u00b0C\", \"__name__\", \".*\") or label_replace((max((max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_temperature_celsius != 0)) * 9 / 5 + 32) or on() vector(0)), \"metric\", \"Temp \u00b0F\", \"__name__\", \".*\") or label_replace((max(max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_relative_humidity_percent != 0)) or on() vector(0)), \"metric\", \"Humidity\", \"__name__\", \".*\") or label_replace((max(max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_vpd_kpa != 0)) or on() vector(0)), \"metric\", \"Pressure\", \"__name__\", \".*\")" ,
2026-04-03 14:55:16 -03:00
"refId": "A" ,
2026-04-12 19:56:12 -03:00
"legendFormat": "{{metric}}" ,
2026-04-03 14:55:16 -03:00
"instant": true
}
] ,
"fieldConfig": {
"defaults": {
2026-04-12 19:56:12 -03:00
"color": {
"mode": "thresholds"
},
"mappings": [ ] ,
"thresholds": {
"mode": "absolute" ,
"steps": [
{
"color": "rgba(115, 115, 115, 1)" ,
"value": null
},
{
"color": "green" ,
"value": 1
}
]
},
2026-04-03 20:45:40 -03:00
"unit": "none" ,
2026-04-03 14:55:16 -03:00
"custom": {
2026-04-12 19:56:12 -03:00
"displayMode": "auto"
},
"decimals": 2
2026-04-03 14:55:16 -03:00
},
2026-04-03 20:45:40 -03:00
"overrides": [
{
"matcher": {
"id": "byName" ,
2026-04-12 19:46:39 -03:00
"options": "Temp \u00b0C"
2026-04-03 20:45:40 -03:00
},
"properties": [
{
"id": "unit" ,
"value": "celsius"
}
]
},
{
"matcher": {
"id": "byName" ,
2026-04-12 19:46:39 -03:00
"options": "Temp \u00b0F"
2026-04-03 20:45:40 -03:00
},
"properties": [
{
"id": "unit" ,
2026-04-12 17:56:54 -03:00
"value": "fahrenheit"
2026-04-12 17:28:15 -03:00
}
]
},
{
"matcher": {
"id": "byName" ,
2026-04-12 19:46:39 -03:00
"options": "Humidity"
2026-04-12 17:28:15 -03:00
},
"properties": [
{
"id": "unit" ,
"value": "percent"
}
]
},
{
"matcher": {
"id": "byName" ,
2026-04-12 19:46:39 -03:00
"options": "Pressure"
2026-04-12 17:28:15 -03:00
},
"properties": [
{
"id": "unit" ,
2026-04-12 17:56:54 -03:00
"value": "suffix:kPa"
2026-04-03 20:45:40 -03:00
}
]
}
]
2026-04-03 14:55:16 -03:00
},
"options": {
2026-04-12 19:56:12 -03:00
"colorMode": "value" ,
"graphMode": "area" ,
"justifyMode": "center" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
2026-04-12 19:46:39 -03:00
},
2026-04-12 19:56:12 -03:00
"textMode": "name_and_value" ,
2026-04-12 20:11:37 -03:00
"orientation": "vertical" ,
2026-04-12 22:03:13 -03:00
"wideLayout": false ,
"text": {
"titleSize": 16 ,
"valueSize": 28
}
2026-04-12 19:56:12 -03:00
},
"description": "Current tent values: Temp \u00b0C, Temp \u00b0F, Humidity, Pressure."
2026-04-03 14:55:16 -03:00
},
{
"id": 4 ,
2026-04-03 20:45:40 -03:00
"type": "timeseries" ,
"title": "Climate History" ,
2026-04-03 14:55:16 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
2026-04-03 20:45:40 -03:00
"h": 8 ,
"w": 12 ,
"x": 12 ,
"y": 8
2026-04-03 14:55:16 -03:00
},
"targets": [
{
"refId": "A" ,
2026-04-14 00:31:38 -03:00
"expr": "max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_temperature_celsius != 0)" ,
2026-04-03 20:45:40 -03:00
"legendFormat": "Temperature (\u00b0C)"
},
{
"refId": "B" ,
2026-04-14 00:31:38 -03:00
"expr": "(max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_temperature_celsius != 0)) * 9 / 5 + 32" ,
2026-04-12 17:56:54 -03:00
"legendFormat": "Temperature (\u00b0F)"
2026-04-12 17:28:15 -03:00
},
{
"refId": "C" ,
2026-04-14 00:31:38 -03:00
"expr": "max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_relative_humidity_percent != 0)" ,
2026-04-12 17:56:54 -03:00
"legendFormat": "Humidity (%)"
2026-04-12 17:28:15 -03:00
},
{
"refId": "D" ,
2026-04-14 00:31:38 -03:00
"expr": "max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_vpd_kpa != 0)" ,
2026-04-12 17:56:54 -03:00
"legendFormat": "Pressure (VPD kPa)"
2026-04-03 14:55:16 -03:00
}
] ,
"fieldConfig": {
"defaults": {
2026-04-12 22:53:23 -03:00
"unit": "none"
2026-04-03 20:45:40 -03:00
},
"overrides": [
2026-04-12 22:53:23 -03:00
{
"matcher": {
"id": "byName" ,
"options": "Temperature (\u00b0C)"
},
"properties": [
{
"id": "unit" ,
"value": "suffix:\u00b0C"
},
{
"id": "decimals" ,
"value": 2
},
{
"id": "custom.axisCenteredZero" ,
"value": false
}
]
},
2026-04-03 20:45:40 -03:00
{
"matcher": {
"id": "byName" ,
2026-04-12 17:56:54 -03:00
"options": "Temperature (\u00b0F)"
2026-04-12 17:28:15 -03:00
},
"properties": [
{
"id": "unit" ,
2026-04-12 22:53:23 -03:00
"value": "suffix:\u00b0F"
},
{
"id": "decimals" ,
"value": 2
},
{
"id": "custom.axisCenteredZero" ,
"value": false
2026-04-12 17:28:15 -03:00
}
]
},
{
"matcher": {
"id": "byName" ,
2026-04-12 17:56:54 -03:00
"options": "Humidity (%)"
2026-04-03 20:45:40 -03:00
},
"properties": [
2026-04-03 14:55:16 -03:00
{
2026-04-03 20:45:40 -03:00
"id": "unit" ,
2026-04-12 22:53:23 -03:00
"value": "suffix:%"
},
{
"id": "decimals" ,
"value": 2
2026-04-03 14:55:16 -03:00
},
{
2026-04-03 20:45:40 -03:00
"id": "custom.axisPlacement" ,
"value": "right"
2026-04-12 22:53:23 -03:00
},
{
"id": "custom.axisCenteredZero" ,
"value": false
2026-04-12 17:56:54 -03:00
}
]
},
{
"matcher": {
"id": "byName" ,
"options": "Pressure (VPD kPa)"
},
"properties": [
{
"id": "unit" ,
"value": "suffix:kPa"
2026-04-03 14:55:16 -03:00
},
{
2026-04-12 17:56:54 -03:00
"id": "custom.axisPlacement" ,
"value": "right"
2026-04-03 14:55:16 -03:00
},
{
2026-04-03 20:45:40 -03:00
"id": "decimals" ,
"value": 2
2026-04-12 22:53:23 -03:00
},
{
"id": "custom.axisCenteredZero" ,
"value": false
2026-04-03 14:55:16 -03:00
}
]
2026-04-03 20:45:40 -03:00
}
]
2026-04-03 14:55:16 -03:00
},
"options": {
2026-04-03 20:45:40 -03:00
"legend": {
"displayMode": "table" ,
"placement": "right"
2026-04-03 14:55:16 -03:00
},
2026-04-03 20:45:40 -03:00
"tooltip": {
"mode": "multi"
}
},
2026-04-12 17:56:54 -03:00
"description": "Historical tent temperature (C/F), humidity, and pressure proxy (VPD kPa)."
2026-04-03 14:55:16 -03:00
},
{
"id": 5 ,
2026-04-12 19:56:12 -03:00
"type": "stat" ,
2026-04-03 20:45:40 -03:00
"title": "Fan Activity" ,
2026-04-03 14:55:16 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
2026-04-03 20:45:40 -03:00
"h": 8 ,
"w": 12 ,
2026-04-03 14:55:16 -03:00
"x": 0 ,
2026-04-03 20:45:40 -03:00
"y": 16
2026-04-03 14:55:16 -03:00
},
"targets": [
{
2026-04-14 01:18:41 -03:00
"expr": "label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_fan_speed_level{port=\"1\"})) or on() vector(0))), \"metric\", \"Outlet\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_fan_speed_level{port=\"2\"})) or on() vector(0))), \"metric\", \"Inlet - In\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_fan_speed_level{port=\"3\"})) or on() vector(0))), \"metric\", \"Inlet - Out\", \"__name__\", \".*\") or label_replace((round(max(max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_fan_speed_level{port=\"4\"})) or on() vector(0))), \"metric\", \"Interior\", \"__name__\", \".*\")" ,
2026-04-03 14:55:16 -03:00
"refId": "A" ,
2026-04-12 19:56:12 -03:00
"legendFormat": "{{metric}}" ,
2026-04-03 17:49:09 -03:00
"instant": true
2026-04-03 14:55:16 -03:00
}
] ,
"fieldConfig": {
"defaults": {
2026-04-12 19:56:12 -03:00
"color": {
"mode": "thresholds"
},
"mappings": [ ] ,
"thresholds": {
"mode": "absolute" ,
"steps": [
{
"color": "green" ,
"value": null
},
{
"color": "yellow" ,
"value": 7
},
{
"color": "red" ,
"value": 9
}
]
},
2026-04-12 19:46:39 -03:00
"unit": "none" ,
"custom": {
2026-04-12 19:56:12 -03:00
"displayMode": "auto"
},
"decimals": 0
2026-04-12 19:46:39 -03:00
},
"overrides": [
{
"matcher": {
"id": "byName" ,
"options": "Outlet"
},
"properties": [
2026-04-03 17:49:09 -03:00
{
2026-04-12 19:46:39 -03:00
"id": "decimals" ,
"value": 0
}
]
},
{
"matcher": {
"id": "byName" ,
2026-04-14 01:18:41 -03:00
"options": "Inlet - In"
2026-04-12 19:46:39 -03:00
},
"properties": [
2026-04-03 17:49:09 -03:00
{
2026-04-12 19:46:39 -03:00
"id": "decimals" ,
"value": 0
2026-04-03 17:49:09 -03:00
}
]
},
2026-04-12 19:46:39 -03:00
{
"matcher": {
"id": "byName" ,
2026-04-14 01:18:41 -03:00
"options": "Inlet - Out"
2026-04-12 19:46:39 -03:00
},
"properties": [
{
"id": "decimals" ,
"value": 0
}
]
2026-04-03 17:49:09 -03:00
},
2026-04-12 19:46:39 -03:00
{
"matcher": {
"id": "byName" ,
"options": "Interior"
},
"properties": [
{
"id": "decimals" ,
"value": 0
}
]
}
]
2026-04-03 14:55:16 -03:00
},
"options": {
2026-04-12 19:56:12 -03:00
"colorMode": "value" ,
"graphMode": "area" ,
"justifyMode": "center" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
2026-04-12 19:46:39 -03:00
},
2026-04-12 19:56:12 -03:00
"textMode": "name_and_value" ,
2026-04-12 20:11:37 -03:00
"orientation": "vertical" ,
2026-04-12 19:56:12 -03:00
"wideLayout": false
},
"description": "Current fan activity levels: outlet, inlet in, inlet out, interior (0-10)."
2026-04-03 14:55:16 -03:00
},
{
"id": 6 ,
2026-04-03 20:45:40 -03:00
"type": "timeseries" ,
"title": "Fan History (0-10)" ,
2026-04-03 14:55:16 -03:00
"datasource": {
"type": "prometheus" ,
"uid": "atlas-vm"
},
"gridPos": {
2026-04-03 20:45:40 -03:00
"h": 8 ,
"w": 12 ,
"x": 12 ,
"y": 16
2026-04-03 14:55:16 -03:00
},
"targets": [
{
"refId": "A" ,
2026-04-14 00:31:38 -03:00
"expr": "max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_fan_speed_level{port=\"1\"})" ,
"legendFormat": "Outlet"
2026-04-03 20:45:40 -03:00
},
{
"refId": "B" ,
2026-04-14 00:31:38 -03:00
"expr": "max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_fan_speed_level{port=\"2\"})" ,
"legendFormat": "Inlet - Inside"
2026-04-03 20:45:40 -03:00
},
{
"refId": "C" ,
2026-04-14 00:31:38 -03:00
"expr": "max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_fan_speed_level{port=\"3\"})" ,
"legendFormat": "Inlet - Outside"
2026-04-03 20:45:40 -03:00
},
{
"refId": "D" ,
2026-04-14 00:31:38 -03:00
"expr": "max without (job,instance,pod,service,endpoint,namespace,controller_name,port_name,fan_group) (typhon_fan_speed_level{port=\"4\"})" ,
"legendFormat": "Interior"
2026-04-03 14:55:16 -03:00
}
] ,
"fieldConfig": {
"defaults": {
2026-04-03 20:45:40 -03:00
"unit": "none" ,
"max": 10
2026-04-03 14:55:16 -03:00
},
"overrides": [ ]
},
"options": {
2026-04-03 20:45:40 -03:00
"legend": {
"displayMode": "table" ,
"placement": "right"
2026-04-03 17:49:09 -03:00
},
"tooltip": {
"mode": "multi"
}
},
2026-04-03 20:45:40 -03:00
"description": "Historical fan activity for all four fan groups (0-10 scale)."
2026-04-03 14:55:16 -03:00
}
] ,
"time": {
"from": "now-24h" ,
"to": "now"
},
"annotations": {
"list": [ ]
},
"schemaVersion": 39 ,
"style": "dark" ,
"tags": [
"atlas" ,
"power" ,
"climate"
]
}