From 7c5567bf6d782f7244ef7e0213b0589051d90aa8 Mon Sep 17 00:00:00 2001 From: unkin-agent Date: Tue, 10 Nov 2026 23:33:04 +1100 Subject: [PATCH] Enable ARC metrics, scrape them and add the ARC dashboard --- apps/base/arc-system/kustomization.yaml | 1 + apps/base/arc-system/vmpodscrape.yaml | 40 +++++++++++++++++++ .../dashboards/arc-runner-scale-set.yaml | 15 +++++++ apps/base/grafana/kustomization.yaml | 1 + apps/overlays/au-syd1/arc-system/values.yaml | 5 +++ 5 files changed, 62 insertions(+) create mode 100644 apps/base/arc-system/vmpodscrape.yaml create mode 100644 apps/base/grafana/dashboards/arc-runner-scale-set.yaml diff --git a/apps/base/arc-system/kustomization.yaml b/apps/base/arc-system/kustomization.yaml index a26b1fa..541d0fe 100644 --- a/apps/base/arc-system/kustomization.yaml +++ b/apps/base/arc-system/kustomization.yaml @@ -5,3 +5,4 @@ kind: Kustomization resources: - namespace.yaml - pdb.yaml + - vmpodscrape.yaml diff --git a/apps/base/arc-system/vmpodscrape.yaml b/apps/base/arc-system/vmpodscrape.yaml new file mode 100644 index 0000000..b1e5ea7 --- /dev/null +++ b/apps/base/arc-system/vmpodscrape.yaml @@ -0,0 +1,40 @@ +--- +# Controller metrics. gha_controller_*_ephemeral_runners carry the runner +# namespace, which the dashboard filters on, so restore it over the target's. +apiVersion: operator.victoriametrics.com/v1beta1 +kind: VMPodScrape +metadata: + name: arc-controller + namespace: arc-system +spec: + selector: + matchLabels: + app.kubernetes.io/name: gha-rs-controller + app.kubernetes.io/instance: arc + podMetricsEndpoints: + - port: metrics + path: /metrics + metricRelabelConfigs: + - sourceLabels: [__name__, exported_namespace] + regex: gha_controller_.+_ephemeral_runners;(.+) + targetLabel: namespace +--- +# Listener metrics carry their own name/namespace (the runner scale set), and +# the dashboard also expects the scale-set pod labels. +apiVersion: operator.victoriametrics.com/v1beta1 +kind: VMPodScrape +metadata: + name: arc-listener + namespace: arc-system +spec: + selector: + matchLabels: + app.kubernetes.io/component: runner-scale-set-listener + app.kubernetes.io/part-of: gha-runner-scale-set + podMetricsEndpoints: + - port: metrics + path: /metrics + honorLabels: true + relabelConfigs: + - action: labelmap + regex: __meta_kubernetes_pod_label_(actions_github_com_scale_set_.+) diff --git a/apps/base/grafana/dashboards/arc-runner-scale-set.yaml b/apps/base/grafana/dashboards/arc-runner-scale-set.yaml new file mode 100644 index 0000000..301286b --- /dev/null +++ b/apps/base/grafana/dashboards/arc-runner-scale-set.yaml @@ -0,0 +1,15 @@ +--- +# ARC runner scale set dashboard (actions/actions-runner-controller@gha-runner-scale-set-0.15.1), +# datasource resolved to the in-cluster VictoriaMetrics. Backed by the arc-system VMPodScrapes. +apiVersion: grafana.integreatly.org/v1beta1 +kind: GrafanaDashboard +metadata: + name: arc-runner-scale-set + namespace: grafana +spec: + instanceSelector: + matchLabels: + dashboards: "grafana" + resyncPeriod: 5m + allowCrossNamespaceImport: false + gzipJson: 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 diff --git a/apps/base/grafana/kustomization.yaml b/apps/base/grafana/kustomization.yaml index fcf8385..d2b1031 100644 --- a/apps/base/grafana/kustomization.yaml +++ b/apps/base/grafana/kustomization.yaml @@ -30,3 +30,4 @@ resources: - dashboards/victoriametrics-cluster.yaml - dashboards/victoriametrics-vmagent.yaml - dashboards/cloudnativepg.yaml + - dashboards/arc-runner-scale-set.yaml diff --git a/apps/overlays/au-syd1/arc-system/values.yaml b/apps/overlays/au-syd1/arc-system/values.yaml index 32bbd5e..27ac4c5 100644 --- a/apps/overlays/au-syd1/arc-system/values.yaml +++ b/apps/overlays/au-syd1/arc-system/values.yaml @@ -32,3 +32,8 @@ topologySpreadConstraints: flags: logLevel: info logFormat: json + +metrics: + controllerManagerAddr: ":8080" + listenerAddr: ":8080" + listenerEndpoint: "/metrics"