diff --git a/scripts/dashboards_render_atlas.py b/scripts/dashboards_render_atlas.py index 545a08cb..c96de608 100644 --- a/scripts/dashboards_render_atlas.py +++ b/scripts/dashboards_render_atlas.py @@ -71,6 +71,19 @@ def latest_suite_value( latest_series = f"topk by (suite) (1, {sample_time})" return f"max by (suite) (({sample}) and ({latest_series}))" + +def deduped_counter_increase(selector: str, window: str, step: str = "1m") -> str: + """Increase after collapsing Pushgateway scrape identity labels.""" + return f"increase((max without(instance, job) ({selector}))[{window}:{step}])" + + +def platform_runs_increase(label_selector: str, window: str) -> str: + """Return a scrape-deduped increase for platform quality run gauges.""" + return deduped_counter_increase( + f"platform_quality_gate_runs_total{{{label_selector}}}", + window, + ) + PERCENT_THRESHOLDS = { "mode": "absolute", "steps": [ @@ -584,22 +597,22 @@ PLATFORM_TEST_OVERVIEW_CATEGORY_REGEX = ( ) PLATFORM_TEST_SUPPORT_CATEGORY_REGEX = "fixtures|golden|helpers" PLATFORM_TEST_SUCCESS_EVENTS_30D = ( - f'(sum(increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",status=~"{PLATFORM_TEST_SUCCESS_STATUS}",{PLATFORM_TEST_EXPORT_FILTER}}}[30d])) or on() vector(0))' + f'(sum({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_MATCHER}\",status=~\"{PLATFORM_TEST_SUCCESS_STATUS}\",{PLATFORM_TEST_EXPORT_FILTER}", "30d")}) or on() vector(0))' ) PLATFORM_TEST_TOTAL_EVENTS_30D = ( - f'(sum(increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",{PLATFORM_TEST_EXPORT_FILTER}}}[30d])) or on() vector(0))' + f'(sum({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_MATCHER}\",{PLATFORM_TEST_EXPORT_FILTER}", "30d")}) or on() vector(0))' ) PLATFORM_TEST_SUCCESS_EVENTS_7D = ( - f'(sum(increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",status=~"{PLATFORM_TEST_SUCCESS_STATUS}",{PLATFORM_TEST_EXPORT_FILTER}}}[7d])) or on() vector(0))' + f'(sum({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_MATCHER}\",status=~\"{PLATFORM_TEST_SUCCESS_STATUS}\",{PLATFORM_TEST_EXPORT_FILTER}", "7d")}) or on() vector(0))' ) PLATFORM_TEST_TOTAL_EVENTS_7D = ( - f'(sum(increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",{PLATFORM_TEST_EXPORT_FILTER}}}[7d])) or on() vector(0))' + f'(sum({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_MATCHER}\",{PLATFORM_TEST_EXPORT_FILTER}", "7d")}) or on() vector(0))' ) PLATFORM_TEST_SUCCESS_EVENTS_24H = ( - f'(sum(increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",status=~"{PLATFORM_TEST_SUCCESS_STATUS}",{PLATFORM_TEST_EXPORT_FILTER}}}[24h])) or on() vector(0))' + f'(sum({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_MATCHER}\",status=~\"{PLATFORM_TEST_SUCCESS_STATUS}\",{PLATFORM_TEST_EXPORT_FILTER}", "24h")}) or on() vector(0))' ) PLATFORM_TEST_TOTAL_EVENTS_24H = ( - f'(sum(increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",{PLATFORM_TEST_EXPORT_FILTER}}}[24h])) or on() vector(0))' + f'(sum({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_MATCHER}\",{PLATFORM_TEST_EXPORT_FILTER}", "24h")}) or on() vector(0))' ) TEST_SUCCESS_RATE = ( f"100 * ({PLATFORM_TEST_SUCCESS_EVENTS_30D}) / clamp_min(({PLATFORM_TEST_TOTAL_EVENTS_30D}), 1)" @@ -611,17 +624,17 @@ TEST_SUCCESS_RATE_24H = ( f"100 * ({PLATFORM_TEST_SUCCESS_EVENTS_24H}) / clamp_min(({PLATFORM_TEST_TOTAL_EVENTS_24H}), 1)" ) TEST_FAILURES_24H_TOTAL = ( - f'(sum(increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",status!~"{PLATFORM_TEST_SUCCESS_STATUS}",{PLATFORM_TEST_EXPORT_FILTER}}}[24h])) or on() vector(0))' + f'(sum({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_MATCHER}\",status!~\"{PLATFORM_TEST_SUCCESS_STATUS}\",{PLATFORM_TEST_EXPORT_FILTER}", "24h")}) or on() vector(0))' ) PLATFORM_TEST_FAILURES_24H_BY_SUITE = ( - f'sort_desc(sum by (suite) (increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",status!~"{PLATFORM_TEST_SUCCESS_STATUS}",{PLATFORM_TEST_EXPORT_FILTER}}}[24h])))' + f'sort_desc(sum by (suite) ({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_MATCHER}\",status!~\"{PLATFORM_TEST_SUCCESS_STATUS}\",{PLATFORM_TEST_EXPORT_FILTER}", "24h")}))' ) PLATFORM_TEST_ACTIVITY_30D = ( - f'sum by (suite, status) (increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",{PLATFORM_TEST_EXPORT_FILTER}}}[30d]))' + f'sum by (suite, status) ({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_MATCHER}\",{PLATFORM_TEST_EXPORT_FILTER}", "30d")})' ) PLATFORM_TEST_RUNS_24H_TOTAL = PLATFORM_TEST_TOTAL_EVENTS_24H PLATFORM_TEST_ACTIVE_SUITES_24H = ( - f'sum((sum by (suite) (increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_CANONICAL_MATCHER}",{PLATFORM_TEST_EXPORT_FILTER}}}[24h])) > bool 0)) ' + f'sum((sum by (suite) ({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_CANONICAL_MATCHER}\",{PLATFORM_TEST_EXPORT_FILTER}", "24h")}) > bool 0)) ' "or on() vector(0)" ) PLATFORM_TEST_POINT_WINDOW = "1h" @@ -688,20 +701,19 @@ PLATFORM_TEST_SUCCESS_RATE_SUITE_TARGETS = [ { "refId": chr(ord("A") + index), "expr": ( - f'(100 * (sum(increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_VALUE_BY_NAME.get(suite, suite)}",status=~"{PLATFORM_TEST_SUCCESS_STATUS}",{PLATFORM_TEST_EXPORT_FILTER}}}' - f'[{PLATFORM_TEST_POINT_WINDOW}]))) / ' - f'clamp_min((sum(increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_VALUE_BY_NAME.get(suite, suite)}",{PLATFORM_TEST_EXPORT_FILTER}}}[{PLATFORM_TEST_POINT_WINDOW}]))), 1))' + f'(100 * (sum({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_VALUE_BY_NAME.get(suite, suite)}\",status=~\"{PLATFORM_TEST_SUCCESS_STATUS}\",{PLATFORM_TEST_EXPORT_FILTER}", PLATFORM_TEST_POINT_WINDOW)}))) / ' + f'clamp_min((sum({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_VALUE_BY_NAME.get(suite, suite)}\",{PLATFORM_TEST_EXPORT_FILTER}", PLATFORM_TEST_POINT_WINDOW)})), 1))' ), "legendFormat": suite, } for index, suite in enumerate(PLATFORM_TEST_SUITE_NAMES) ] PLATFORM_TEST_SUCCESS_RATE_24H_BY_SUITE = ( - f'sort_desc(100 * (sum by (suite) (increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",status=~"{PLATFORM_TEST_SUCCESS_STATUS}",{PLATFORM_TEST_EXPORT_FILTER}}}[24h]))) ' - f'/ clamp_min((sum by (suite) (increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_MATCHER}",{PLATFORM_TEST_EXPORT_FILTER}}}[24h]))), 1))' + f'sort_desc(100 * (sum by (suite) ({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_MATCHER}\",status=~\"{PLATFORM_TEST_SUCCESS_STATUS}\",{PLATFORM_TEST_EXPORT_FILTER}", "24h")})) ' + f'/ clamp_min((sum by (suite) ({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_MATCHER}\",{PLATFORM_TEST_EXPORT_FILTER}", "24h")})), 1))' ) QUALITY_GATE_SUITE_INDEX_30D = ( - f'sum by (suite) (increase(platform_quality_gate_runs_total{{suite=~"{PLATFORM_TEST_SUITE_CANONICAL_MATCHER}",{PLATFORM_TEST_EXPORT_FILTER}}}[30d]))' + f'sum by (suite) ({platform_runs_increase(f"suite=~\"{PLATFORM_TEST_SUITE_CANONICAL_MATCHER}\",{PLATFORM_TEST_EXPORT_FILTER}", "30d")})' ) QUALITY_GATE_COVERAGE_BY_SUITE = ( latest_suite_value( @@ -1848,10 +1860,9 @@ def build_overview(): ] targets = [] for index, (legend, suite_regex) in enumerate(suites): - total = f'sum(increase(platform_quality_gate_runs_total{{suite=~"{suite_regex}"}}[1h]))' + total = f'sum({platform_runs_increase(f"suite=~\"{suite_regex}\",{PLATFORM_TEST_EXPORT_FILTER}", "1h")})' passed = ( - f'sum(increase(platform_quality_gate_runs_total{{suite=~"{suite_regex}",' - f'status=~"{PLATFORM_TEST_SUCCESS_STATUS}"}}[1h]))' + f'sum({platform_runs_increase(f"suite=~\"{suite_regex}\",status=~\"{PLATFORM_TEST_SUCCESS_STATUS}\",{PLATFORM_TEST_EXPORT_FILTER}", "1h")})' ) targets.append( { @@ -3870,22 +3881,22 @@ def build_jobs_dashboard(): for suite in PLATFORM_TEST_SUITE_NAMES ) - runs_24h = f'(sum(increase(platform_quality_gate_runs_total{{{runs_selector}}}[24h])) or on() vector(0))' - runs_30d = f'(sum(increase(platform_quality_gate_runs_total{{{runs_selector}}}[30d])) or on() vector(0))' + runs_24h = f'(sum({platform_runs_increase(runs_selector, "24h")}) or on() vector(0))' + runs_30d = f'(sum({platform_runs_increase(runs_selector, "30d")}) or on() vector(0))' success_24h = ( - f'(sum(increase(platform_quality_gate_runs_total{{{runs_success_selector}}}[24h])) or on() vector(0))' + f'(sum({platform_runs_increase(runs_success_selector, "24h")}) or on() vector(0))' ) success_30d = ( - f'(sum(increase(platform_quality_gate_runs_total{{{runs_success_selector}}}[30d])) or on() vector(0))' + f'(sum({platform_runs_increase(runs_success_selector, "30d")}) or on() vector(0))' ) failures_24h = ( - f'(sum(increase(platform_quality_gate_runs_total{{{runs_failure_selector}}}[24h])) or on() vector(0))' + f'(sum({platform_runs_increase(runs_failure_selector, "24h")}) or on() vector(0))' ) success_rate_24h = f"100 * ({success_24h}) / clamp_min(({runs_24h}), 1)" success_rate_30d = f"100 * ({success_30d}) / clamp_min(({runs_30d}), 1)" - runs_by_suite_24h = f'sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_selector}}}[24h]))' + runs_by_suite_24h = f'sum by (suite) ({platform_runs_increase(runs_selector, "24h")})' success_by_suite_24h = ( - f'sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_success_selector}}}[24h]))' + f'sum by (suite) ({platform_runs_increase(runs_success_selector, "24h")})' ) success_rate_by_suite_24h = ( f'((100 * ({success_by_suite_24h}) / clamp_min(({runs_by_suite_24h}), 1)) ' @@ -3905,16 +3916,16 @@ def build_jobs_dashboard(): f"((100 * ({current_gate_ok_checks}) / clamp_min(({current_gate_seen_checks}), 1)) " f"or on(suite) ({selected_suite_missing}))" ) - success_history_runs = f'sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_selector}}}[7d]))' + success_history_runs = f'sum by (suite) ({platform_runs_increase(runs_selector, "7d")})' success_history_by_suite = ( - f'(100 * sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_success_selector}}}[7d])) ' + f'(100 * sum by (suite) ({platform_runs_increase(runs_success_selector, "7d")}) ' f'/ ({success_history_runs})) and on(suite) (({success_history_runs}) > 0)' ) daily_success_volume = ( - f'sum(increase(platform_quality_gate_runs_total{{{runs_success_selector}}}[24h])) or on() vector(0)' + f'sum({platform_runs_increase(runs_success_selector, "24h")}) or on() vector(0)' ) daily_failure_volume = ( - f'sum(increase(platform_quality_gate_runs_total{{{runs_failure_selector}}}[24h])) or on() vector(0)' + f'sum({platform_runs_increase(runs_failure_selector, "24h")}) or on() vector(0)' ) coverage_by_suite = ( latest_suite_value( @@ -3943,7 +3954,7 @@ def build_jobs_dashboard(): ) ) coverage_with_missing = ( - f"({coverage_by_suite}) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_selector}}}[30d])))) - 1)" + f"({coverage_by_suite}) or on(suite) ((0 * (sum by (suite) ({platform_runs_increase(runs_selector, '30d')}))) - 1)" ) smell_by_suite = ( latest_suite_value( @@ -3970,7 +3981,7 @@ def build_jobs_dashboard(): ) ) smell_with_missing = ( - f"({smell_by_suite}) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_selector}}}[30d])))) - 1)" + f"({smell_by_suite}) or on(suite) ((0 * (sum by (suite) ({platform_runs_increase(runs_selector, '30d')}))) - 1)" ) loc_limit_compliance_by_suite = ( f"(100 * clamp_min(({loc_files_by_suite}) - ({smell_by_suite}), 0) / ({loc_files_by_suite})) " @@ -3979,7 +3990,7 @@ def build_jobs_dashboard(): loc_limit_compliance_with_missing = ( f"({loc_limit_compliance_by_suite}) " f"or on(suite) (100 * (1 - clamp_max(({smell_by_suite}), 1))) " - f"or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{{{runs_selector}}}[30d])))) - 1)" + f"or on(suite) ((0 * (sum by (suite) ({platform_runs_increase(runs_selector, '30d')}))) - 1)" ) loc_limit_compliance_history = ( f"(100 * clamp_min(({loc_files_history_by_suite}) - ({smell_history_by_suite}), 0) / ({loc_files_history_by_suite})) " diff --git a/scripts/tests/test_dashboards_render_atlas.py b/scripts/tests/test_dashboards_render_atlas.py index 8657d8eb..50f8e9ca 100644 --- a/scripts/tests/test_dashboards_render_atlas.py +++ b/scripts/tests/test_dashboards_render_atlas.py @@ -255,7 +255,7 @@ def test_jobs_dashboard_separates_current_gate_health_from_reliability(): rolling_panel = panels_by_title["CI Run Success by Suite (7d rolling)"] assert rolling_panel["type"] == "state-timeline" - assert "[7d]" in rolling_panel["targets"][0]["expr"] + assert "[7d:1m]" in rolling_panel["targets"][0]["expr"] category_panel = panels_by_title["Test Category Pass Rate History"] assert category_panel["type"] == "state-timeline" assert "category" in category_panel["targets"][0]["expr"] diff --git a/services/monitoring/dashboards/atlas-overview.json b/services/monitoring/dashboards/atlas-overview.json index a148a021..0096216d 100644 --- a/services/monitoring/dashboards/atlas-overview.json +++ b/services/monitoring/dashboards/atlas-overview.json @@ -2127,7 +2127,7 @@ }, "targets": [ { - "expr": "100 * ((sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",status=~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))) / clamp_min(((sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))), 1)", + "expr": "100 * ((sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",status=~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}))[24h:1m])) or on() vector(0))) / clamp_min(((sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",exported_job=\"platform-quality-ci\"}))[24h:1m])) or on() vector(0))), 1)", "refId": "A", "instant": true } @@ -2213,7 +2213,7 @@ }, "targets": [ { - "expr": "(sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",status!~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))", + "expr": "(sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",status!~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}))[24h:1m])) or on() vector(0))", "refId": "A", "instant": true } @@ -2295,7 +2295,7 @@ }, "targets": [ { - "expr": "sum((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|typhon|bstein_home|data_prepper\",exported_job=\"platform-quality-ci\"}[24h])) > bool 0)) or on() vector(0)", + "expr": "sum((sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|typhon|bstein_home|data_prepper\",exported_job=\"platform-quality-ci\"}))[24h:1m])) > bool 0)) or on() vector(0)", "refId": "A", "instant": true } diff --git a/services/monitoring/dashboards/atlas-testing.json b/services/monitoring/dashboards/atlas-testing.json index 0132122d..8d5c39a2 100644 --- a/services/monitoring/dashboards/atlas-testing.json +++ b/services/monitoring/dashboards/atlas-testing.json @@ -20,7 +20,7 @@ }, "targets": [ { - "expr": "100 * ((sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[24h])) or on() vector(0))) / clamp_min(((sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))), 1)", + "expr": "100 * ((sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}))[24h:1m])) or on() vector(0))) / clamp_min(((sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[24h:1m])) or on() vector(0))), 1)", "refId": "A", "instant": true } @@ -95,7 +95,7 @@ }, "targets": [ { - "expr": "100 * ((sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d])) or on() vector(0))) / clamp_min(((sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) or on() vector(0))), 1)", + "expr": "100 * ((sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}))[30d:1m])) or on() vector(0))) / clamp_min(((sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[30d:1m])) or on() vector(0))), 1)", "refId": "A", "instant": true } @@ -170,7 +170,7 @@ }, "targets": [ { - "expr": "(sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}[24h])) or on() vector(0))", + "expr": "(sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}))[24h:1m])) or on() vector(0))", "refId": "A", "instant": true } @@ -244,7 +244,7 @@ }, "targets": [ { - "expr": "(sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))", + "expr": "(sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[24h:1m])) or on() vector(0))", "refId": "A", "instant": true } @@ -548,7 +548,7 @@ }, "targets": [ { - "expr": "sort(((100 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[24h]))) / clamp_min((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[24h]))), 1)) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[24h]))) > 0)) or on(suite) ((((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))) - 1)))", + "expr": "sort(((100 * (sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}))[24h:1m]))) / clamp_min((sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[24h:1m]))), 1)) and on(suite) ((sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[24h:1m]))) > 0)) or on(suite) ((((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))) - 1)))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -641,7 +641,7 @@ }, "targets": [ { - "expr": "sort((max by (suite) ((((last_over_time(platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0)))) and (topk by (suite) (1, ((tlast_over_time(platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0)))))) or on(suite) max by (suite) ((((last_over_time({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0)))) and (topk by (suite) (1, ((tlast_over_time({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0))))))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])))) - 1))", + "expr": "sort((max by (suite) ((((last_over_time(platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0)))) and (topk by (suite) (1, ((tlast_over_time(platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0)))))) or on(suite) max by (suite) ((((last_over_time({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0)))) and (topk by (suite) (1, ((tlast_over_time({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0))))))) or on(suite) ((0 * (sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[30d:1m])))) - 1))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -734,7 +734,7 @@ }, "targets": [ { - "expr": "sort(((100 * clamp_min((max by (suite) ((last_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))) - (max by (suite) ((last_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))), 0) / (max by (suite) ((last_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])))))) and on(suite) ((max by (suite) ((last_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))) > 0)) or on(suite) (100 * (1 - clamp_max((max by (suite) ((last_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))), 1))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])))) - 1))", + "expr": "sort(((100 * clamp_min((max by (suite) ((last_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))) - (max by (suite) ((last_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))), 0) / (max by (suite) ((last_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])))))) and on(suite) ((max by (suite) ((last_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))) > 0)) or on(suite) (100 * (1 - clamp_max((max by (suite) ((last_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))), 1))) or on(suite) ((0 * (sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[30d:1m])))) - 1))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -840,7 +840,7 @@ }, "targets": [ { - "expr": "(100 * sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[7d])) / (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[7d])))) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[7d]))) > 0)", + "expr": "(100 * sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}))[7d:1m])) / (sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[7d:1m])))) and on(suite) ((sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[7d:1m]))) > 0)", "refId": "A", "legendFormat": "{{suite}}" } @@ -1109,12 +1109,12 @@ "targets": [ { "refId": "A", - "expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[24h])) or on() vector(0)", + "expr": "sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}))[24h:1m])) or on() vector(0)", "legendFormat": "Success" }, { "refId": "B", - "expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}[24h])) or on() vector(0)", + "expr": "sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}))[24h:1m])) or on() vector(0)", "legendFormat": "Failure" } ], diff --git a/services/monitoring/grafana-dashboard-overview.yaml b/services/monitoring/grafana-dashboard-overview.yaml index c1045a83..15068bed 100644 --- a/services/monitoring/grafana-dashboard-overview.yaml +++ b/services/monitoring/grafana-dashboard-overview.yaml @@ -2136,7 +2136,7 @@ data: }, "targets": [ { - "expr": "100 * ((sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",status=~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))) / clamp_min(((sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))), 1)", + "expr": "100 * ((sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",status=~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}))[24h:1m])) or on() vector(0))) / clamp_min(((sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",exported_job=\"platform-quality-ci\"}))[24h:1m])) or on() vector(0))), 1)", "refId": "A", "instant": true } @@ -2222,7 +2222,7 @@ data: }, "targets": [ { - "expr": "(sum(increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",status!~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))", + "expr": "(sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|pegasus-health|pegasus_health|soteria|titan_iac|titan-iac|typhon|bstein_home|bstein-home|data_prepper|data-prepper\",status!~\"ok|passed|success\",exported_job=\"platform-quality-ci\"}))[24h:1m])) or on() vector(0))", "refId": "A", "instant": true } @@ -2304,7 +2304,7 @@ data: }, "targets": [ { - "expr": "sum((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|typhon|bstein_home|data_prepper\",exported_job=\"platform-quality-ci\"}[24h])) > bool 0)) or on() vector(0)", + "expr": "sum((sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"ariadne|metis|ananke|atlasbot|lesavka|pegasus|soteria|titan_iac|typhon|bstein_home|data_prepper\",exported_job=\"platform-quality-ci\"}))[24h:1m])) > bool 0)) or on() vector(0)", "refId": "A", "instant": true } diff --git a/services/monitoring/grafana-dashboard-testing.yaml b/services/monitoring/grafana-dashboard-testing.yaml index 0f054276..627822af 100644 --- a/services/monitoring/grafana-dashboard-testing.yaml +++ b/services/monitoring/grafana-dashboard-testing.yaml @@ -29,7 +29,7 @@ data: }, "targets": [ { - "expr": "100 * ((sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[24h])) or on() vector(0))) / clamp_min(((sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))), 1)", + "expr": "100 * ((sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}))[24h:1m])) or on() vector(0))) / clamp_min(((sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[24h:1m])) or on() vector(0))), 1)", "refId": "A", "instant": true } @@ -104,7 +104,7 @@ data: }, "targets": [ { - "expr": "100 * ((sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d])) or on() vector(0))) / clamp_min(((sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) or on() vector(0))), 1)", + "expr": "100 * ((sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}))[30d:1m])) or on() vector(0))) / clamp_min(((sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[30d:1m])) or on() vector(0))), 1)", "refId": "A", "instant": true } @@ -179,7 +179,7 @@ data: }, "targets": [ { - "expr": "(sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}[24h])) or on() vector(0))", + "expr": "(sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}))[24h:1m])) or on() vector(0))", "refId": "A", "instant": true } @@ -253,7 +253,7 @@ data: }, "targets": [ { - "expr": "(sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[24h])) or on() vector(0))", + "expr": "(sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[24h:1m])) or on() vector(0))", "refId": "A", "instant": true } @@ -557,7 +557,7 @@ data: }, "targets": [ { - "expr": "sort(((100 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[24h]))) / clamp_min((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[24h]))), 1)) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[24h]))) > 0)) or on(suite) ((((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))) - 1)))", + "expr": "sort(((100 * (sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}))[24h:1m]))) / clamp_min((sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[24h:1m]))), 1)) and on(suite) ((sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[24h:1m]))) > 0)) or on(suite) ((((0 * ((count by (suite) (platform_quality_gate_build_info{suite=~\"${suite:regex}\",branch!=\"\",branch=~\"${branch:regex}\",exported_job=\"platform-quality-ci\"}) >= bool 0) or (count by (suite) (max_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) >= bool 0)))) - 1)))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -650,7 +650,7 @@ data: }, "targets": [ { - "expr": "sort((max by (suite) ((((last_over_time(platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0)))) and (topk by (suite) (1, ((tlast_over_time(platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0)))))) or on(suite) max by (suite) ((((last_over_time({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0)))) and (topk by (suite) (1, ((tlast_over_time({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0))))))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])))) - 1))", + "expr": "sort((max by (suite) ((((last_over_time(platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0)))) and (topk by (suite) (1, ((tlast_over_time(platform_quality_gate_workspace_line_coverage_percent{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0)))))) or on(suite) max by (suite) ((((last_over_time({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0)))) and (topk by (suite) (1, ((tlast_over_time({__name__=~\".*_quality_gate_coverage_percent\",suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and on(suite) ((last_over_time(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[30d]) > 0))))))) or on(suite) ((0 * (sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[30d:1m])))) - 1))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -743,7 +743,7 @@ data: }, "targets": [ { - "expr": "sort(((100 * clamp_min((max by (suite) ((last_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))) - (max by (suite) ((last_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))), 0) / (max by (suite) ((last_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])))))) and on(suite) ((max by (suite) ((last_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))) > 0)) or on(suite) (100 * (1 - clamp_max((max by (suite) ((last_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))), 1))) or on(suite) ((0 * (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])))) - 1))", + "expr": "sort(((100 * clamp_min((max by (suite) ((last_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))) - (max by (suite) ((last_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))), 0) / (max by (suite) ((last_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])))))) and on(suite) ((max by (suite) ((last_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_files_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))) > 0)) or on(suite) (100 * (1 - clamp_max((max by (suite) ((last_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d])) and (topk by (suite) (1, tlast_over_time(platform_quality_gate_source_lines_over_500_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[30d]))))), 1))) or on(suite) ((0 * (sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[30d:1m])))) - 1))", "refId": "A", "legendFormat": "{{suite}}", "instant": true @@ -849,7 +849,7 @@ data: }, "targets": [ { - "expr": "(100 * sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[7d])) / (sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[7d])))) and on(suite) ((sum by (suite) (increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}[7d]))) > 0)", + "expr": "(100 * sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}))[7d:1m])) / (sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[7d:1m])))) and on(suite) ((sum by (suite) (increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\"}))[7d:1m]))) > 0)", "refId": "A", "legendFormat": "{{suite}}" } @@ -1118,12 +1118,12 @@ data: "targets": [ { "refId": "A", - "expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}[24h])) or on() vector(0)", + "expr": "sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status=~\"ok|passed|success\"}))[24h:1m])) or on() vector(0)", "legendFormat": "Success" }, { "refId": "B", - "expr": "sum(increase(platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}[24h])) or on() vector(0)", + "expr": "sum(increase((max without(instance, job) (platform_quality_gate_runs_total{suite=~\"${suite:regex}\",exported_job=\"platform-quality-ci\",status!~\"ok|passed|success\"}))[24h:1m])) or on() vector(0)", "legendFormat": "Failure" } ],