{"version":"2.1.224","anchor":"prometheus-metrics-on-the-runner-and-orchestrator-health-por","canonical_anchor":"prometheus-metrics-on-the-runner-and-orchestrator-health-por","heading":"Prometheus metrics on the runner and orchestrator health port","tier":"use","area":"Self-Hosted Runner","scope":null,"heads_up":null,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.224\/e\/prometheus-metrics-on-the-runner-and-orchestrator-health-por","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.224","markdown":"### Prometheus metrics on the runner and orchestrator health port\n\nThe runner and orchestrator serve Prometheus metrics at \/metrics on the health port.\n\n**What**\n\nThe health listener (`--health-port`, default 8080, 0 disables) now serves Prometheus metrics at `\/metrics` alongside `\/healthz`. The runner exports `claude_code_self_hosted_runner_*`: capacity, active and initializing sessions, per-platform session counts, init duration, poll errors and per-session idle time. The orchestrator exports `claude_code_self_hosted_orchestrator_*`: queue depth, spawn-hook outcomes, spawn-hook and queue-wait histograms, clock skew and connector state.\n\n**Details**\n\n- Poll-error series are pre-seeded for all five kinds (transport, timeout, 5xx, 429, 4xx) so `rate()` queries work from the moment the process starts rather than from the first error.\n- Whether the listener bound successfully is reported through telemetry named `self_hosted_healthz_listen`.\n\n**Evidence**\n\n`text\/plain; version=0.0.4; charset=utf-8`\n\n- Area: Self-Hosted Runner\n- Names: `--health-port`, `\/metrics`, `\/healthz`\n- Tier: Use it now\n- Useful: 3\/5\n- Signal: 3\/5"}