From 632d4c9fa4a3247e82ec5e67f65d7070fa083f23 Mon Sep 17 00:00:00 2001 From: Christopher Bartz Date: Tue, 28 Apr 2026 14:32:59 +0200 Subject: [PATCH] fix: make hostmetrics dashboard single-runner drilldown --- .../runner_vm_hostmetrics.json | 65 +++++++++---------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/runner_grafana_dashboards/runner_vm_hostmetrics.json b/runner_grafana_dashboards/runner_vm_hostmetrics.json index 043ca229..f430a80b 100644 --- a/runner_grafana_dashboards/runner_vm_hostmetrics.json +++ b/runner_grafana_dashboards/runner_vm_hostmetrics.json @@ -64,7 +64,7 @@ } ] }, - "description": "Host-level resource metrics (CPU, memory, disk, filesystem, network) for GitHub Actions runner VMs, based on the OpenTelemetry hostmetrics receiver. Filter by repository, workflow, job and runner to inspect a specific run, or pick \"All\" on a variable to widen the scope.", + "description": "Single-runner drilldown for host-level resource metrics (CPU, memory, disk, filesystem, network) on GitHub Actions runner VMs, based on the OpenTelemetry hostmetrics receiver. Pick exactly one runner; repository, workflow and job can be used to narrow the runner list.", "editable": false, "fiscalYearStartMonth": 0, "graphTooltip": 1, @@ -113,7 +113,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "1 - avg(rate(system_cpu_time_seconds_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",state=\"idle\"}[$__rate_interval]))", + "expr": "1 - avg(rate(system_cpu_time_seconds_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",state=\"idle\"}[$__rate_interval]))", "legendFormat": "__auto", "range": true, "refId": "A" @@ -154,7 +154,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "1 - (sum(system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",state=\"free\"}) / sum(system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\"}))", + "expr": "1 - (sum(system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",state=\"free\"}) / sum(system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\"}))", "legendFormat": "__auto", "range": true, "refId": "A" @@ -195,7 +195,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "sum(system_filesystem_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",mountpoint=\"/\",state=\"used\"}) / sum(system_filesystem_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",mountpoint=\"/\",state=~\"used|free\"})", + "expr": "sum(system_filesystem_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",mountpoint=\"/\",state=\"used\"}) / sum(system_filesystem_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",mountpoint=\"/\",state=~\"used|free\"})", "legendFormat": "__auto", "range": true, "refId": "A" @@ -229,7 +229,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "system_cpu_load_average_1m{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\"}", + "expr": "system_cpu_load_average_1m{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\"}", "legendFormat": "__auto", "range": true, "refId": "A" @@ -263,7 +263,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "count(count by (cpu) (system_cpu_time_seconds_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\"}))", + "expr": "count(count by (cpu) (system_cpu_time_seconds_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\"}))", "legendFormat": "__auto", "range": true, "refId": "A" @@ -297,7 +297,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "sum(system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\"})", + "expr": "sum(system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\"})", "legendFormat": "__auto", "range": true, "refId": "A" @@ -348,7 +348,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "1 - avg(rate(system_cpu_time_seconds_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",state=\"idle\"}[$__rate_interval]))", + "expr": "1 - avg(rate(system_cpu_time_seconds_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",state=\"idle\"}[$__rate_interval]))", "legendFormat": "CPU Utilization", "range": true, "refId": "A" @@ -398,7 +398,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "system_cpu_load_average_1m{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\"}", + "expr": "system_cpu_load_average_1m{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\"}", "legendFormat": "1m", "range": true, "refId": "A" @@ -406,7 +406,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "system_cpu_load_average_5m{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\"}", + "expr": "system_cpu_load_average_5m{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\"}", "legendFormat": "5m", "range": true, "refId": "B" @@ -414,7 +414,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "system_cpu_load_average_15m{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\"}", + "expr": "system_cpu_load_average_15m{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\"}", "legendFormat": "15m", "range": true, "refId": "C" @@ -422,7 +422,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "count(count by (cpu) (system_cpu_time_seconds_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\"}))", + "expr": "count(count by (cpu) (system_cpu_time_seconds_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\"}))", "legendFormat": "cores", "range": true, "refId": "D" @@ -472,7 +472,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",state=\"used\"}", + "expr": "system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",state=\"used\"}", "legendFormat": "used", "range": true, "refId": "A" @@ -480,7 +480,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",state=\"cached\"}", + "expr": "system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",state=\"cached\"}", "legendFormat": "cached", "range": true, "refId": "B" @@ -488,7 +488,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",state=\"buffered\"}", + "expr": "system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",state=\"buffered\"}", "legendFormat": "buffered", "range": true, "refId": "C" @@ -496,7 +496,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",state=\"free\"}", + "expr": "system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",state=\"free\"}", "legendFormat": "free", "range": true, "refId": "D" @@ -539,7 +539,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "1 - (sum(system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",state=\"free\"}) / sum(system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\"}))", + "expr": "1 - (sum(system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",state=\"free\"}) / sum(system_memory_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\"}))", "legendFormat": "Memory Utilization", "range": true, "refId": "A" @@ -595,7 +595,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "rate(system_disk_io_bytes_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",direction=\"read\"}[$__rate_interval])", + "expr": "rate(system_disk_io_bytes_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",direction=\"read\"}[$__rate_interval])", "legendFormat": "{{device}} read", "range": true, "refId": "A" @@ -603,7 +603,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "rate(system_disk_io_bytes_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",direction=\"write\"}[$__rate_interval])", + "expr": "rate(system_disk_io_bytes_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",direction=\"write\"}[$__rate_interval])", "legendFormat": "{{device}} write", "range": true, "refId": "B" @@ -651,7 +651,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "rate(system_disk_operations_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",direction=\"read\"}[$__rate_interval])", + "expr": "rate(system_disk_operations_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",direction=\"read\"}[$__rate_interval])", "legendFormat": "{{device}} read", "range": true, "refId": "A" @@ -659,7 +659,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "rate(system_disk_operations_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",direction=\"write\"}[$__rate_interval])", + "expr": "rate(system_disk_operations_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",direction=\"write\"}[$__rate_interval])", "legendFormat": "{{device}} write", "range": true, "refId": "B" @@ -702,7 +702,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "rate(system_disk_io_time_seconds_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\"}[$__rate_interval])", + "expr": "rate(system_disk_io_time_seconds_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\"}[$__rate_interval])", "legendFormat": "{{device}}", "range": true, "refId": "A" @@ -752,7 +752,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "sum by (mountpoint) (system_filesystem_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",state=\"used\"}) / sum by (mountpoint) (system_filesystem_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",state=~\"used|free\"})", + "expr": "sum by (mountpoint) (system_filesystem_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",state=\"used\"}) / sum by (mountpoint) (system_filesystem_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",state=~\"used|free\"})", "legendFormat": "{{mountpoint}}", "range": true, "refId": "A" @@ -794,7 +794,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "system_filesystem_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",state=\"used\"}", + "expr": "system_filesystem_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",state=\"used\"}", "legendFormat": "{{mountpoint}} used", "range": true, "refId": "A" @@ -802,7 +802,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "system_filesystem_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",state=\"free\"}", + "expr": "system_filesystem_usage_bytes{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",state=\"free\"}", "legendFormat": "{{mountpoint}} free", "range": true, "refId": "B" @@ -858,7 +858,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "rate(system_network_io_bytes_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",direction=\"receive\"}[$__rate_interval]) * 8", + "expr": "rate(system_network_io_bytes_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",direction=\"receive\"}[$__rate_interval]) * 8", "legendFormat": "{{device}} receive", "range": true, "refId": "A" @@ -866,7 +866,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "rate(system_network_io_bytes_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",direction=\"transmit\"}[$__rate_interval]) * 8", + "expr": "rate(system_network_io_bytes_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",direction=\"transmit\"}[$__rate_interval]) * 8", "legendFormat": "{{device}} transmit", "range": true, "refId": "B" @@ -914,7 +914,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "rate(system_network_packets_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",direction=\"receive\"}[$__rate_interval])", + "expr": "rate(system_network_packets_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",direction=\"receive\"}[$__rate_interval])", "legendFormat": "{{device}} receive", "range": true, "refId": "A" @@ -922,7 +922,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "rate(system_network_packets_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\",direction=\"transmit\"}[$__rate_interval])", + "expr": "rate(system_network_packets_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\",direction=\"transmit\"}[$__rate_interval])", "legendFormat": "{{device}} transmit", "range": true, "refId": "B" @@ -964,7 +964,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "rate(system_network_errors_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\"}[$__rate_interval])", + "expr": "rate(system_network_errors_total{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\"}[$__rate_interval])", "legendFormat": "{{device}} {{direction}} errors", "range": true, "refId": "A" @@ -1006,7 +1006,7 @@ { "datasource": {"type": "prometheus", "uid": "${prometheusds}"}, "editorMode": "code", - "expr": "sum by (state) (system_network_connections{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=~\"$github_runner\"})", + "expr": "sum by (state) (system_network_connections{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\",github_runner=\"$github_runner\"})", "legendFormat": "{{state}}", "range": true, "refId": "A" @@ -1081,9 +1081,8 @@ "query": "label_values(system_cpu_load_average_1m{github_repository=~\"$github_repository\",github_workflow=~\"$github_workflow\",github_job=~\"$github_job\"}, github_runner)", "refresh": 2, "sort": 1, - "includeAll": true, + "includeAll": false, "multi": false, - "allValue": ".*", "hide": 0 } ]