Proč monitorování: role metrik, logů a trasování
Monitorování systémů zajišťuje včasnou detekci problémů, podklady pro kapacitní plánování a data pro zlepšování spolehlivosti. V praxi kombinujeme tři pilíře observability: metriky (číselné časové řady), logy (události a kontext) a traces (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 do alertů s jasným „runbookem“.
Architektonické přístupy: agent/pull vs. push a úložiště časových řad
- Pull model: centrální systém periodicky „scrapeuje“ cíle (Prometheus). Výhody: jednoduché řízení bezpečnosti (jednosměrné spojení), automatické objevování (auto-discovery), snadná škálovatelnost.
- Push model: data se posílají do serveru nebo proxy (Zabbix agent, trapper, aktivní režim). Vhodné pro prostředí bez odchozích portů či krátkodobě běžící úlohy.
- Time-series storage: kolonkové/TSDB úložiště (Prometheus TSDB) vs. relační databáze pro historii a trendy (Zabbix). Důležité je nastavit retenční politiku, agregace a kompresi dat.
Zabbix: komplexní platforma monitoringu
Zabbix je „all-in-one“ systém s agentem, serverem, proxy a webovým uživatelským rozhraním. Nabízí široké možnosti monitoringu infrastruktury, aplikací i sítě s důrazem na šablony, detekci a korelaci událostí.
- Agent a agent2: sběr metrik operačního systému, procesů, disků, síťových rozhraní; agent2 přidává pluginy a vyšší flexibilitu.
- Šablony (templates): znovupoužitelné definice items, triggers, graphs a LLD (Low-Level Discovery) pro automatické objevování služeb, souborových systémů, rozhraní apod.
- SNMP a IPMI: monitorování síťových zařízení, tiskáren, UPS a serverů; podpora SNMPv3 s šifrováním a autentizací.
- Proxies: distribuovaný sběr dat v odlehlých lokalitách, bufferování při výpadku linky, odlehčení centrálního serveru.
- Preprocessing a závislosti: normalizace hodnot, throttling, dependent items (výpočty bez dalšího dotazu na cíl).
- Triggers a události: bohatý jazyk výrazů, event correlation, maintenance windows, eskalace a ack workflow.
- Historie a trendy: detailní historie v krátkém časovém úseku, 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 pull sběr dat. Je ideální pro mikroservisy, Kubernetes a dynamické prostředí.
- Scrape a service discovery: automatické objevování cílů (Kubernetes, EC2, Consul, statické cíle). Exportéry exponují data ve formátu OpenMetrics.
- PromQL: výkonný jazyk pro agregace, rate/irate funkce, histogramy, operace nad labely a predikce (např. predict_linear).
- Alerting rules & recording rules: předpočítané metriky pro zvýšení výkonu a přesnosti, Alertmanager pro deduplikaci, silencing, směrování a inhibition.
- Exportéry: Node Exporter (OS), Blackbox Exporter (syntetické HTTP/TCP/ICMP testy), MySQL/PG exporter, cAdvisor/Kube-State-Metrics pro kontejnery a Kubernetes.
- Škálování a dlouhodobá data: federation pro hierarchické sběry, remote_write do TSDB back-endů (Thanos/Cortex/Mimir/VictoriaMetrics) s dlouhou retencí a deduplikací.
Grafana a vizualizace
Grafana sjednocuje vizualizace pro oba světy – Zabbix i Prometheus. Pro Zabbix existuje oficiální datový zdroj (plugin), pro Prometheus je nativní podpora. Doporučení: jednotná barevná paleta, jasné popisky os, standardní panely pro SLI (dostupnost, chybovost, latence P50/P95/P99) a možnost „drill-down“ do detailů.
Alerting: od symptomů k dopadu na uživatele
- Symptom vs. příčina: alerťte především příznaky uživatelského dopadu (např. chybovost 5xx >= práh SLO), sekundárně infrastrukturu (využití CPU, disk).
- Hlídané prahy a okna: for: v PromQL/Alertmanageru nebo multiple/ok hodnoty v Zabbixu minimalizují „flapping“ (opakované spínání).
- Runbook a obohacení: každá notifikace by měla zahrnovat popis, kroky nápravy, odkaz na dashboard a ticketovací systém.
- Incident proces: rotace on-call, tiché okno, post-mortem analýza bez hledání viníka, akční položky s termíny splnění.
Bezpečnost a compliance
- Šifrování a autentizace: TLS mezi komponentami, OAuth/OIDC pro uživatelské rozhraní, mTLS pro scrape mezi Prometheem a cíli v interní síti.
- RBAC a least privilege: omezení přístupů k dashboardům, API tokeny s omezeným rozsahem oprávnění, segregace rolí a povinností.
- Citlivá data: neexportovat osobní údaje do metrik, label hodnoty nevyužívat pro uchovávání tajemství, pravidelná rotace klíčů a auditní logy.
Integrace a hybridní scénáře
- Zabbix → Prometheus/Grafana: plugin datového zdroje umožňující čtení Zabbixu z Grafany; možné exportovat metriky Zabbixu jako external metrics pro korelace.
- Prometheus → dlouhodobá retence: remote_write do Thanos/Cortex/Mimir, společné dotazy přes querier a globální deduplikace dat.
- OpenTelemetry: sjednocení metrik, logů a trasování; možnost konverze do Promethea (OTLP → Prometheus remote_write) a integrace s trace systémy jako Jaeger nebo Tempo.
- Cloudové služby: ingest dat z AWS CloudWatch, Azure Monitor či Google Cloud; kombinace s on-premise vrstvou a centralizovaným Alertmanagerem.
Monitorování sítí a zařízení
- SNMP v Zabbixu: šablony pro switche, routery, přístupové body (AP), UPS; snmptrapd pro asynchronní události.
- Blackbox syntetika: měření dostupnosti z uživatelského pohledu (HTTP status, expirace TLS certifikátu, latence, DNS, TCP porty).
- Flow/NetFlow/IPFIX: doplnění o provozní statistiky pro troubleshooting a kapacitní plánování.
Kubernetes a kontejnery
- Prometheus Operator: CustomResource (ServiceMonitor/PodMonitor) pro deklarativní konfiguraci scrape, Alertmanager a pravidla jako kód.
- Kube-State-Metrics + cAdvisor: monitoring stavu objektů (deploymenty, pody) a metriky kontejnerů; doplnění o události (events) a logy.
- SLI v K8s: chybovost na ingress, latence per služba, saturation (využití CPU, paměti, I/O), kvóty a limity.
Výkon, retence a náklady
- Kardinalita: u Promethea omezit počet unikátních kombinací labelů; nezatěžovat TSDB vysoce proměnnými identifikátory.
- Sampling a downsampling: recording rules pro agregace, dlouhodobé ukládání trendů místo detailní historie.
- Údržba v Zabbixu: optimalizace indexů, partitioning, oddělené úložiště pro historii a trendy.
- FinOps: u cloudových řešení sledovat náklady na egress, storage a dotazovou zátěž (cache, předpočty, údržba dashboardů).
Testování monitoringu a spolehlivost samotného systému
- „Who watches the watcher“: health checky pro Zabbix server/proxy a Prometheus/Alertmanager; watchdog alerty při výpadku ingestu dat.
- Vysoká dostupnost (HA): Zabbix s replikovanou databází a proxy ve více AZ; pro Prometheus repliky s Thanos/Cortex a odolností proti výpadku uzlu.
- Chaos a gamedays: simulace selhání (vypnutá síť, plný disk, expirace certifikátu) a ověření funkčnosti alertů a runbooků.
Postup nasazení: od inventury k dashboardu
- Inventura aktiv: seznam systémů, SLI/SLO, závislosti a kritičnost (tiering).
- Volba nástroje: Zabbix pro heterogenní infrastrukturu a SNMP; Prometheus pro cloud-native prostředí s vysokou kardinalitou metrik.
- „Minimum viable monitoring“: heartbeat, dostupnost, základní OS metriky, důležitá rozhraní, alerty na uživatelský dopad.
- Šablony a as-code: Zabbix šablony a exporty, v Prometheu/Alertmanageru pravidla v Gitu, CI lint a testy.
- Vizualizace a školení: sjednocené dashboardy v Grafaně, školení on-call týmu, definice eskalací a runbooků.
Porovnání Zabbix vs. Prometheus: stručná matice
| Oblast | Zabbix | Prometheus |
|---|---|---|
| Model sběru | Agent/push i pull, proxy | Pull, pushgateway pro krátkodobé joby |
| Šablony | Bohaté, LLD, triggers | Exportéry, mixiny, pravidla jako kód |
| Uživatelské rozhraní a alerty | Integrované UI, korelace, eskalace | Grafana + Alertmanager, směrování, tiché režimy (silencing) |
| Retence | Historie a trendy v databázi | Lokální TSDB; dlouhodobá přes Thanos/Cortex |
| Použití | SNMP, servery, síť, heterogenní prostředí | Cloud-native, Kubernetes, mikroservisy |
Checklist před produkčním spuštěním
- Definované SLI/SLO pro klíčové služby a mapy závislostí.
- Alerty na uživatelský dopad s runbooky a kontakty na on-call.
- Bezpečné nasazení (TLS, RBAC, secrets, auditní logy).
- Dashboardy pro provoz, kapacitu a management (shrnutí SLO, chybovost, latence, saturace).
- Testy pravidel (syntetika, silences pro plánované práce) a zálohy konfigurací.
- Plán škálování a retenční politika pro metriky i trendy.
Slovníček pojmů
- LLD (Low-Level Discovery): automatické objevování entit (disky, rozhraní) v Zabbixu.
- Exporter: komponenta, která vystavuje metriky pro Prometheus ve formátu OpenMetrics.
- Recording rule: předpočítaná metrika pro rychlé dotazy a stabilní alerty.
- Alertmanager: služba pro deduplikaci a směrování alertů v Prometheus stacku.
- Thanos/Cortex/Mimir: back-endy pro dlouhodobé ukládání a horizontální škálování metrik.
Závěr
Zabbix i Prometheus patří mezi přední nástroje monitoringu, ale cílí na odlišné scénáře. Zabbix vyniká v infrastrukturním, agentním a SNMP monitoringu s bohatou korelací událostí a šablonami. Prometheus exceluje v cloud-native prostředí, kde je klíčová přesnost metrik, automatické objevování a horizontální škálování prostřednictvím TSDB back-endů. V praxi se nástroje často doplňují – společná vizualizace v Grafaně, jasná definice SLO a disciplinovaný alerting-as-code poskytují organizaci kontrolu nad spolehlivostí a náklady.