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íc 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 na nedodržení SLO (např. 0,1 % nedostupnosti/měsíc), který řídí tempo releasů a risk.
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živatelská latence, chybovost) – infra metriky jsou podpůrné signály.
- Nízký šum: agregujte a deduplikujte; preferujte alerty, které předcházejí SLA porušení („burn-rate alerting“).
- Kontext: přiložte dashboard, poslední deployment, feature flagy a majetkovou odpovědnost (owner).
Severity a eskalační schéma
| Úroveň | Popis | Reakce | Čas |
|---|---|---|---|
| SEV-1 | Široký dopad, porušení SLO/SLA, výpadek core funkcí | Okamžité page, War room, freeze releasů | MTTA < 5 min, MTTR < 60 min |
| SEV-2 | Degradace části služby, riziko porušení SLO | On-call + product upozornění | MTTA < 15 min, MTTR < 4 h |
| SEV-3 | Lokální problém, workaround existuje | Ticket, plánovaná oprava | Do 1–2 dnů |
| SEV-4 | Informativní, bez přímého dopadu | Report, trend analýza | Týdně |
Alerting v Prometheus/Alertmanager: osvědčené vzory
- Pravidla: prolatenci, chybovost a dostupnost používejte metriky s histogramy a poměrovými výpočty.
- Šablony: standardizujte anotace – „summary“, „impact“, „runbook“, „dashboards“, „owner“.
- Routování: Alertmanager route podle „service“, „severity“, „team“; tiché okno (silence) při údržbě.
- Deduplikace a grouping: seskupujte podle „service“ a „cluster“, aby 1 incident = 1 page.
Příklady výrazů v PromQL (inline, 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 %.
Burn-rate alerting (SLO-first přístup)
Burn-rate = rychlost čerpání error budgetu. Dvouokenní strategie kombinuje krátký a dlouhý horizont, aby detekovala jak náhlé výkyvy, tak pozvolné degradace.
- 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×).
Pravidlo v principu: error_rate / error_budget_per_minute > N. Alert se spouští, pokud jsou oba horizonty nad prahem, čímž snižujete falešné poplachy.
Zabbix: triggery, závislosti a autoremediace
- Triggery: definujte prahy s hysterézí (okno pro návrat), používejte OK event generation pro stabilní clear.
- Závislosti: topologie (síťové prvky → servery → služby) sníží kaskádu alertů při kořenové poruše.
- Akce: podmíněné notifikace dle závažnosti a host group; auto-escalation na další kontakt po neacknutém alertu.
- Remediace: skriptované kroky (restart jednotky, vyprázdnění fronty, přepnutí poolu) s auditním logem.
Jak předejít „alert fatigue“
- Každý alert musí mít owner a runbook; orphaned alerty vypněte.
- Limitujte informační upozornění v nočních hodinách; nižší severity do chatu/e-mailu, nikoli na pager.
- Pravidelný Alert Review: měsíčně čistka, slučování, úpravy prahů, audit deduplikace.
- Využijte složené signály (korrelace: latence + 5xx + saturation), ne jednotlivé metriky bez kontextu.
Runbooky: z notifikace k akci do 60 sekund
- Struktura: „Identifikace problému → Okamžité kroky → Diagnostika → Remediace → Verifikace → Eskalace“.
- Atomické kroky: konkrétní příkazy, odkazy na dashboardy, skripty, feature flagy.
- Aktualizace: po každém incidentu runbook revidujte a timestampujte.
On-call proces a smluvené SLA provozu
- Rotace: primární a sekundární on-call, střídaní po týdnu; „buddy“ stínování u nováčků.
- Hand-off: předávací poznámky (probíhající incidenty, tlumené alerty, známé problémy).
- Well-being: měřte noční zásahy; pokud přesáhnou limit, zaveďte kompenzaci nebo refaktoring alertů.
Incident response: od detekce k obnově
- Detekce – alert → page on-call → potvrzení (ack).
- Stabilizace – aktivace incident commander, komunikační kanál (ChatOps), status page.
- Mitigace – rollback, traffic shift, škrcení (rate limiting), izolace porouchané části.
- Obnova – validace SLI, postupné odtlumení alertů, sledování po incidentu (soak).
Komunikace a ChatOps
- Integrujte Alertmanager/Zabbix do chatu (Slack/Teams): ack, silence a runbook přímo z vlákna.
- Automatický kontext: poslední deployment, změny konfigurací, anomálie v grafu (sparklines v notifikaci).
- Externí komunikace: šablony pro status page, čitelné pro netechnické publikum.
Testování alertů a chaos engineering
- Unit testy pravidel: syntetické metriky a simulace – ujistěte se, že pravidla reagují správně.
- Game days: řízené poruchy (latence DB, výpadek uzlu) a měření detekční doby i kvality reakce.
- Shadow alerts: nové definice běží v „tichém“ režimu a porovnáváte zásahy, než je zapnete naostro.
Metriky provozní kvality alertingu
- Precision/Recall: kolik alertů bylo akčních a kolik incidentů bylo detekováno včas.
- MTTA/MTTR: zkracujte bottlenecky (page latence, eskalace, runbook kvalita).
- Noise index: poměr neakčních alertů; cílem je trvalý pokles.
Datová vrstva pro SLI a tracing
- End-to-end SLI skládejte z APM (tracing, span latency) a syntetických testů.
- Korelujte metriky s logy a traces (OpenTelemetry) – notifikace by měla nést
trace_idnebo odkaz na vyhledání.
Zralostní model alertingu
- Úroveň 1: ad-hoc prahy, přemíra infra alertů, bez runbooků.
- Úroveň 2: standardizované šablony, základní SLO, deduplikace, on-call rota.
- Úroveň 3: SLO-driven burn-rate, korelační alerty, ChatOps, pravidelné review, game days.
- Úroveň 4: automatizovaná remediace, prediktivní signály, business SLI (konverze, košík).
Integrace s release managementem
- Automaticky přikládejte k alertům „co se právě změnilo“ (commit, release tag, feature flags).
- Pro high-risk releasy zvyšte citlivost alertů a zapněte dočasné guardrails (přísnější burn-rate prahy).
Post-incident review a učení
- Bez viny (blameless) – soustředit se na systémové příčiny a zlepšení.
- Akční body: změna pravidel alertingu, úprava runbooků, posílení pozorovatelnosti.
- Sdílení znalostí: krátké shrnutí pro produkt a podporu, aby rozuměli dopadu a nápravě.
Minimální standardy, které zavedete hned
- Definujte 3–5 hlavních SLI a jejich SLO pro klíčové služby.
- Zaveďte dvouokenní burn-rate alerting pro dostupnost a chybovost.
- Všechny alerty doplňte o runbook, dashboard a owner.
- Alertmanager/Zabbix napojte na ChatOps s možností ack/silence.
- Měsíční Alert Review a kvartální game day.
Souhrn
Moderní alerting stojí na SLO-first přístupu, korelaci signálů a jednoznačné akčnosti. Prometheus+Alertmanager a Zabbix poskytují robustní stavebnici, pokud nastavíte smysluplné SLI, burn-rate pravidla, deduplikaci a kvalitní runbooky. Když alerty vedou k rychlé a opakovatelné reakci, klesá MTTR, mizí „alert fatigue“ a provoz získává predikovatelnost – i během výpadků.