Proč je alerting klíčový a co od něj očekávat
Alerting je proces včasného a relevantního upozorňování na odchylky v chování systémů, které mohou vést k incidentům nebo porušení SLO. Cílem není „co nejvíce notifikací“, ale správná informace ve správný čas správnému týmu. Kvalitní alerting minimalizuje MTTA (Mean Time To Acknowledge) a MTTR (Mean Time To Recovery), chrání reputaci i tržby a snižuje provozní stres.
Terminologie: SLI, SLO, SLA a error budget
- SLI (Service Level Indicator) – měřená veličina kvality služby, např. dostupnost, latence p95, chybovost.
- SLO (Service Level Objective) – cíl SLI v čase: např. „dostupnost 99,9 % za 30 dní“.
- SLA – smluvně závazný závazek vůči zákazníkovi (často s penalizací).
- Error budget – prostor pro nedodržení SLO (např. 0,1 % nedostupnosti za měsíc), který řídí tempo releasů a míru rizika.
Design alertů: od signálu k akci
- Akčnost: každý alert musí implikovat jasný krok (runbook, eskalace, rollback, feature flag).
- Specifičnost: měřte doménové SLI (uživatelskou latenci, chybovost) – metriky infrastruktury jsou podpůrné signály.
- Nízký šum: agregujte a deduplikujte; upřednostňujte alerty, které předcházejí porušení SLA („burn-rate alerting“).
- Kontext: přiložte dashboard, poslední deployment, feature flagy a odpovědnost za službu (owner).
Úrovně závažnosti a eskalační schéma
| Úroveň | Popis | Reakce | Čas |
|---|---|---|---|
| SEV-1 | Široký dopad, porušení SLO/SLA, výpadek klíčových funkcí | Okamžité upozornění na pager, war room, pozastavení releasů | MTTA < 5 min, MTTR < 60 min |
| SEV-2 | Degradace části služby, riziko porušení SLO | On-call + upozornění produktu | MTTA < 15 min, MTTR < 4 h |
| SEV-3 | Lokální problém, existuje náhradní řešení | Ticket, plánovaná oprava | Do 1–2 dnů |
| SEV-4 | Informativní, bez přímého dopadu | Report, analýza trendů | Týdně |
Alerting v Prometheus/Alertmanager: osvědčené vzory
- Pravidla: pro latenci, chybovost a dostupnost používejte metriky s histogramy a poměrovými výpočty.
- Šablony: standardizujte anotace – „summary“, „impact“, „runbook“, „dashboards“, „owner“.
- Směrování: Alertmanager směrujte podle „service“, „severity“, „team“; při údržbě využívejte tiché období (silence).
- Deduplikace a grouping: seskupujte podle „service“ a „cluster“, aby jeden incident znamenal jedno upozornění na pager.
Příklady výrazů v PromQL (řádkově, bez formátování bloků): rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.05 – podíl 5xx > 5 %; histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le)) > 0.5 – p95 latence > 500 ms; avg_over_time(probe_success[5m]) < 0.999 – syntetická dostupnost < 99,9 %.
Alerting podle burn rate (přístup SLO-first)
Burn rate = rychlost čerpání error budgetu. Strategie se dvěma časovými okny kombinuje krátký a dlouhý horizont, aby odhalila náhlé výkyvy i pozvolné zhoršování.
- Krátké okno (např. 5–10 min): citlivé na skoky, vysoký práh (např. burn rate > 14×).
- Dlouhé okno (např. 1–2 h): potvrzuje trend, nižší práh (např. burn rate > 6×).
Princip pravidla: error_rate / error_budget_per_minute > N. Alert se spustí, pokud jsou oba časové horizonty nad prahem, což snižuje počet falešných poplachů.
Zabbix: triggery, závislosti a automatická náprava
- Triggery: definujte prahy s hysterezí (okno pro návrat), používejte OK event generation pro stabilní ukončení alertu.
- Závislosti: topologie (síťové prvky → servery → služby) sníží kaskádu alertů při kořenové poruše.
- Akce: podmíněná upozornění podle závažnosti a skupiny hostitelů; automatická eskalace na další kontakt, pokud alert není potvrzen.
- Náprava: skriptované kroky (restart jednotky, vyprázdnění fronty, přepnutí poolu) s auditním záznamem.
Jak předejít únavě z alertů
- Každý alert musí mít owner a runbook; osiřelé alerty vypněte.
- Omezte informační upozornění v nočních hodinách; upozornění s nižší závažností posílejte do chatu/e-mailu, nikoli na pager.
- Pravidelná revize alertů: každý měsíc čistěte, slučujte, upravujte prahy a kontrolujte deduplikaci.
- Využívejte složené signály (korelace: latence + 5xx + vytížení), nikoli jednotlivé metriky bez kontextu.
Runbooky: od notifikace k akci do 60 sekund
- Struktura: „Identifikace problému → Okamžité kroky → Diagnostika → Náprava → Ověření → Eskalace“.
- Atomické kroky: konkrétní příkazy, odkazy na dashboardy, skripty, feature flagy.
- Aktualizace: po každém incidentu runbook revidujte a opatřete časovým údajem.
Proces on-call a dohodnuté provozní SLA
- Rotace: primární a sekundární on-call, střídání po týdnu; u nováčků „buddy“ – stínování zkušenějším kolegou.
- Předání služby: předávací poznámky (probíhající incidenty, ztlumené alerty, známé problémy).
- Pohoda zaměstnanců: měřte noční zásahy; pokud překročí limit, zaveďte kompenzaci nebo přepracujte alerty.
Reakce na incident: od detekce k obnově
- Detekce – alert → upozornění on-call pracovníka → potvrzení (ack).
- Stabilizace – aktivace incident commandera, komunikační kanál (ChatOps), stavová stránka.
- Zmírnění dopadu – rollback, přesměrování provozu, omezení rychlosti (rate limiting), izolace porouchané části.
- Obnova – ověření SLI, postupné obnovení alertů, sledování po incidentu (soak).
Komunikace a ChatOps
- Integrujte Alertmanager/Zabbix do chatu (Slack/Teams): ack, silence a runbook přímo ve vlákně.
- Automatický kontext: poslední deployment, změny konfigurace, anomálie v grafu (sparklines v notifikaci).
- Externí komunikace: šablony pro stavovou stránku, srozumitelné i pro netechnické publikum.
Testování alertů a chaos engineering
- Jednotkové testy pravidel: syntetické metriky a simulace – ověřte, že pravidla reagují správně.
- Game days: řízené poruchy (latence databáze, výpadek uzlu) a měření doby detekce i kvality reakce.
- Stínové alerty: nové definice běží v „tichém“ režimu a jejich dopad se vyhodnocuje před ostrým zapnutím.
Metriky provozní kvality alertingu
- Precision/Recall: kolik alertů vedlo k akci a kolik incidentů bylo včas detekováno.
- MTTA/MTTR: zkracujte úzká místa (latenci upozornění na pager, eskalaci, kvalitu runbooků).
- Index šumu: podíl alertů, které nevedou k akci; cílem je jeho trvalé snižování.
Datová vrstva pro SLI a tracing
- End-to-end SLI sestavujte z APM (tracing, latence spanů) a syntetických testů.
- Korelujte metriky s logy a trasami (OpenTelemetry) – notifikace by měla obsahovat
trace_idnebo odkaz na vyhledávání.
Model vyspělosti alertingu
- Úroveň 1: ad hoc prahy, příliš mnoho infrastrukturních alertů, chybějící runbooky.
- Úroveň 2: standardizované šablony, základní SLO, deduplikace, on-call rotace.
- Úroveň 3: burn rate řízený podle SLO, korelační alerty, ChatOps, pravidelné revize, game days.
- Úroveň 4: automatizovaná náprava, prediktivní signály, obchodní SLI (konverze, nákupní košík).
Integrace s řízením releasů
- K alertům automaticky přikládejte informaci o tom, „co se právě změnilo“ (commit, značka releasu, feature flagy).
- U releasů s vysokým rizikem zvyšte citlivost alertů a aktivujte dočasné ochranné mechanismy (přísnější prahy burn rate).
Revize po incidentu a poučení
- Bez obviňování (blameless) – zaměřte se na systémové příčiny a zlepšení.
- Akční body: změna pravidel alertingu, úprava runbooků, posílení pozorovatelnosti.
- Sdílení znalostí: stručné shrnutí pro produkt a podporu, aby rozuměly dopadu a nápravě.
Minimální standardy, které můžete zavést hned
- Definujte 3–5 hlavních SLI a jejich SLO pro klíčové služby.
- Zaveďte alerting podle burn rate se dvěma časovými okny pro dostupnost a chybovost.
- Všechny alerty doplňte o runbook, dashboard a owner.
- Napojte Alertmanager/Zabbix na ChatOps s možností ack/silence.
- Každý měsíc provádějte revizi alertů a každý kvartál uspořádejte game day.
Shrnutí
Moderní alerting stojí na přístupu SLO-first, korelaci signálů a jednoznačné akčnosti. Prometheus+Alertmanager a Zabbix poskytují robustní základ, pokud nastavíte smysluplné SLI, pravidla burn rate, deduplikaci a kvalitní runbooky. Když alerty vedou k rychlé a opakovatelné reakci, zkracuje se MTTR, mizí „únava z alertů“ a provoz získává předvídatelnost – i během výpadků.
