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

Monitorování systémů: Nástroje (Zabbix, Prometheus) a metriky

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

  1. Inventura aktiv: seznam systémů, SLI/SLO, závislosti a kritičnost (zařazení do úrovní).
  2. Výběr nástroje: Zabbix pro heterogenní infrastrukturu a SNMP; Prometheus pro cloud-native prostředí a metriky s vysokou kardinalitou.
  3. „Minimum životaschopného monitoringu“: heartbeat, dostupnost, základní metriky OS, důležitá rozhraní, upozornění na dopad.
  4. Šablony a správa jako kód: šablony a exporty Zabbixu, pravidla v Prometheu/Alertmanageru spravovaná v Gitu, kontrola syntaxe a testy v CI.
  5. 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.