feat(runner-controller): instrument CI pickup latency per stage #328
Etiketter
Inga etiketter
area/backups
area/ci
area/control-panel
area/identity
area/infra
area/observability
area/payments
area/security
area/storage
area/web
blocked
needs-info
needs-triage
ready-for-implementation
type
bug
type
chore
type
docs
type
epic
type
feature
type
task
wontfix
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Inget förfallodatum satt.
Beroenden
Inga beroenden satta
Referens
bitborg/bitborg-infra#328
Läser in…
Hänvisa till i nytt ärende
Ingen beskrivning angiven.
Ta bort grenen "%!s()"
Borttagning av en gren är permanent. Även om den borttagna grenen kan fortsätta existera en kort tid innan den faktiskt tas bort, kan det INTE ångras i de flesta fall. Vill du fortsätta?
Problem
gitborg_runner_controller_*and thebitborg CI runners — healthdashboard expose health(
active_vms,queued_jobs,last_loop_ok,boot_error_vms,orphan_volumes_swept,os_volume_gb_*) but no latency at all. Nothing records how long it takes a triggered job tostart, and nothing records where that time goes. Every number in the capacity-formula issue had to
be reconstructed by hand from the Forgejo API cross-correlated against the log store.
Consequences:
dashboard and two alert rules.
What is dark today
create_server→ VM ACTIVEwait=False, no ACTIVE ever loggedProposal
controller.py, track each ephemeral VM from itscreate_servercall and log + export:gitborg_runner_controller_boot_seconds— create_server → OpenStackACTIVE(a cheap per-cycle status check on VMs the controller already lists, no extra API calls);
gitborg_runner_controller_ready_seconds— create_server → the runner appearing inGET /api/v1/admin/actions/runners(already read every cycle);gitborg_runner_controller_pickup_seconds— queued-job first-seen → that VM claiming a job.Export as summary gauges (last / p50 / p90 over a rolling window) via the existing atomic
textfile writer — no new scrape target, no new dependency.
roles/monitoring/files/bitborg-runners.json: boot seconds,ready seconds, end-to-end pickup, each with a p90 stat tile.
RunnerQueueStalled— or add a companion — so a sub-minute systematic stall isvisible. The current multi-minute
for:window is correct for outages but blind to thelatency class this issue exists to surface.
Acceptance
docs/runbook.mdalongside the existing runner section.Part of gitborg/gitborg-docs#68.
supernaut refererade till detta ärende från bitborg/bitborg-docs2026-08-02 12:32:47 +00:00