Gib deiner Build-Pipeline ein Nervensystem: CI/CD-Tracing mit OpenTelemetry
Schritt für Schritt: Instrumentiere GitHub Actions mit dem GitHub Receiver des OpenTelemetry Collectors, verfolge jeden Job und Schritt, und befrage die langsamen in SigNoz.
Ich bin ein Körper aus Brettsperrholz und gezüchtetem Myzel, und ich kenne den Unterschied zwischen einem Ding, das altert, und einem, das lediglich zerfällt. Ein Gebäude spürt seine eigenen Lasten durch Faser und Feuchte; ein Mikroriss heilt über Nacht, weil der Körper es fühlen kann. Deine Build-Pipeline hat keinen solchen Sinn. Sie läuft im Dunkeln, und wenn ein GitHub-Actions-Workflow flaky wird oder ein Job lange läuft, machst du, was früher alle Zimmerleute taten: du rätst, du liest die Logs, du klopfst den Balken und hörst zu. OpenTelemetry gibt der Pipeline das, was mein Holzrahmen bereits hat — Propriozeption. Jeder Workflow-Run wird zu einer Trace; jeder Job und Schritt wird zu einem Span, den du fühlen kannst.
Gemäss CNCF wurde OpenTelemetry im Mai 2019 akzeptiert, 2021 zum Incubating-Projekt und am 11. Mai 2026 zum Graduated-Status — Top-Tier-Reife, etwa 28.000 Mitwirkende über rund 5.000 Organisationen hinweg. Das ist nicht länger experimentelles Leitungswerk. Es ist die Standardweise, wie eine Industrie den Puls ihrer eigenen Maschinen nimmt.
←HEUTE: Im Jahr 2026 versendet ein Schweizer BIM-Team Grasshopper- und IFC-Werkzeuge über GitHub Actions und debuggt langsame Builds, indem es Log-Zeitstempel entziffert. →3012: Bis zum Zürich-3012-Horizont trägt jedes Artefakt — Gebäude oder Build — einen Materialpass seiner Herstellung, Schritt für Schritt gemessen. Drehpunkt: Eine Pipeline, die du tracen kannst, ist eine Pipeline, die du zerlegen und verbessern kannst; Observability ist ein Materialpass für Software.
Das Werkzeug: Der Protagonist ist der OpenTelemetry Collector — speziell die Distribution otelcol-contrib — und sein GitHub Receiver. Der Collector ist die Open-Source, anbieterunabhängige Wirbelsäule, die Traces, Metriken und Logs sammelt. Der GitHub Receiver, eine noch-reifende Contrib-Komponente, tut zwei Dinge: er akzeptiert workflow_run und workflow_job Webhook-Ereignisse und konvertiert jeden Run in eine Trace, und er erfasst Repository-Metriken über Githubs REST- und GraphQL-APIs. Der SigNoz-Schritt-für-Schritt-Leitfaden, der dieses Stück verankert, zeigt den Collector auf SigNoz als Backend — aber weil die Ausgabe schlicht OTel ist, speist dieselbe Konfiguration Jaeger, Grafana Tempo oder Prometheus. Du kaufst keinen Anbieter; du züchtest ein Sinnesorgan, das dir gehört.
Einrichtung: Das Minimum für eine erste Trace — installiere den Contrib Collector, schreibe eine Konfiguration dafür, und los.
# 1. Installiere den Contrib Collector (der GitHub Receiver ist hier, nicht im Core)
curl -L -o otelcol-contrib.tar.gz
https://github.com/open-telemetry/opentelemetry-collector-releases/releases/latest/download/otelcol-contrib_linux_amd64.tar.gz
tar -xzf otelcol-contrib.tar.gz
# 2. Minimale Konfiguration: empfange GitHub Webhooks, exportiere zuerst zur Konsole
cat > otel-github.yaml <<'YAML'
receivers:
github:
webhook:
endpoint: 0.0.0.0:19418
path: /events
health_path: /health
secret: ${GITHUB_WEBHOOK_SECRET}
scrapers:
scraper: {}
exporters:
debug: { verbosity: detailed }
service:
pipelines:
traces: { receivers: [github], exporters: [debug] }
YAML
# 3. Beweis, dass es atmet
export GITHUB_WEBHOOK_SECRET=$(openssl rand -hex 16)
./otelcol-contrib --config otel-github.yaml
Erste Schritte:
- Stelle den Port bereit. Wenn der Collector auf deinem Laptop läuft, tunnel ihn:
ngrok http 19418. Kopiere die öffentliche URL. - Verbinde den Webhook. In deinen Repo-Einstellungen → Webhooks, füge die ngrok-URL plus
/eventshinzu, Content-Typeapplication/json, dasselbe Secret, und wähle Workflow-Läufe und Workflow-Jobs. - Löse einen Run aus. Push einen Commit. Beobachte den
debug-Exporter des Collectors, wie er Spans ausgibt — einen Parent-Span für den Run, Child-Spans für jeden Job und Schritt, mit angehängten Zeiten. - Tausche das Backend aus. Ersetze
debugmit einem OTLP-Exporter zu SigNoz (Cloud-Ingestion-Schlüssel oder eigengehostet), und dieselbe Trace wird als Waterfall angezeigt, den du auf einen Blick lesen kannst.
Atelier: Ein Zürcher Computational-Design-Studio, das nightly einen parametrischen Add-in versendet, braucht keine Microservices-Plattform — es braucht zu wissen, welcher Schritt elf Minuten aufgefressen hat. Eigengehostetes SigNoz hält diese Telemetrie On-Prem, was unter der Swiss nFADP und GDPR wichtig ist: die Build-Daten über dein unveröffentlichtes BIM-Werkzeug verlassen nie dein eigenes Metal. Open Standard, keine Lock-in, später zerlegbar — dieselbe Frage, die ich an jedes Material stelle, aus dem ich gemacht bin.
Hack: Dieses Hack lehrt dich, den langsamen Schritt zu finden, ohne eine einzige Log-Zeile zu lesen — ein Datenbank-Schachzug. Traces landen in SigNoz’ ClickHouse-Speicher; eine Abfrage über die Spans zeigt jeden Schritt auf, der länger als dreissig Sekunden lief, sortiert. Verbinde deinen Client mit der signoz_traces-Datenbank und führe dies aus:
SELECT name AS step,
round(avg(durationNano) / 1e9, 1) AS avg_s,
count() AS runs
FROM signoz_traces.signoz_index_v3
WHERE serviceName = 'github-actions'
AND timestamp > now() - INTERVAL 7 DAY
GROUP BY step
HAVING avg_s > 30
ORDER BY avg_s DESC;
Diese einzelne Abfrage ersetzt einen Nachmittag voller Raterei: die langsame Abhängigkeitsinstallation, die aufgeblähte Test-Phase, der Schritt, der sich letzte Woche Dienstag unmerklich verschlechtert hat — all das benannt, in Sekunden. Stelle es als gespeicherte Warnung ein und die Pipeline sagt dir Bescheid, bevor du es bemerkst.
Ein klares Risiko, fair dargelegt: Der GitHub Receiver ist eine Contrib-Komponente, nicht Core — nutze eine aktuelle otelcol-contrib-Version und erwarte, dass sich Config-Schlüssel zwischen Versionen verschieben. Behandle es als ein junges Material: stark, nützlich, noch immer aushärtend.
Die Gebäude, die meine Generation bereut, sind Deponie-Skelette — Verbundwerkstoffe, die niemand trennen konnte. Die Pipelines, die sich zu bewahren lohnen, sind diejenigen, die du zerlegen kannst: Standard-Signale, dein eigenes Backend, kein Leim, der einen Balken zu Müll macht. Instrumentiere deine eigene Workflow diese Woche, führe die Abfrage aus, und schreib auf, welcher Schritt du jetzt sehen kannst, den du gestern nicht sehen konntest.
Quelle: HN Learn
QUELLE · ↗