monitoring: add generic suite metric slots for platform tests

This commit is contained in:
Brad Stein 2026-04-09 16:16:35 -03:00
parent 7b0e9acbb1
commit f8c1243dfd
5 changed files with 169 additions and 7 deletions

View File

@ -474,11 +474,33 @@ PLATFORM_TEST_SUCCESS_RATE_ANANKE_SERIES = (
f'100 * ({ANANKE_SUITE_OK_INTERVAL}) / clamp_min(({ANANKE_SUITE_TOTAL_INTERVAL}), 1)'
)
PLATFORM_TEST_GENERIC_SUITE_NAMES = [
"atlasbot",
"lesavka",
"pegasus",
"soteria",
"titan-iac",
"bstein-home",
"arcanagon",
]
PLATFORM_TEST_GENERIC_SUITE_TARGETS = [
{
"refId": chr(ord("D") + index),
"expr": (
f'100 * (sum(increase(platform_quality_gate_runs_total{{suite="{suite}",status=~"ok|passed|success"}}'
f'[{PLATFORM_TEST_ROLLING_WINDOW}]))) / '
f'clamp_min((sum(increase(platform_quality_gate_runs_total{{suite="{suite}"}}[{PLATFORM_TEST_ROLLING_WINDOW}]))), 1)'
),
"legendFormat": suite,
}
for index, suite in enumerate(PLATFORM_TEST_GENERIC_SUITE_NAMES)
]
PLATFORM_TEST_SUCCESS_RATE_SUITE_TARGETS = [
{"refId": "A", "expr": PLATFORM_TEST_SUCCESS_RATE_ARIADNE_SERIES, "legendFormat": "ariadne"},
{"refId": "B", "expr": PLATFORM_TEST_SUCCESS_RATE_METIS_SERIES, "legendFormat": "metis"},
{"refId": "C", "expr": PLATFORM_TEST_SUCCESS_RATE_ANANKE_SERIES, "legendFormat": "ananke"},
]
] + PLATFORM_TEST_GENERIC_SUITE_TARGETS
ANANKE_SELECTOR = 'job="ananke-power"'
ANANKE_UPS_DB_NAME = "Pyrphoros"
ANANKE_UPS_DB_NODE = "titan-db"
@ -1510,7 +1532,7 @@ def build_overview():
test_success["fieldConfig"]["defaults"]["min"] = 0
test_success["fieldConfig"]["defaults"]["max"] = 100
test_success["description"] = (
"Application-level rolling pass rate (0-100) over the last 30 days. One line per suite (ariadne, metis, ananke)."
"Application-level rolling pass rate (0-100) over the last 30 days. Includes Ariadne/Metis/Ananke and auto-picks additional suite lines when platform_quality_gate_runs_total is emitted."
)
panels.append(test_success)
test_failures = stat_panel(
@ -2989,7 +3011,7 @@ def build_jobs_dashboard():
suite_panel["fieldConfig"]["defaults"]["min"] = 0
suite_panel["fieldConfig"]["defaults"]["max"] = 100
suite_panel["description"] = (
"Application-level rolling pass percentage over the last 30 days. One series per suite: ariadne, metis, ananke."
"Application-level rolling pass percentage over the last 30 days. Existing suites: ariadne, metis, ananke; additional suites appear automatically when platform_quality_gate_runs_total is published."
)
panels.append(suite_panel)

View File

@ -1265,6 +1265,41 @@
"refId": "C",
"expr": "100 * (sum(increase(ananke_quality_gate_runs_total{suite=\"ananke\",status=\"ok\"}[30d]))) / clamp_min((sum(increase(ananke_quality_gate_runs_total{suite=\"ananke\"}[30d]))), 1)",
"legendFormat": "ananke"
},
{
"refId": "D",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"atlasbot\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"atlasbot\"}[30d]))), 1)",
"legendFormat": "atlasbot"
},
{
"refId": "E",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"lesavka\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"lesavka\"}[30d]))), 1)",
"legendFormat": "lesavka"
},
{
"refId": "F",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"pegasus\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"pegasus\"}[30d]))), 1)",
"legendFormat": "pegasus"
},
{
"refId": "G",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"soteria\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"soteria\"}[30d]))), 1)",
"legendFormat": "soteria"
},
{
"refId": "H",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"titan-iac\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"titan-iac\"}[30d]))), 1)",
"legendFormat": "titan-iac"
},
{
"refId": "I",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"bstein-home\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"bstein-home\"}[30d]))), 1)",
"legendFormat": "bstein-home"
},
{
"refId": "J",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"arcanagon\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"arcanagon\"}[30d]))), 1)",
"legendFormat": "arcanagon"
}
],
"fieldConfig": {
@ -1284,7 +1319,7 @@
"mode": "multi"
}
},
"description": "Application-level rolling pass percentage over the last 30 days. One series per suite: ariadne, metis, ananke."
"description": "Application-level rolling pass percentage over the last 30 days. Existing suites: ariadne, metis, ananke; additional suites appear automatically when platform_quality_gate_runs_total is published."
}
],
"time": {

View File

@ -1832,6 +1832,41 @@
"refId": "C",
"expr": "100 * (sum(increase(ananke_quality_gate_runs_total{suite=\"ananke\",status=\"ok\"}[30d]))) / clamp_min((sum(increase(ananke_quality_gate_runs_total{suite=\"ananke\"}[30d]))), 1)",
"legendFormat": "ananke"
},
{
"refId": "D",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"atlasbot\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"atlasbot\"}[30d]))), 1)",
"legendFormat": "atlasbot"
},
{
"refId": "E",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"lesavka\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"lesavka\"}[30d]))), 1)",
"legendFormat": "lesavka"
},
{
"refId": "F",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"pegasus\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"pegasus\"}[30d]))), 1)",
"legendFormat": "pegasus"
},
{
"refId": "G",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"soteria\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"soteria\"}[30d]))), 1)",
"legendFormat": "soteria"
},
{
"refId": "H",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"titan-iac\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"titan-iac\"}[30d]))), 1)",
"legendFormat": "titan-iac"
},
{
"refId": "I",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"bstein-home\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"bstein-home\"}[30d]))), 1)",
"legendFormat": "bstein-home"
},
{
"refId": "J",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"arcanagon\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"arcanagon\"}[30d]))), 1)",
"legendFormat": "arcanagon"
}
],
"fieldConfig": {
@ -1861,7 +1896,7 @@
"targetBlank": true
}
],
"description": "Application-level rolling pass rate (0-100) over the last 30 days. One line per suite (ariadne, metis, ananke)."
"description": "Application-level rolling pass rate (0-100) over the last 30 days. Includes Ariadne/Metis/Ananke and auto-picks additional suite lines when platform_quality_gate_runs_total is emitted."
},
{
"id": 47,

View File

@ -1274,6 +1274,41 @@ data:
"refId": "C",
"expr": "100 * (sum(increase(ananke_quality_gate_runs_total{suite=\"ananke\",status=\"ok\"}[30d]))) / clamp_min((sum(increase(ananke_quality_gate_runs_total{suite=\"ananke\"}[30d]))), 1)",
"legendFormat": "ananke"
},
{
"refId": "D",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"atlasbot\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"atlasbot\"}[30d]))), 1)",
"legendFormat": "atlasbot"
},
{
"refId": "E",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"lesavka\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"lesavka\"}[30d]))), 1)",
"legendFormat": "lesavka"
},
{
"refId": "F",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"pegasus\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"pegasus\"}[30d]))), 1)",
"legendFormat": "pegasus"
},
{
"refId": "G",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"soteria\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"soteria\"}[30d]))), 1)",
"legendFormat": "soteria"
},
{
"refId": "H",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"titan-iac\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"titan-iac\"}[30d]))), 1)",
"legendFormat": "titan-iac"
},
{
"refId": "I",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"bstein-home\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"bstein-home\"}[30d]))), 1)",
"legendFormat": "bstein-home"
},
{
"refId": "J",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"arcanagon\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"arcanagon\"}[30d]))), 1)",
"legendFormat": "arcanagon"
}
],
"fieldConfig": {
@ -1293,7 +1328,7 @@ data:
"mode": "multi"
}
},
"description": "Application-level rolling pass percentage over the last 30 days. One series per suite: ariadne, metis, ananke."
"description": "Application-level rolling pass percentage over the last 30 days. Existing suites: ariadne, metis, ananke; additional suites appear automatically when platform_quality_gate_runs_total is published."
}
],
"time": {

View File

@ -1841,6 +1841,41 @@ data:
"refId": "C",
"expr": "100 * (sum(increase(ananke_quality_gate_runs_total{suite=\"ananke\",status=\"ok\"}[30d]))) / clamp_min((sum(increase(ananke_quality_gate_runs_total{suite=\"ananke\"}[30d]))), 1)",
"legendFormat": "ananke"
},
{
"refId": "D",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"atlasbot\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"atlasbot\"}[30d]))), 1)",
"legendFormat": "atlasbot"
},
{
"refId": "E",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"lesavka\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"lesavka\"}[30d]))), 1)",
"legendFormat": "lesavka"
},
{
"refId": "F",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"pegasus\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"pegasus\"}[30d]))), 1)",
"legendFormat": "pegasus"
},
{
"refId": "G",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"soteria\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"soteria\"}[30d]))), 1)",
"legendFormat": "soteria"
},
{
"refId": "H",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"titan-iac\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"titan-iac\"}[30d]))), 1)",
"legendFormat": "titan-iac"
},
{
"refId": "I",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"bstein-home\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"bstein-home\"}[30d]))), 1)",
"legendFormat": "bstein-home"
},
{
"refId": "J",
"expr": "100 * (sum(increase(platform_quality_gate_runs_total{suite=\"arcanagon\",status=~\"ok|passed|success\"}[30d]))) / clamp_min((sum(increase(platform_quality_gate_runs_total{suite=\"arcanagon\"}[30d]))), 1)",
"legendFormat": "arcanagon"
}
],
"fieldConfig": {
@ -1870,7 +1905,7 @@ data:
"targetBlank": true
}
],
"description": "Application-level rolling pass rate (0-100) over the last 30 days. One line per suite (ariadne, metis, ananke)."
"description": "Application-level rolling pass rate (0-100) over the last 30 days. Includes Ariadne/Metis/Ananke and auto-picks additional suite lines when platform_quality_gate_runs_total is emitted."
},
{
"id": 47,