Proč monitorovat: role metrik, logů a trasování
Monitorování systémů umožňuje včas odhalovat problémy, poskytuje podklady pro kapacitní plánování a data pro zvyšování spolehlivosti. V praxi kombinujeme tři pilíře observability: metriky (číselné časové řady), logy (události a kontext) a trasování (distribuované trasování napříč službami). Pro proaktivní řízení služby definujeme SLI (indikátory úrovně služby) a cíle SLO, které převádíme na upozornění s jasným „runbookem“.
Architektonické přístupy: agent/pull vs. push a úložiště časových řad
- Model pull: centrální systém pravidelně sbírá data z cílů (Prometheus). Výhody: jednoduché řízení bezpečnosti (jednosměrné spojení), automatické vyhledávání cílů a snadná škálovatelnost.
- Model push: data se posílají na server nebo proxy (agent Zabbix, trapper, aktivní režim). Vhodné pro prostředí bez odchozích portů nebo pro krátkodobé úlohy.
- Úložiště časových řad: sloupcové/TSDB úložiště (Prometheus TSDB) vs. relační historie a trendy (Zabbix). Důležité je nastavit zásady uchovávání dat, agregace a kompresi.
Zabbix: kompletní monitorovací platforma
Zabbix je systém „vše v jednom“ s agentem, serverem, proxy a webovým rozhraním. Nabízí široké možnosti monitorování infrastruktury, aplikací i sítí s důrazem na šablony, detekci a korelaci.
- Agent a agent2: sběr metrik operačního systému, procesů, disků a síťových rozhraní; agent2 přidává pluginy a větší flexibilitu.
- Šablony (templates): opakovaně použitelné definice items, triggers, graphs a LLD (Low-Level Discovery) pro automatické vyhledávání služeb, souborových systémů, rozhraní apod.
- SNMP a IPMI: síťové prvky, tiskárny, UPS a servery; podpora SNMPv3 se šifrováním a autentizací.
- Proxy: distribuovaný sběr dat ve vzdálených lokalitách, ukládání dat do vyrovnávací paměti při výpadku spojení a odlehčení centrálního serveru.
- Předzpracování a závislosti: normalizace hodnot, throttling, dependent items (výpočty bez dalšího dotazu na cíl).
- Spouštěče a události: bohatý jazyk výrazů, event correlation, maintenance windows, eskalace a pracovní postup potvrzování.
- Historie a trendy: podrobná historie za krátké období, dlouhodobé agregované trendy pro kapacitní plánování.
Prometheus: cloud-native metriky a dotazovací jazyk PromQL
Prometheus je nástroj zaměřený na metriky a sběr typu pull. Hodí se zejména pro mikroslužby, Kubernetes a dynamická prostředí.
- Sběr dat a vyhledávání služeb: automatické vyhledávání cílů (Kubernetes, EC2, Consul, statické cíle). Exportéry zpřístupňují data ve formátu OpenMetrics.
- PromQL: výkonný jazyk pro agregace, rate/irate, histogramy, operace s label a predikce (např. predict_linear).
- Pravidla pro upozornění a záznam: předpočítané metriky pro vyšší výkon a přesnost, Alertmanager pro deduplikaci, silencing, směrování a inhibition.
- Exportéry: Node Exporter (OS), Blackbox Exporter (syntetické HTTP/TCP/ICMP), exportéry MySQL/PG, cAdvisor/Kube-State-Metrics pro kontejnery a K8s.
- Škálování a dlouhodobé ukládání dat: federation pro hierarchické uspořádání, remote_write do back-endů TSDB (Thanos/Cortex/Mimir/VictoriaMetrics) s dlouhou dobou uchovávání a deduplikací.
Grafana a vizualizace
Grafana sjednocuje vizualizace pro oba světy – Zabbix i Prometheus. Pro Zabbix je k dispozici oficiální datový zdroj (plugin), pro Prometheus nativní. Doporučení: jednotná barevná paleta, jasné popisky os, standardní panely pro SLI (dostupnost, chybovost, latence P50/P95/P99) a možnost prokliknutí do detailu.
Upozorňování: od příznaků k dopadu na uživatele
- Příznak vs. příčina: upozorňujte především na příznaky dopadu na uživatele (např. chybovost 5xx >= prahová hodnota SLO), teprve následně na infrastrukturu (CPU, disk).
- Sledované prahové hodnoty a časová okna: parametr for: v PromQL/Alertmanageru nebo hodnoty multiple/ok v Zabbixu minimalizují kolísání stavu („flapping“).
- Runbook a doplňující informace: každé oznámení má obsahovat popis, kroky nápravy, odkaz na dashboard a systém pro správu tiketů.
- Proces řešení incidentů: střídání pohotovostních služeb (on-call), klidové okno, post-mortem bez hledání viníka, úkoly s termínem splnění.
Bezpečnost a compliance
- Šifrování a autentizace: TLS mezi komponentami, OAuth/OIDC pro uživatelské rozhraní, mTLS pro sběr dat mezi Prometheem a cíli v interní síti.
- RBAC a least privilege: omezení přístupu k dashboardům, API tokeny s omezeným rozsahem oprávnění, oddělení povinností.
- Citlivá data: neexportujte osobní údaje do metrik, hodnoty label nepoužívejte pro tajné údaje, pravidelně obměňujte klíče a uchovávejte auditní logy.
Integrace a hybridní scénáře
- Zabbix → Prometheus/Grafana: plugin datového zdroje umožňuje číst data ze Zabbixu v Grafaně; metriky Zabbixu lze exportovat jako external metrics pro účely korelace.
- Prometheus → dlouhodobé uchovávání: remote_write do Thanos/Cortex/Mimir, společné dotazování prostřednictvím querier a globální deduplikace.
- OpenTelemetry: sjednocení metrik, logů a tras; možnost převodu do Promethea (OTLP → Prometheus remotewrite) a propojení s trasami v Jaeger/Tempo.
- Cloudové služby: příjem dat z AWS CloudWatch, Azure Monitor či GCP; kombinace s lokální vrstvou a centralizovaným Alertmanagerem.
Monitorování sítí a zařízení
- SNMP v Zabbixu: šablony pro switche, routery, přístupové body a UPS; snmptrapd pro asynchronní události.
- Syntetické testování pomocí Blackbox: měření dostupnosti z pohledu uživatele (stavový kód HTTP, expirace TLS certifikátu, latence, DNS, port TCP).
- Flow/NetFlow/IPFIX: doplnění provozních statistik pro řešení problémů a kapacitní plánování.
Kubernetes a kontejnery
- Prometheus Operator: CustomResource (ServiceMonitor/PodMonitor) pro deklarativní sběr dat, Alertmanager a pravidla spravovaná jako kód.
- Kube-State-Metrics + cAdvisor: stav objektů (deployments, pods) a metriky kontejnerů; doplňte o events a logs.
- SLI v K8s: chybovost na ingress, latence pro jednotlivé služby, saturation (CPU, paměť, I/O), kvóty a limity.
Výkon, uchovávání dat a náklady
- Kardinalita: u Promethea omezte počet jedinečných kombinací labelů; nezatěžujte TSDB identifikátory s vysokou proměnlivostí.
- Vzorkování a downsampling: pravidla pro záznam agregací, dlouhodobé ukládání trendů namísto podrobné historie.
- Údržba v Zabbixu: optimalizace indexů, dělení tabulek, oddělené třídy úložiště pro historii a trendy.
- FinOps: v cloudu sledujte odchozí datový provoz, úložiště a zátěž způsobenou dotazy (mezipaměť, předpočítané hodnoty, přehledná správa dashboardů).
Testování monitoringu a spolehlivost samotného systému
- „Kdo hlídá hlídače“: kontroly stavu Zabbix serveru/proxy a Promethea/Alertmanageru; upozornění při výpadku příjmu dat.
- Nasazení s vysokou dostupností: Zabbix se zálohovanou databází a proxy ve více zónách dostupnosti; pro Prometheus repliky s Thanos/Cortex a odolností vůči ztrátě uzlu.
- Chaos a testovací dny: simulace selhání (odpojená síť, plný disk, prošlý certifikát) a ověření, že upozornění a runbooky fungují.
Postup nasazení: od inventury k dashboardu
- Inventura aktiv: seznam systémů, SLI/SLO, závislosti a kritičnost (zařazení do úrovní).
- Výběr nástroje: Zabbix pro heterogenní infrastrukturu a SNMP; Prometheus pro cloud-native prostředí a metriky s vysokou kardinalitou.
- „Minimum životaschopného monitoringu“: heartbeat, dostupnost, základní metriky OS, důležitá rozhraní, upozornění na dopad.
- Šablony a správa jako kód: šablony a exporty Zabbixu, pravidla v Prometheu/Alertmanageru spravovaná v Gitu, kontrola syntaxe a testy v CI.
- Vizualizace a školení: sjednocené dashboardy v Grafaně, školení pohotovostního týmu, definice eskalací a runbooků.
Porovnání Zabbixu a Promethea: stručná matice
| Oblast | Zabbix | Prometheus |
|---|---|---|
| Model sběru | Agent/push i pull, proxy | Pull, pushgateway pro úlohy |
| Šablony | Rozsáhlé, LLD, triggers | Exportéry, balíčky mixin, pravidla spravovaná jako kód |
| Uživatelské rozhraní a upozornění | Integrované rozhraní, korelace, eskalace | Grafana + Alertmanager, směrování, potlačování upozornění |
| Uchovávání dat | Historie a trendy v databázi | Lokální TSDB; dlouhodobé ukládání přes Thanos/Cortex |
| Použití | SNMP, servery, sítě, heterogenní IT | Cloud-native prostředí, K8s, mikroslužby |
Kontrolní seznam před spuštěním do produkce
- Definované SLI/SLO pro klíčové služby a mapy závislostí.
- Upozornění na dopad na uživatele s runbooky a kontakty na pohotovostní službu.
- Bezpečné nasazení (TLS, RBAC, tajné údaje, auditní logy).
- Dashboardy pro provoz, kapacitu a management (souhrn SLO, chybovost, latence, saturace).
- Testy pravidel (syntetické testy, silences pro plánované práce) a zálohy konfigurací.
- Plán škálování a zásady uchovávání dat pro metriky i trendy.
Slovníček pojmů
- LLD (Low-Level Discovery): automatické vyhledávání entit (disků, rozhraní) v Zabbixu.
- Exporter: komponenta, která zpřístupňuje metriky pro Prometheus ve formátu OpenMetrics.
- Recording rule: předpočítaná metrika pro rychlé dotazy a stabilní upozornění.
- Alertmanager: služba pro deduplikaci a směrování upozornění v ekosystému Promethea.
- Thanos/Cortex/Mimir: back-endy pro dlouhodobé ukládání a horizontální škálování metrik.
Závěr
Zabbix i Prometheus patří ke špičce v oblasti monitoringu, každý se však hodí pro jiné scénáře. Zabbix vyniká při monitorování infrastruktury, agentů a SNMP, nabízí bohaté možnosti korelace událostí a šablony. Prometheus exceluje v cloud-native prostředí, kde jsou klíčové přesné metriky, automatické vyhledávání cílů a horizontální škálování prostřednictvím back-endů TSDB. V praxi se tyto nástroje často doplňují – společná vizualizace v Grafaně, jasně definované SLO a disciplinovaný přístup k alerting-as-code dávají organizaci kontrolu nad spolehlivostí i náklady.
