Posted on September 8, 2026 by George Sims, downtherabbithole. dev You've probably felt this one: GitHub Actions usage creeps up across your org, and your actual visibility into it doesn't keep pace. Which workflows are slow? How long are jobs sitting queued for a runner before they've even started doing anything? GitHub's own insights are per-repo and shallow. There's no cross-org view of CI health, no way to slice by team or workflow type, no way to alert when things quietly get worse.
Someone eventually asks why CI took forty minutes yesterday, and the honest answer is "let me go check that one repo and get back to you. " So let's actually fix that properly, without asking a single team to touch a single workflow file. The instinctive answer is to instrument each workflow: add a tracing step, wire up an SDK, sprinkle spans through the YAML. But it means every team has to opt in, every new repo starts blind until someone remembers to add it, and you end up maintaining instrumentation scattered across however many workflow files exist across the org.
That approach doesn't scale with your org, it scales with how diligent everyone stays about something that isn't their actual job. GitHub already knows almost everything you want. Every workflow run and every job inside it fires an event: workflow_run and workflow_job . You don't need to ask each repo to report on itself. You just need to listen to what GitHub is already telling you, at the org level, once. It's like trying to track a whole apartment building's water usage by asking every tenant to self-report their reading. New tenants won't even know they're supposed to.
The easier answer is to read the one meter at the street, where every pipe in the building already converges, whether the tenants know it's there or not. An OpenTelemetry Collector with the githubreceiver component sits behind a single org-level GitHub webhook and converts incoming workflow_run and workflow_job events straight into OTLP spans. Worth knowing upfront: it's a contrib component still at alpha stability, so the config surface can shift.
