monitoring(overview): reflow UPS/climate rows and add jenkins weather

This commit is contained in:
Brad Stein 2026-04-12 18:14:54 -03:00
parent f67ca30f94
commit cb27592272
3 changed files with 410 additions and 116 deletions

View File

@ -1302,13 +1302,39 @@ def build_overview():
}, },
} }
] ]
jenkins_weather_mapping = [
{
"type": "range",
"options": {
"from": 95,
"to": 101,
"result": {"text": "☀️ Sunny"},
},
},
{
"type": "range",
"options": {
"from": 80,
"to": 95,
"result": {"text": "⛅ Cloudy"},
},
},
{
"type": "range",
"options": {
"from": 0,
"to": 80,
"result": {"text": "⛈️ Storm"},
},
},
]
panels.append( panels.append(
stat_panel( stat_panel(
40, 40,
"UPS Current Load", "UPS Current Load",
None, None,
{"h": 6, "w": 4, "x": 0, "y": 12}, {"h": 5, "w": 6, "x": 0, "y": 7},
unit="none", unit="none",
decimals=1, decimals=1,
text_mode="name_and_value", text_mode="name_and_value",
@ -1355,15 +1381,15 @@ def build_overview():
41, 41,
"UPS History (Power Draw)", "UPS History (Power Draw)",
None, None,
{"h": 6, "w": 4, "x": 4, "y": 12}, {"h": 5, "w": 6, "x": 6, "y": 7},
unit="watt", unit="watt",
targets=[ targets=[
{"refId": "A", "expr": ANANKE_UPS_DRAW_WATTS_DB_SERIES, "legendFormat": ANANKE_UPS_DB_NAME}, {"refId": "A", "expr": ANANKE_UPS_DRAW_WATTS_DB_SERIES, "legendFormat": ANANKE_UPS_DB_NAME},
{"refId": "B", "expr": ANANKE_UPS_DRAW_WATTS_TETHYS_SERIES, "legendFormat": ANANKE_UPS_TETHYS_NAME}, {"refId": "B", "expr": ANANKE_UPS_DRAW_WATTS_TETHYS_SERIES, "legendFormat": ANANKE_UPS_TETHYS_NAME},
{"refId": "C", "expr": ANANKE_UPS_DRAW_WATTS_TOTAL_SERIES, "legendFormat": "combined"}, {"refId": "C", "expr": ANANKE_UPS_DRAW_WATTS_TOTAL_SERIES, "legendFormat": "combined"},
], ],
legend_display="list", legend_display="table",
legend_placement="bottom", legend_placement="right",
links=link_to("atlas-power"), links=link_to("atlas-power"),
) )
) )
@ -1372,10 +1398,10 @@ def build_overview():
42, 42,
"Current Climate", "Current Climate",
None, None,
{"h": 6, "w": 4, "x": 8, "y": 12}, {"h": 6, "w": 6, "x": 0, "y": 12},
unit="none", unit="none",
decimals=2, decimals=2,
text_mode="value", text_mode="name_and_value",
targets=[ targets=[
{"refId": "A", "expr": CLIMATE_TEMP_MAX, "legendFormat": "Tent Temp (°C)", "instant": True}, {"refId": "A", "expr": CLIMATE_TEMP_MAX, "legendFormat": "Tent Temp (°C)", "instant": True},
{"refId": "B", "expr": CLIMATE_TEMP_FAHRENHEIT_MAX, "legendFormat": "Tent Temp (°F)", "instant": True}, {"refId": "B", "expr": CLIMATE_TEMP_FAHRENHEIT_MAX, "legendFormat": "Tent Temp (°F)", "instant": True},
@ -1390,8 +1416,8 @@ def build_overview():
], ],
links=link_to("atlas-power"), links=link_to("atlas-power"),
description="Current tent temperature in C/F, humidity, and pressure proxy (VPD in kPa).", description="Current tent temperature in C/F, humidity, and pressure proxy (VPD in kPa).",
orientation="vertical", orientation="horizontal",
wide_layout=False, wide_layout=True,
) )
) )
panels.append( panels.append(
@ -1399,7 +1425,7 @@ def build_overview():
43, 43,
"Climate History", "Climate History",
None, None,
{"h": 6, "w": 4, "x": 12, "y": 12}, {"h": 6, "w": 6, "x": 6, "y": 12},
unit="celsius", unit="celsius",
targets=[ targets=[
{"refId": "A", "expr": CLIMATE_TEMP_SERIES, "legendFormat": "Temperature (°C)"}, {"refId": "A", "expr": CLIMATE_TEMP_SERIES, "legendFormat": "Temperature (°C)"},
@ -1430,8 +1456,8 @@ def build_overview():
], ],
} }
], ],
legend_display="list", legend_display="table",
legend_placement="bottom", legend_placement="right",
links=link_to("atlas-power"), links=link_to("atlas-power"),
description="Historical tent temperature (C/F), humidity, and pressure proxy (VPD kPa).", description="Historical tent temperature (C/F), humidity, and pressure proxy (VPD kPa).",
) )
@ -1441,7 +1467,7 @@ def build_overview():
140, 140,
"Fan Activity", "Fan Activity",
None, None,
{"h": 6, "w": 4, "x": 16, "y": 12}, {"h": 6, "w": 6, "x": 12, "y": 12},
unit="none", unit="none",
decimals=0, decimals=0,
text_mode="name_and_value", text_mode="name_and_value",
@ -1460,6 +1486,8 @@ def build_overview():
], ],
}, },
links=link_to("atlas-power"), links=link_to("atlas-power"),
orientation="horizontal",
wide_layout=True,
) )
) )
panels.append( panels.append(
@ -1467,7 +1495,7 @@ def build_overview():
141, 141,
"Fan History (0-10)", "Fan History (0-10)",
None, None,
{"h": 6, "w": 4, "x": 20, "y": 12}, {"h": 6, "w": 6, "x": 18, "y": 12},
unit="none", unit="none",
max_value=10, max_value=10,
targets=[ targets=[
@ -1476,8 +1504,8 @@ def build_overview():
{"refId": "C", "expr": CLIMATE_FAN_OUTSIDE_INLET_SERIES, "legendFormat": "Outside Inlet"}, {"refId": "C", "expr": CLIMATE_FAN_OUTSIDE_INLET_SERIES, "legendFormat": "Outside Inlet"},
{"refId": "D", "expr": CLIMATE_FAN_INTERIOR_SERIES, "legendFormat": "Interior Fans"}, {"refId": "D", "expr": CLIMATE_FAN_INTERIOR_SERIES, "legendFormat": "Interior Fans"},
], ],
legend_display="list", legend_display="table",
legend_placement="bottom", legend_placement="right",
links=link_to("atlas-power"), links=link_to("atlas-power"),
) )
) )
@ -1487,7 +1515,7 @@ def build_overview():
44, 44,
"One-off Job Pods (age hours)", "One-off Job Pods (age hours)",
ONEOFF_JOB_POD_AGE_HOURS, ONEOFF_JOB_POD_AGE_HOURS,
{"h": 5, "w": 6, "x": 0, "y": 7}, {"h": 5, "w": 8, "x": 0, "y": 32},
unit="h", unit="h",
instant=True, instant=True,
legend="{{namespace}}/{{pod}}", legend="{{namespace}}/{{pod}}",
@ -1503,7 +1531,7 @@ def build_overview():
"type": "timeseries", "type": "timeseries",
"title": "Ariadne Attempts / Failures", "title": "Ariadne Attempts / Failures",
"datasource": PROM_DS, "datasource": PROM_DS,
"gridPos": {"h": 5, "w": 6, "x": 6, "y": 7}, "gridPos": {"h": 5, "w": 6, "x": 12, "y": 7},
"targets": [ "targets": [
{"expr": ARIADNE_TASK_ATTEMPTS_SERIES, "refId": "A", "legendFormat": "Attempts"}, {"expr": ARIADNE_TASK_ATTEMPTS_SERIES, "refId": "A", "legendFormat": "Attempts"},
{"expr": ARIADNE_TASK_FAILURES_SERIES, "refId": "B", "legendFormat": "Failures"}, {"expr": ARIADNE_TASK_FAILURES_SERIES, "refId": "B", "legendFormat": "Failures"},
@ -1536,7 +1564,7 @@ def build_overview():
46, 46,
"Platform Test Success Rate", "Platform Test Success Rate",
None, None,
{"h": 5, "w": 6, "x": 12, "y": 7}, {"h": 5, "w": 6, "x": 18, "y": 7},
unit="percent", unit="percent",
targets=PLATFORM_TEST_SUCCESS_RATE_SUITE_TARGETS, targets=PLATFORM_TEST_SUCCESS_RATE_SUITE_TARGETS,
legend_display="table", legend_display="table",
@ -1565,7 +1593,7 @@ def build_overview():
47, 47,
"PVC Backup Health / Age", "PVC Backup Health / Age",
PVC_BACKUP_AGE_HOURS_BY_PVC, PVC_BACKUP_AGE_HOURS_BY_PVC,
{"h": 5, "w": 6, "x": 18, "y": 7}, {"h": 5, "w": 8, "x": 16, "y": 32},
unit="h", unit="h",
instant=True, instant=True,
legend="{{namespace}}/{{pvc}}", legend="{{namespace}}/{{pvc}}",
@ -1585,6 +1613,52 @@ def build_overview():
panels[-1]["description"] = ( panels[-1]["description"] = (
"Oldest successful backup age in hours by PVC. PVCs with missing or unhealthy backup state are forced to 999h so the red bars stay visible in the overview." "Oldest successful backup age in hours by PVC. PVCs with missing or unhealthy backup state are forced to 999h so the red bars stay visible in the overview."
) )
panels.append(
{
"id": 142,
"type": "stat",
"title": "Jenkins Build Weather (24h)",
"datasource": PROM_DS,
"gridPos": {"h": 5, "w": 8, "x": 8, "y": 32},
"targets": [
{
"expr": PLATFORM_TEST_SUCCESS_RATE_24H_BY_SUITE,
"refId": "A",
"legendFormat": "{{suite}}",
"instant": True,
}
],
"fieldConfig": {
"defaults": {
"color": {"mode": "thresholds"},
"mappings": jenkins_weather_mapping,
"thresholds": {
"mode": "absolute",
"steps": [
{"color": "red", "value": None},
{"color": "orange", "value": 80},
{"color": "green", "value": 95},
],
},
"unit": "percent",
"decimals": 1,
"custom": {"displayMode": "auto"},
},
"overrides": [],
},
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "center",
"reduceOptions": {"calcs": ["lastNotNull"], "fields": "", "values": False},
"textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": True,
},
"links": link_to("atlas-jobs"),
"description": "24h build health by suite: sunny (>=95%), cloudy (80-95%), storm (<80%).",
}
)
panels.append( panels.append(
stat_panel( stat_panel(
@ -1734,7 +1808,7 @@ def build_overview():
14, 14,
"Worker Node CPU", "Worker Node CPU",
node_cpu_expr(worker_filter), node_cpu_expr(worker_filter),
{"h": 12, "w": 12, "x": 0, "y": 39}, {"h": 12, "w": 12, "x": 0, "y": 44},
unit="percent", unit="percent",
legend="{{node}}", legend="{{node}}",
legend_calcs=["last"], legend_calcs=["last"],
@ -1748,7 +1822,7 @@ def build_overview():
15, 15,
"Worker Node RAM", "Worker Node RAM",
node_mem_expr(worker_filter), node_mem_expr(worker_filter),
{"h": 12, "w": 12, "x": 12, "y": 39}, {"h": 12, "w": 12, "x": 12, "y": 44},
unit="percent", unit="percent",
legend="{{node}}", legend="{{node}}",
legend_calcs=["last"], legend_calcs=["last"],
@ -1763,7 +1837,7 @@ def build_overview():
16, 16,
"Control plane CPU", "Control plane CPU",
node_cpu_expr(CONTROL_ALL_REGEX), node_cpu_expr(CONTROL_ALL_REGEX),
{"h": 10, "w": 12, "x": 0, "y": 51}, {"h": 10, "w": 12, "x": 0, "y": 56},
unit="percent", unit="percent",
legend="{{node}}", legend="{{node}}",
legend_display="table", legend_display="table",
@ -1775,7 +1849,7 @@ def build_overview():
17, 17,
"Control plane RAM", "Control plane RAM",
node_mem_expr(CONTROL_ALL_REGEX), node_mem_expr(CONTROL_ALL_REGEX),
{"h": 10, "w": 12, "x": 12, "y": 51}, {"h": 10, "w": 12, "x": 12, "y": 56},
unit="percent", unit="percent",
legend="{{node}}", legend="{{node}}",
legend_display="table", legend_display="table",
@ -1788,7 +1862,7 @@ def build_overview():
28, 28,
"Node Pod Share", "Node Pod Share",
'(sum(kube_pod_info{pod!="" , node!=""}) by (node) / clamp_min(sum(kube_pod_info{pod!="" , node!=""}), 1)) * 100', '(sum(kube_pod_info{pod!="" , node!=""}) by (node) / clamp_min(sum(kube_pod_info{pod!="" , node!=""}), 1)) * 100',
{"h": 10, "w": 12, "x": 0, "y": 61}, {"h": 10, "w": 12, "x": 0, "y": 66},
) )
) )
panels.append( panels.append(
@ -1796,7 +1870,7 @@ def build_overview():
29, 29,
"Top Nodes by Pod Count", "Top Nodes by Pod Count",
'topk(12, sum(kube_pod_info{pod!="" , node!=""}) by (node))', 'topk(12, sum(kube_pod_info{pod!="" , node!=""}) by (node))',
{"h": 10, "w": 12, "x": 12, "y": 61}, {"h": 10, "w": 12, "x": 12, "y": 66},
unit="none", unit="none",
limit=12, limit=12,
decimals=0, decimals=0,
@ -1818,7 +1892,7 @@ def build_overview():
18, 18,
"Cluster Ingress Throughput", "Cluster Ingress Throughput",
NET_INGRESS_EXPR, NET_INGRESS_EXPR,
{"h": 7, "w": 8, "x": 0, "y": 32}, {"h": 7, "w": 8, "x": 0, "y": 37},
unit="Bps", unit="Bps",
legend="Ingress (Traefik)", legend="Ingress (Traefik)",
legend_display="list", legend_display="list",
@ -1831,7 +1905,7 @@ def build_overview():
19, 19,
"Cluster Egress Throughput", "Cluster Egress Throughput",
NET_EGRESS_EXPR, NET_EGRESS_EXPR,
{"h": 7, "w": 8, "x": 8, "y": 32}, {"h": 7, "w": 8, "x": 8, "y": 37},
unit="Bps", unit="Bps",
legend="Egress (Traefik)", legend="Egress (Traefik)",
legend_display="list", legend_display="list",
@ -1844,7 +1918,7 @@ def build_overview():
20, 20,
"Intra-Cluster Throughput", "Intra-Cluster Throughput",
NET_INTERNAL_EXPR, NET_INTERNAL_EXPR,
{"h": 7, "w": 8, "x": 16, "y": 32}, {"h": 7, "w": 8, "x": 16, "y": 37},
unit="Bps", unit="Bps",
legend="Internal traffic", legend="Internal traffic",
legend_display="list", legend_display="list",
@ -1858,7 +1932,7 @@ def build_overview():
21, 21,
"Root Filesystem Usage", "Root Filesystem Usage",
root_usage_expr(), root_usage_expr(),
{"h": 16, "w": 12, "x": 0, "y": 71}, {"h": 16, "w": 12, "x": 0, "y": 76},
unit="percent", unit="percent",
legend="{{node}}", legend="{{node}}",
legend_calcs=["last"], legend_calcs=["last"],
@ -1873,7 +1947,7 @@ def build_overview():
22, 22,
"Nodes Closest to Full Astraios Disks", "Nodes Closest to Full Astraios Disks",
astraios_usage_expr(), astraios_usage_expr(),
{"h": 16, "w": 12, "x": 12, "y": 71}, {"h": 16, "w": 12, "x": 12, "y": 76},
unit="percent", unit="percent",
legend="{{node}}", legend="{{node}}",
legend_calcs=["last"], legend_calcs=["last"],

View File

@ -1079,10 +1079,10 @@
"uid": "atlas-vm" "uid": "atlas-vm"
}, },
"gridPos": { "gridPos": {
"h": 6, "h": 5,
"w": 4, "w": 6,
"x": 0, "x": 0,
"y": 12 "y": 7
}, },
"targets": [ "targets": [
{ {
@ -1301,10 +1301,10 @@
"uid": "atlas-vm" "uid": "atlas-vm"
}, },
"gridPos": { "gridPos": {
"h": 6, "h": 5,
"w": 4, "w": 6,
"x": 4, "x": 6,
"y": 12 "y": 7
}, },
"targets": [ "targets": [
{ {
@ -1331,8 +1331,8 @@
}, },
"options": { "options": {
"legend": { "legend": {
"displayMode": "list", "displayMode": "table",
"placement": "bottom" "placement": "right"
}, },
"tooltip": { "tooltip": {
"mode": "multi" "mode": "multi"
@ -1356,8 +1356,8 @@
}, },
"gridPos": { "gridPos": {
"h": 6, "h": 6,
"w": 4, "w": 6,
"x": 8, "x": 0,
"y": 12 "y": 12
}, },
"targets": [ "targets": [
@ -1473,9 +1473,9 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "value", "textMode": "name_and_value",
"orientation": "vertical", "orientation": "horizontal",
"wideLayout": false "wideLayout": true
}, },
"links": [ "links": [
{ {
@ -1496,8 +1496,8 @@
}, },
"gridPos": { "gridPos": {
"h": 6, "h": 6,
"w": 4, "w": 6,
"x": 12, "x": 6,
"y": 12 "y": 12
}, },
"targets": [ "targets": [
@ -1579,8 +1579,8 @@
}, },
"options": { "options": {
"legend": { "legend": {
"displayMode": "list", "displayMode": "table",
"placement": "bottom" "placement": "right"
}, },
"tooltip": { "tooltip": {
"mode": "multi" "mode": "multi"
@ -1605,8 +1605,8 @@
}, },
"gridPos": { "gridPos": {
"h": 6, "h": 6,
"w": 4, "w": 6,
"x": 16, "x": 12,
"y": 12 "y": 12
}, },
"targets": [ "targets": [
@ -1677,7 +1677,9 @@
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
}, },
"links": [ "links": [
{ {
@ -1697,8 +1699,8 @@
}, },
"gridPos": { "gridPos": {
"h": 6, "h": 6,
"w": 4, "w": 6,
"x": 20, "x": 18,
"y": 12 "y": 12
}, },
"targets": [ "targets": [
@ -1732,8 +1734,8 @@
}, },
"options": { "options": {
"legend": { "legend": {
"displayMode": "list", "displayMode": "table",
"placement": "bottom" "placement": "right"
}, },
"tooltip": { "tooltip": {
"mode": "multi" "mode": "multi"
@ -1757,9 +1759,9 @@
}, },
"gridPos": { "gridPos": {
"h": 5, "h": 5,
"w": 6, "w": 8,
"x": 0, "x": 0,
"y": 7 "y": 32
}, },
"targets": [ "targets": [
{ {
@ -1846,7 +1848,7 @@
"gridPos": { "gridPos": {
"h": 5, "h": 5,
"w": 6, "w": 6,
"x": 6, "x": 12,
"y": 7 "y": 7
}, },
"targets": [ "targets": [
@ -1926,7 +1928,7 @@
"gridPos": { "gridPos": {
"h": 5, "h": 5,
"w": 6, "w": 6,
"x": 12, "x": 18,
"y": 7 "y": 7
}, },
"targets": [ "targets": [
@ -2035,9 +2037,9 @@
}, },
"gridPos": { "gridPos": {
"h": 5, "h": 5,
"w": 6, "w": 8,
"x": 18, "x": 16,
"y": 7 "y": 32
}, },
"targets": [ "targets": [
{ {
@ -2107,6 +2109,114 @@
], ],
"description": "Oldest successful backup age in hours by PVC. PVCs with missing or unhealthy backup state are forced to 999h so the red bars stay visible in the overview." "description": "Oldest successful backup age in hours by PVC. PVCs with missing or unhealthy backup state are forced to 999h so the red bars stay visible in the overview."
}, },
{
"id": 142,
"type": "stat",
"title": "Jenkins Build Weather (24h)",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
},
"gridPos": {
"h": 5,
"w": 8,
"x": 8,
"y": 32
},
"targets": [
{
"expr": "sort_desc((100 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan-iac|bstein-home|arcanagon|data-prepper\",status=~\"ok|passed|success\"}[24h]))) / clamp_min((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan-iac|bstein-home|arcanagon|data-prepper\"}[24h]))), 1)) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan-iac|bstein-home|arcanagon|data-prepper\"}[24h]))) > 0))",
"refId": "A",
"legendFormat": "{{suite}}",
"instant": true
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [
{
"type": "range",
"options": {
"from": 95,
"to": 101,
"result": {
"text": "\u2600\ufe0f Sunny"
}
}
},
{
"type": "range",
"options": {
"from": 80,
"to": 95,
"result": {
"text": "\u26c5 Cloudy"
}
}
},
{
"type": "range",
"options": {
"from": 0,
"to": 80,
"result": {
"text": "\u26c8\ufe0f Storm"
}
}
}
],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": null
},
{
"color": "orange",
"value": 80
},
{
"color": "green",
"value": 95
}
]
},
"unit": "percent",
"decimals": 1,
"custom": {
"displayMode": "auto"
}
},
"overrides": []
},
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "center",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
},
"links": [
{
"title": "Open atlas-jobs dashboard",
"url": "/d/atlas-jobs",
"targetBlank": true
}
],
"description": "24h build health by suite: sunny (>=95%), cloudy (80-95%), storm (<80%)."
},
{ {
"id": 30, "id": 30,
"type": "stat", "type": "stat",
@ -2776,7 +2886,7 @@
"h": 12, "h": 12,
"w": 12, "w": 12,
"x": 0, "x": 0,
"y": 39 "y": 44
}, },
"targets": [ "targets": [
{ {
@ -2823,7 +2933,7 @@
"h": 12, "h": 12,
"w": 12, "w": 12,
"x": 12, "x": 12,
"y": 39 "y": 44
}, },
"targets": [ "targets": [
{ {
@ -2870,7 +2980,7 @@
"h": 10, "h": 10,
"w": 12, "w": 12,
"x": 0, "x": 0,
"y": 51 "y": 56
}, },
"targets": [ "targets": [
{ {
@ -2907,7 +3017,7 @@
"h": 10, "h": 10,
"w": 12, "w": 12,
"x": 12, "x": 12,
"y": 51 "y": 56
}, },
"targets": [ "targets": [
{ {
@ -2944,7 +3054,7 @@
"h": 10, "h": 10,
"w": 12, "w": 12,
"x": 0, "x": 0,
"y": 61 "y": 66
}, },
"targets": [ "targets": [
{ {
@ -2995,7 +3105,7 @@
"h": 10, "h": 10,
"w": 12, "w": 12,
"x": 12, "x": 12,
"y": 61 "y": 66
}, },
"targets": [ "targets": [
{ {
@ -3076,7 +3186,7 @@
"h": 7, "h": 7,
"w": 8, "w": 8,
"x": 0, "x": 0,
"y": 32 "y": 37
}, },
"targets": [ "targets": [
{ {
@ -3120,7 +3230,7 @@
"h": 7, "h": 7,
"w": 8, "w": 8,
"x": 8, "x": 8,
"y": 32 "y": 37
}, },
"targets": [ "targets": [
{ {
@ -3164,7 +3274,7 @@
"h": 7, "h": 7,
"w": 8, "w": 8,
"x": 16, "x": 16,
"y": 32 "y": 37
}, },
"targets": [ "targets": [
{ {
@ -3208,7 +3318,7 @@
"h": 16, "h": 16,
"w": 12, "w": 12,
"x": 0, "x": 0,
"y": 71 "y": 76
}, },
"targets": [ "targets": [
{ {
@ -3256,7 +3366,7 @@
"h": 16, "h": 16,
"w": 12, "w": 12,
"x": 12, "x": 12,
"y": 71 "y": 76
}, },
"targets": [ "targets": [
{ {

View File

@ -1088,10 +1088,10 @@ data:
"uid": "atlas-vm" "uid": "atlas-vm"
}, },
"gridPos": { "gridPos": {
"h": 6, "h": 5,
"w": 4, "w": 6,
"x": 0, "x": 0,
"y": 12 "y": 7
}, },
"targets": [ "targets": [
{ {
@ -1310,10 +1310,10 @@ data:
"uid": "atlas-vm" "uid": "atlas-vm"
}, },
"gridPos": { "gridPos": {
"h": 6, "h": 5,
"w": 4, "w": 6,
"x": 4, "x": 6,
"y": 12 "y": 7
}, },
"targets": [ "targets": [
{ {
@ -1340,8 +1340,8 @@ data:
}, },
"options": { "options": {
"legend": { "legend": {
"displayMode": "list", "displayMode": "table",
"placement": "bottom" "placement": "right"
}, },
"tooltip": { "tooltip": {
"mode": "multi" "mode": "multi"
@ -1365,8 +1365,8 @@ data:
}, },
"gridPos": { "gridPos": {
"h": 6, "h": 6,
"w": 4, "w": 6,
"x": 8, "x": 0,
"y": 12 "y": 12
}, },
"targets": [ "targets": [
@ -1482,9 +1482,9 @@ data:
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "value", "textMode": "name_and_value",
"orientation": "vertical", "orientation": "horizontal",
"wideLayout": false "wideLayout": true
}, },
"links": [ "links": [
{ {
@ -1505,8 +1505,8 @@ data:
}, },
"gridPos": { "gridPos": {
"h": 6, "h": 6,
"w": 4, "w": 6,
"x": 12, "x": 6,
"y": 12 "y": 12
}, },
"targets": [ "targets": [
@ -1588,8 +1588,8 @@ data:
}, },
"options": { "options": {
"legend": { "legend": {
"displayMode": "list", "displayMode": "table",
"placement": "bottom" "placement": "right"
}, },
"tooltip": { "tooltip": {
"mode": "multi" "mode": "multi"
@ -1614,8 +1614,8 @@ data:
}, },
"gridPos": { "gridPos": {
"h": 6, "h": 6,
"w": 4, "w": 6,
"x": 16, "x": 12,
"y": 12 "y": 12
}, },
"targets": [ "targets": [
@ -1686,7 +1686,9 @@ data:
"fields": "", "fields": "",
"values": false "values": false
}, },
"textMode": "name_and_value" "textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
}, },
"links": [ "links": [
{ {
@ -1706,8 +1708,8 @@ data:
}, },
"gridPos": { "gridPos": {
"h": 6, "h": 6,
"w": 4, "w": 6,
"x": 20, "x": 18,
"y": 12 "y": 12
}, },
"targets": [ "targets": [
@ -1741,8 +1743,8 @@ data:
}, },
"options": { "options": {
"legend": { "legend": {
"displayMode": "list", "displayMode": "table",
"placement": "bottom" "placement": "right"
}, },
"tooltip": { "tooltip": {
"mode": "multi" "mode": "multi"
@ -1766,9 +1768,9 @@ data:
}, },
"gridPos": { "gridPos": {
"h": 5, "h": 5,
"w": 6, "w": 8,
"x": 0, "x": 0,
"y": 7 "y": 32
}, },
"targets": [ "targets": [
{ {
@ -1855,7 +1857,7 @@ data:
"gridPos": { "gridPos": {
"h": 5, "h": 5,
"w": 6, "w": 6,
"x": 6, "x": 12,
"y": 7 "y": 7
}, },
"targets": [ "targets": [
@ -1935,7 +1937,7 @@ data:
"gridPos": { "gridPos": {
"h": 5, "h": 5,
"w": 6, "w": 6,
"x": 12, "x": 18,
"y": 7 "y": 7
}, },
"targets": [ "targets": [
@ -2044,9 +2046,9 @@ data:
}, },
"gridPos": { "gridPos": {
"h": 5, "h": 5,
"w": 6, "w": 8,
"x": 18, "x": 16,
"y": 7 "y": 32
}, },
"targets": [ "targets": [
{ {
@ -2116,6 +2118,114 @@ data:
], ],
"description": "Oldest successful backup age in hours by PVC. PVCs with missing or unhealthy backup state are forced to 999h so the red bars stay visible in the overview." "description": "Oldest successful backup age in hours by PVC. PVCs with missing or unhealthy backup state are forced to 999h so the red bars stay visible in the overview."
}, },
{
"id": 142,
"type": "stat",
"title": "Jenkins Build Weather (24h)",
"datasource": {
"type": "prometheus",
"uid": "atlas-vm"
},
"gridPos": {
"h": 5,
"w": 8,
"x": 8,
"y": 32
},
"targets": [
{
"expr": "sort_desc((100 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan-iac|bstein-home|arcanagon|data-prepper\",status=~\"ok|passed|success\"}[24h]))) / clamp_min((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan-iac|bstein-home|arcanagon|data-prepper\"}[24h]))), 1)) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan-iac|bstein-home|arcanagon|data-prepper\"}[24h]))) > 0))",
"refId": "A",
"legendFormat": "{{suite}}",
"instant": true
}
],
"fieldConfig": {
"defaults": {
"color": {
"mode": "thresholds"
},
"mappings": [
{
"type": "range",
"options": {
"from": 95,
"to": 101,
"result": {
"text": "\u2600\ufe0f Sunny"
}
}
},
{
"type": "range",
"options": {
"from": 80,
"to": 95,
"result": {
"text": "\u26c5 Cloudy"
}
}
},
{
"type": "range",
"options": {
"from": 0,
"to": 80,
"result": {
"text": "\u26c8\ufe0f Storm"
}
}
}
],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red",
"value": null
},
{
"color": "orange",
"value": 80
},
{
"color": "green",
"value": 95
}
]
},
"unit": "percent",
"decimals": 1,
"custom": {
"displayMode": "auto"
}
},
"overrides": []
},
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "center",
"reduceOptions": {
"calcs": [
"lastNotNull"
],
"fields": "",
"values": false
},
"textMode": "name_and_value",
"orientation": "horizontal",
"wideLayout": true
},
"links": [
{
"title": "Open atlas-jobs dashboard",
"url": "/d/atlas-jobs",
"targetBlank": true
}
],
"description": "24h build health by suite: sunny (>=95%), cloudy (80-95%), storm (<80%)."
},
{ {
"id": 30, "id": 30,
"type": "stat", "type": "stat",
@ -2785,7 +2895,7 @@ data:
"h": 12, "h": 12,
"w": 12, "w": 12,
"x": 0, "x": 0,
"y": 39 "y": 44
}, },
"targets": [ "targets": [
{ {
@ -2832,7 +2942,7 @@ data:
"h": 12, "h": 12,
"w": 12, "w": 12,
"x": 12, "x": 12,
"y": 39 "y": 44
}, },
"targets": [ "targets": [
{ {
@ -2879,7 +2989,7 @@ data:
"h": 10, "h": 10,
"w": 12, "w": 12,
"x": 0, "x": 0,
"y": 51 "y": 56
}, },
"targets": [ "targets": [
{ {
@ -2916,7 +3026,7 @@ data:
"h": 10, "h": 10,
"w": 12, "w": 12,
"x": 12, "x": 12,
"y": 51 "y": 56
}, },
"targets": [ "targets": [
{ {
@ -2953,7 +3063,7 @@ data:
"h": 10, "h": 10,
"w": 12, "w": 12,
"x": 0, "x": 0,
"y": 61 "y": 66
}, },
"targets": [ "targets": [
{ {
@ -3004,7 +3114,7 @@ data:
"h": 10, "h": 10,
"w": 12, "w": 12,
"x": 12, "x": 12,
"y": 61 "y": 66
}, },
"targets": [ "targets": [
{ {
@ -3085,7 +3195,7 @@ data:
"h": 7, "h": 7,
"w": 8, "w": 8,
"x": 0, "x": 0,
"y": 32 "y": 37
}, },
"targets": [ "targets": [
{ {
@ -3129,7 +3239,7 @@ data:
"h": 7, "h": 7,
"w": 8, "w": 8,
"x": 8, "x": 8,
"y": 32 "y": 37
}, },
"targets": [ "targets": [
{ {
@ -3173,7 +3283,7 @@ data:
"h": 7, "h": 7,
"w": 8, "w": 8,
"x": 16, "x": 16,
"y": 32 "y": 37
}, },
"targets": [ "targets": [
{ {
@ -3217,7 +3327,7 @@ data:
"h": 16, "h": 16,
"w": 12, "w": 12,
"x": 0, "x": 0,
"y": 71 "y": 76
}, },
"targets": [ "targets": [
{ {
@ -3265,7 +3375,7 @@ data:
"h": 16, "h": 16,
"w": 12, "w": 12,
"x": 12, "x": 12,
"y": 71 "y": 76
}, },
"targets": [ "targets": [
{ {