Monitorování systémů: nástroje Zabbix a Prometheus a klíčové metriky

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

  1. Inventura aktiv: seznam systémů, SLI/SLO, závislosti a kritičnost (tiering).
  2. Volba nástroje: Zabbix pro heterogenní infrastrukturu a SNMP; Prometheus pro cloud-native prostředí s vysokou kardinalitou metrik.
  3. „Minimum viable monitoring“: heartbeat, dostupnost, základní OS metriky, důležitá rozhraní, alerty na uživatelský dopad.
  4. Šablony a as-code: Zabbix šablony a exporty, v Prometheu/Alertmanageru pravidla v Gitu, CI lint a testy.
  5. 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.