Monitoring pipeline
Proč monitorovat CI/CD pipeline a jak přistupovat k chybám
CI/CD pipeline je nervová soustava moderního vývoje. Bez kvalitního monitoringu a promyšleného řešení chyb se rychle zvyšuje lead time, klesá důvěra v releasy a narůstá provozní riziko. Monitorování musí pokrývat technické aspekty (build, testy, artefakty, deployment, infrastruktura) i produktové dopady (dostupnost, chování uživatelů po releasu). Řešení chyb má být systematické: od prevence, přes detekci v řádu sekund, až po automatizovanou mitigaci a následné blameless post-mortem.
Referenční model observability pro pipeline
- Logy: strukturované, s korelačním ID (trace/span), bez citlivých údajů, s jasnou úrovní (
INFO/WARN/ERROR). - Metriky: čítače, histogramy a gauge pro klíčové fáze (checkout, build, test, artifact store, deploy, post-deploy).
- Traces: distribuované trasování přes jednotlivé kroky pipeline, agenty na běžeckých uzlech a release hooks.
- Události: standardizovaný event bus (JobStarted, StageFailed, CanaryDegraded, RollbackTriggered).
Klíčové metriky CI/CD a cílové hodnoty
| Metrika | Popis | Doporučené cíle |
|---|---|---|
| Lead Time for Changes | Commit → prod | < 24 h (špičkové týmy < 1 h) |
| Deployment Frequency | Počet releasů / den/tým | ≥ 1× denně (produkt dle kontextu) |
| Change Failure Rate | % releasů vedoucích k incidentu/rollbacku | < 10 % (cílit na 0–5 %) |
| Mean Time to Recover (MTTR) | Porucha → obnova | minuty až desítky minut |
| Flaky Test Rate | % testů s nestabilním výsledkem | < 1 % a trend klesající |
| Cache Hit Ratio | Podíl úsporných buildů | > 80 % u monorepo, > 60 % u polyrepo |
Architektura monitoringu: datové toky a identifikátory
- Korelace: každý běh pipeline má pipeline_id, každý job job_id, každý deployment release_id; všechny se propisují do logů a metrik.
- Obohacení dat: branch, commit SHA, autor, služba, prostředí (dev/test/stage/prod), verze artefaktu, feature flags.
- Uložení: krátkodobé metriky (TSDB), dlouhodobé agregační tabulky (data warehouse) pro trendové analýzy.
Monitorování jednotlivých fází pipeline
- Zdrojový kód a checkout: latence SCM, tvar monorepo vs. polyrepo, velikost difů; metriky pro fetch a clone.
- Build: doba kompilace, spotřeba CPU/RAM, míra cache hitů, velikost artefaktů, detekce regresí v čase.
- Testy: počet, doba běhu, míra paralelizace, quarantine seznam flaky testů, heatmapa selhání podle modulu.
- Security scan/SCA: počet nových kritických nálezů, čas do vyřešení, false positive poměr.
- Artefakty: dostupnost registru, latence push/pull, integrita (hash), TTL a retence.
- Deployment: úspěšnost, doba rolloutů, health-checky, počet automatických rollbacků, kvalita canary metrik.
Detekce chyb: signály z buildů, testů a produkce
- Syntetické signály: selhání jobu, nesplnění podmínky, porušení rozpočtu času/zdrojů.
- Behaviorální signály: nárůst chybových kódů, regresní nárůst latencí, propad metrik SLI (L4/L7).
- Business signály: pokles konverzí po releasu, zvýšené odhlášky, negativní experimentální výsledky.
Alerting a SLO pro pipeline
- Pravidla: stavět na error budget; alerty stupňovat (warning → critical), agregovat (deduplikace) a směrovat (on-call, vlastník služby).
- SLO příklady: „90% běhů main končí do 10 min“, „< 5 % nasazení vyžaduje zásah“, „detekce degradace canary do 120 s“.
- Runbooky: ke každému alertu existuje odkaz na postup, eskalace a rollback příkaz/akce.
Řešení chyb: taxonomy a rozhodovací stromy
- Deterministické chyby: rozbité testy, syntax, chybějící závislosti → fail fast, oprav commit, znovu spusť.
- Nedeterministické chyby: závodní podmínky, flaky testy, dočasná síť → retry s backoffem a izolace.
- Environmentální chyby: nedostatek runnerů, disk full, quota v cloudu → autoscaling, horizontální rozložení, cleanup.
- Bezpečnostní nález: bránit merge (policy gate), otevřít tiket se SLA a dočasně blokovat release dotčené části.
Automatizovaná mitigace: retry, self-healing a rollbacks
- Retry politika: pouze idempotentní kroky; exponenciální backoff + jitter, maximální počet pokusů, circuit breaker.
- Self-healing kroky: obnova cache, reattach artefaktů, re-pull image, znovunasazení podu, re-provision runneru.
- Automatický rollback: canary/blue-green s metrikami (chybovost, latence, chování uživatele); pokud překročen prah, zapnout rollback a flagy vrátit.
Práce s flaky testy
- Detekce: statistika opakovaných běhů, A/B spouštění, seed stabilita.
- Quarantine: izolovat do samostatné úlohy; hlavní pipeline neblokovat, ale hlásit a vymáhat SLA opravy.
- Opravy: deterministické časovače, odstranění závislosti na pořadí, stabilní data/seed, lepší synchronizační primitiva.
Debugging selhání: sběr kontextu
- Artefakty pro debug: logy s kontextem, snímky obrazovek (E2E), trace.zip, sběr core dumpů a profilů.
- Re-run in isolation: opakování selhání v čistém runneru; fixní verze nástrojů a kontejnerů.
- Bisect/triage: automatické git bisect pro dlouhé historie chyb; priorita podle dopadu.
Bezpečnostní monitoring pipeline
- Supply-chain: podpisy artefaktů, provenance (SLSA), izolace runnerů, kontrola tajemství.
- Politiky: branch protection, povinné review, skeny IaC, container image a SCA s blokujícími pravidly.
- Incidenty: neobvyklé spouštění jobů, netypické cílení tajemství, exfiltrace logů.
Performance a nákladovost pipeline
- Optimalizace doby běhu: paralelizace, affected-only testy, smart caching, shardování, re-use artefaktů.
- Cost observability: metriky spotřeby minut/CPU/GB, přepínání typů runnerů (spot/preemptible) dle priority.
- Rozpočty: limity na job/stage, automatické kill dlouhých běhů bez outputu.
Canary a post-deploy ochrany
- Guardrails: feature flags, postupné rozšiřování procent uživatelů, automatické zastavení při degradaci SLI.
- Validace po nasazení: syntetické end-to-end sondy, kontraktové testy na produkci, porovnání A/B.
- Reverze: rychlá možnost návratu verze, databázové safe migrations (dopředně kompatibilní schémata).
Standardizovaný datový model událostí pipeline
| Pole | Typ | Popis |
|---|---|---|
| pipeline_id | string | Jedinečný identifikátor běhu |
| job_id | string | Jedinečný identifikátor jobu |
| release_id | string | Verze/sha/artifact tag |
| service | string | Název nasazované služby |
| env | enum | dev/test/stage/prod |
| status | enum | started/success/failed/canceled/rolled_back |
| duration_ms | number | Trvání kroku |
| error_class | string | Typ chyby (network, test, build, infra, security) |
| correlation_id | string | Trace/Span ID |
Governance: policy gates a kvalita před merge
- Gates: povinné testy, limit bezpečnostních nálezů, prahy pro pokrytí kódu a výkonové testy.
- Release readiness dashboard: souhrn metrik, známé chyby, výsledek canary, odhad rizika.
- Change management: automatizované change records, link na ticket a schválení dle rizika.
Runbooky a operační postupy
- Struktura: „Když X, udělej Y“ (kontroly, příkazy, rollback, eskalace, kontakty).
- Aktualizace: každá incidentní událost doplní runbook o nové poznatky; verze s historií.
- Self-service: operace dostupné přes chat-ops s auditní stopou.
Incident management a post-mortem
- Průběh: triage → mitigace → komunikace → evidence → uzavření.
- Blameless post-mortem: fakta, časová osa, technické i procesní příčiny, akční úkoly s vlastníky a termíny.
- Follow-up metriky: zlepšení MTTR/CFR, snížení flaky rate, vyšší cache hit ratio, kratší build time.
Antipatterny a jak se jim vyhnout
- Nestrukturované logy bez korelace → nelze dohledat chybu napříč kroky.
- Globální retry bez idempotence → duplikace změn a větší škody.
- Quarantine jako trvalé řešení → normalizace flaky kultury.
- Chybějící canary/feature flags → každé nasazení je „big bang“.
- Bezpečnostní skeny až po merge → pozdní a drahé opravy.
Checklist „ready for production“ pro pipeline
- Standardizované logy, metriky a traces s korelačním ID.
- Alerty s runbooky a jasnou eskalací, SLO definovaná a měřená.
- Automatizované rollbacky a progressive delivery (canary/blue-green).
- Quarantine a dashboard flaky testů s KPI a SLA jejich oprav.
- Bezpečnost: podpisy artefaktů, SCA/IaC skeny v „shift-left“ režimu.
- Performance: paralelizace, cache, shardování; sledování nákladů.
- Post-mortem proces a pravidelná revize runbooků.
Závěr
Úspěšné monitorování CI/CD pipeline kombinuje technickou observabilitu, jasné metriky a rozhodovací pravidla s automatizovanou mitigací a disciplinovaným řešením chyb. Pokud jsou logy a metriky korelované, alerty akční a releasy chráněné canary a feature flagy, lze nasazovat častěji, s menším rizikem a kratší dobou obnovy. Systémové učení prostřednictvím post-mortem a pevná správa flaky testů pak drží kvalitu v čase a zvyšují důvěru v celý release proces.