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 ,
"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": [
{
"refId": "A" ,
2026-04-08 23:33:17 -03:00
"expr": "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)" ,
2026-04-04 05:54:16 -03:00
"legendFormat": "Pyrphoros Draw (W)" ,
2026-04-03 20:45:40 -03:00
"instant": true
},
{
"refId": "B" ,
2026-04-08 23:33:17 -03:00
"expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)" ,
2026-04-09 16:35:14 -03:00
"legendFormat": "Pyrphoros Discharge" ,
2026-04-03 20:45:40 -03:00
"instant": true
},
{
"refId": "C" ,
2026-04-08 23:33:17 -03:00
"expr": "max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Pyrphoros\"}) or on() vector(0)" ,
2026-04-04 05:54:16 -03:00
"legendFormat": "Pyrphoros Status" ,
2026-04-03 20:45:40 -03:00
"instant": true
},
{
"refId": "D" ,
2026-04-08 23:33:17 -03:00
"expr": "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)" ,
2026-04-04 05:54:16 -03:00
"legendFormat": "Statera Draw (W)" ,
2026-04-03 20:45:40 -03:00
"instant": true
},
{
"refId": "E" ,
2026-04-08 23:33:17 -03:00
"expr": "max(ananke_ups_runtime_seconds{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)" ,
2026-04-09 16:35:14 -03:00
"legendFormat": "Statera Discharge" ,
2026-04-03 20:45:40 -03:00
"instant": true
},
{
"refId": "F" ,
2026-04-08 23:33:17 -03:00
"expr": "max(ananke_ups_on_battery{job=\"ananke-power\",source=\"Statera\"}) or on() vector(0)" ,
2026-04-04 05:54:16 -03:00
"legendFormat": "Statera Status" ,
2026-04-03 14:55:16 -03:00
"instant": true
}
] ,
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [ ] ,
"thresholds": {
"mode": "absolute" ,
"steps": [
{
2026-04-03 20:45:40 -03:00
"color": "rgba(115, 115, 115, 1)" ,
2026-04-03 14:55:16 -03:00
"value": null
},
{
2026-04-03 20:45:40 -03:00
"color": "green" ,
2026-04-03 17:49:09 -03:00
"value": 1
2026-04-03 14:55:16 -03:00
}
]
},
"unit": "none" ,
"custom": {
"displayMode": "auto"
2026-04-03 20:45:40 -03:00
},
"decimals": 1
2026-04-03 14:55:16 -03:00
},
2026-04-03 20:45:40 -03:00
"overrides": [
{
"matcher": {
"id": "byName" ,
2026-04-04 05:54:16 -03:00
"options": "Pyrphoros Draw (W)"
2026-04-03 20:45:40 -03:00
},
"properties": [
{
"id": "unit" ,
"value": "watt"
2026-04-04 05:54:16 -03:00
},
{
"id": "description" ,
"value": "Attached node: titan-db"
2026-04-03 20:45:40 -03:00
}
]
},
{
"matcher": {
"id": "byName" ,
2026-04-04 05:54:16 -03:00
"options": "Statera Draw (W)"
2026-04-03 20:45:40 -03:00
},
"properties": [
{
"id": "unit" ,
"value": "watt"
2026-04-04 05:54:16 -03:00
},
{
"id": "description" ,
"value": "Attached node: titan-24"
2026-04-03 20:45:40 -03:00
}
]
},
{
"matcher": {
"id": "byName" ,
2026-04-09 16:35:14 -03:00
"options": "Pyrphoros Discharge"
2026-04-03 20:45:40 -03:00
},
"properties": [
{
"id": "unit" ,
"value": "s"
2026-04-04 05:54:16 -03:00
},
{
"id": "description" ,
"value": "Attached node: titan-db"
2026-04-03 20:45:40 -03:00
}
]
},
{
"matcher": {
"id": "byName" ,
2026-04-09 16:35:14 -03:00
"options": "Statera Discharge"
2026-04-03 20:45:40 -03:00
},
"properties": [
{
"id": "unit" ,
"value": "s"
2026-04-04 05:54:16 -03:00
},
{
"id": "description" ,
"value": "Attached node: titan-24"
2026-04-03 20:45:40 -03:00
}
]
},
{
"matcher": {
"id": "byName" ,
2026-04-04 05:54:16 -03:00
"options": "Pyrphoros Status"
2026-04-03 20:45:40 -03:00
},
"properties": [
{
"id": "mappings" ,
"value": [
{
"type": "value" ,
"options": {
"0": {
"text": "\u26a1 Charging"
},
"1": {
"text": "\ud83d\udd0b Discharging"
}
}
}
]
2026-04-04 05:54:16 -03:00
},
{
"id": "description" ,
"value": "Attached node: titan-db"
2026-04-03 20:45:40 -03:00
}
]
},
{
"matcher": {
"id": "byName" ,
2026-04-04 05:54:16 -03:00
"options": "Statera Status"
2026-04-03 20:45:40 -03:00
},
"properties": [
{
"id": "mappings" ,
"value": [
{
"type": "value" ,
"options": {
"0": {
"text": "\u26a1 Charging"
},
"1": {
"text": "\ud83d\udd0b Discharging"
}
}
}
]
2026-04-04 05:54:16 -03:00
},
{
"id": "description" ,
"value": "Attached node: titan-24"
2026-04-03 20:45:40 -03:00
}
]
}
]
2026-04-03 14:55:16 -03:00
},
"options": {
"colorMode": "value" ,
"graphMode": "area" ,
"justifyMode": "center" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
},
2026-04-03 20:45:40 -03:00
"textMode": "name_and_value"
},
"description": "Per-UPS live snapshot: current draw in watts, estimated battery runtime if discharge started now, 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 20:45:40 -03:00
},
{
"refId": "C" ,
2026-04-08 23:33:17 -03:00
"expr": "sum((ananke_ups_load_percent{job=\"ananke-power\"} * ananke_ups_power_nominal_watts{job=\"ananke-power\"}) / 100)" ,
2026-04-03 20:45:40 -03:00
"legendFormat": "combined"
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"
}
},
"description": "Historical UPS power consumption in watts for titan-db, tethys, and combined load."
2026-04-03 14:55:16 -03:00
},
{
"id": 3 ,
"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": [
{
"refId": "A" ,
2026-04-03 20:45:40 -03:00
"expr": "max(atlas_climate_tent_temperature_celsius) or max(atlas_climate_temperature_celsius) or on() vector(0)" ,
"legendFormat": "Tent Temp (\u00b0C)" ,
"instant": true
},
{
"refId": "B" ,
"expr": "max(atlas_climate_tent_pressure_kpa) or max(atlas_climate_pressure_kpa) or on() vector(0)" ,
"legendFormat": "Tent Pressure (kPa)" ,
2026-04-03 14:55:16 -03:00
"instant": true
}
] ,
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [ ] ,
"thresholds": {
"mode": "absolute" ,
"steps": [
{
2026-04-03 20:45:40 -03:00
"color": "rgba(115, 115, 115, 1)" ,
2026-04-03 14:55:16 -03:00
"value": null
},
{
"color": "green" ,
2026-04-03 20:45:40 -03:00
"value": 1
2026-04-03 14:55:16 -03:00
}
]
},
2026-04-03 20:45:40 -03:00
"unit": "none" ,
2026-04-03 14:55:16 -03:00
"custom": {
"displayMode": "auto"
},
2026-04-03 20:45:40 -03:00
"decimals": 2
2026-04-03 14:55:16 -03:00
},
2026-04-03 20:45:40 -03:00
"overrides": [
{
"matcher": {
"id": "byName" ,
"options": "Tent Temp (\u00b0C)"
},
"properties": [
{
"id": "unit" ,
"value": "celsius"
}
]
},
{
"matcher": {
"id": "byName" ,
"options": "Tent Pressure (kPa)"
},
"properties": [
{
"id": "unit" ,
"value": "none"
}
]
}
]
2026-04-03 14:55:16 -03:00
},
"options": {
"colorMode": "value" ,
"graphMode": "area" ,
"justifyMode": "center" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
},
2026-04-03 20:45:40 -03:00
"textMode": "name_and_value"
},
"description": "Current tent temperature and air pressure. These render once climate telemetry is online."
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-03 20:45:40 -03:00
"expr": "(atlas_climate_tent_temperature_celsius or atlas_climate_temperature_celsius)" ,
"legendFormat": "Temperature (\u00b0C)"
},
{
"refId": "B" ,
"expr": "(atlas_climate_tent_pressure_kpa or atlas_climate_pressure_kpa)" ,
"legendFormat": "Pressure (kPa)"
2026-04-03 14:55:16 -03:00
}
] ,
"fieldConfig": {
"defaults": {
2026-04-03 20:45:40 -03:00
"unit": "celsius"
},
"overrides": [
{
"matcher": {
"id": "byName" ,
"options": "Pressure (kPa)"
},
"properties": [
2026-04-03 14:55:16 -03:00
{
2026-04-03 20:45:40 -03:00
"id": "unit" ,
"value": "none"
2026-04-03 14:55:16 -03:00
},
{
2026-04-03 20:45:40 -03:00
"id": "custom.axisPlacement" ,
"value": "right"
2026-04-03 14:55:16 -03:00
},
{
2026-04-03 20:45:40 -03:00
"id": "custom.axisLabel" ,
"value": "kPa"
2026-04-03 14:55:16 -03:00
},
{
2026-04-03 20:45:40 -03:00
"id": "decimals" ,
"value": 2
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"
}
},
"description": "Two-axis chart: tent temperature (left axis) and tent pressure in kPa (right axis)."
2026-04-03 14:55:16 -03:00
},
{
"id": 5 ,
2026-04-03 17:49:09 -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": [
{
"refId": "A" ,
2026-04-04 05:54:16 -03:00
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"outlet\"}) or max(atlas_climate_fan_activity_level{position=\"outlet\"}) or on() vector(0))" ,
2026-04-09 20:10:52 -03:00
"legendFormat": "Inside Outlet" ,
2026-04-03 20:45:40 -03:00
"instant": true
},
{
"refId": "B" ,
2026-04-04 05:54:16 -03:00
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"inside_inlet\"}) or max(atlas_climate_fan_activity_level{position=\"inside_inlet\"}) or on() vector(0))" ,
2026-04-09 20:10:52 -03:00
"legendFormat": "Inside Inlet" ,
2026-04-03 20:45:40 -03:00
"instant": true
},
{
"refId": "C" ,
2026-04-04 05:54:16 -03:00
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"outside_inlet\"}) or max(atlas_climate_fan_activity_level{position=\"outside_inlet\"}) or on() vector(0))" ,
2026-04-09 20:10:52 -03:00
"legendFormat": "Outside Inlet" ,
2026-04-03 20:45:40 -03:00
"instant": true
},
{
"refId": "D" ,
2026-04-04 05:54:16 -03:00
"expr": "round(max(atlas_climate_fan_activity_level{fan_group=\"interior\"}) or max(atlas_climate_fan_activity_level{position=\"interior\"}) or on() vector(0))" ,
2026-04-09 20:10:52 -03:00
"legendFormat": "Interior Fans" ,
2026-04-03 17:49:09 -03:00
"instant": true
2026-04-03 14:55:16 -03:00
}
] ,
"fieldConfig": {
"defaults": {
2026-04-03 17:49:09 -03:00
"color": {
"mode": "thresholds"
},
"mappings": [ ] ,
"thresholds": {
"mode": "absolute" ,
"steps": [
{
2026-04-03 20:45:40 -03:00
"color": "green" ,
2026-04-03 17:49:09 -03:00
"value": null
},
{
"color": "yellow" ,
2026-04-03 20:45:40 -03:00
"value": 7
2026-04-03 17:49:09 -03:00
},
{
2026-04-03 20:45:40 -03:00
"color": "red" ,
"value": 9
2026-04-03 17:49:09 -03:00
}
]
},
2026-04-03 20:45:40 -03:00
"unit": "none" ,
2026-04-03 17:49:09 -03:00
"custom": {
"displayMode": "auto"
},
2026-04-04 05:54:16 -03:00
"decimals": 0
2026-04-03 14:55:16 -03:00
},
"overrides": [ ]
},
"options": {
2026-04-03 17:49:09 -03:00
"colorMode": "value" ,
"graphMode": "area" ,
"justifyMode": "center" ,
"reduceOptions": {
"calcs": [
"lastNotNull"
] ,
"fields": "" ,
"values": false
2026-04-03 14:55:16 -03:00
},
2026-04-03 20:45:40 -03:00
"textMode": "name_and_value"
},
2026-04-09 20:10:52 -03:00
"description": "Current fan activity levels (0-10): inside outlet, inside inlet, outside inlet, and interior fans."
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-03 20:45:40 -03:00
"expr": "(atlas_climate_fan_activity_level{fan_group=\"outlet\"} or atlas_climate_fan_activity_level{position=\"outlet\"})" ,
2026-04-09 20:10:52 -03:00
"legendFormat": "Inside Outlet"
2026-04-03 20:45:40 -03:00
},
{
"refId": "B" ,
"expr": "(atlas_climate_fan_activity_level{fan_group=\"inside_inlet\"} or atlas_climate_fan_activity_level{position=\"inside_inlet\"})" ,
2026-04-09 20:10:52 -03:00
"legendFormat": "Inside Inlet"
2026-04-03 20:45:40 -03:00
},
{
"refId": "C" ,
"expr": "(atlas_climate_fan_activity_level{fan_group=\"outside_inlet\"} or atlas_climate_fan_activity_level{position=\"outside_inlet\"})" ,
2026-04-09 20:10:52 -03:00
"legendFormat": "Outside Inlet"
2026-04-03 20:45:40 -03:00
},
{
"refId": "D" ,
"expr": "(atlas_climate_fan_activity_level{fan_group=\"interior\"} or atlas_climate_fan_activity_level{position=\"interior\"})" ,
2026-04-09 20:10:52 -03:00
"legendFormat": "Interior Fans"
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"
]
}