Prometheus, monitoring systém vyvinutý v SoundCloudu, přináší pull-based model, flexibilní dotazovací jazyk PromQL a nativní podporu pro dynamické prostředí.
Monitoring pro éru kontejnerů¶
Tradiční monitoring nástroje (Nagios, Zabbix) předpokládají statickou infrastrukturu — ručně konfigurované hosty s trvalými IP adresami. V kontejnerovém prostředí, kde se instance vytvářejí a ruší dynamicky, tento model nefunguje.
Prometheus byl vyvinutý v SoundCloudu specificky pro dynamické, cloud-native prostředí. Inspirovaný interním Google systémem Borgmon, přináší principy monitoringu na úroveň velkých technologických firem.
Pull model a service discovery¶
Prometheus aktivně stahuje (scrape) metriky z HTTP endpointů služeb — opak push modelu (StatsD, Graphite).
Výhody pull modelu:
- Jednodušší — služba jen vystaví
/metricsendpoint - Detekce výpadků — pokud scrape selže, služba je down
- Service discovery integrace — Consul, Kubernetes, DNS
# Prometheus konfigurace
scrape_configs:
- job_name: 'web-app'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_label_app]
regex: web
action: keep
PromQL — dotazovací jazyk¶
PromQL je silná stránka Promethea — flexibilní dotazovací jazyk pro metriky:
# Request rate per second za posledních 5 minut
rate(http_requests_total[5m])
# 99. percentil latence
histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))
# Error rate
rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m])
PromQL umožňuje ad-hoc analýzu, tvorbu dashboardů i definici alertovacích pravidel.
Alerting a Grafana integrace¶
Prometheus Alertmanager spravuje alerty — deduplikace, grouping, silencing a routing do notifikačních kanálů (email, Slack, PagerDuty).
Pro vizualizaci se Prometheus perfektně doplňuje s Grafanou — nejpopulárnějším open-source dashboarding nástrojem. Kombinace Prometheus + Grafana + Alertmanager tvoří kompletní monitoring stack.
Doporučené metriky k monitoringu: RED (Rate, Errors, Duration) pro služby, USE (Utilization, Saturation, Errors) pro infrastrukturu.
Závěr: standard pro cloud-native monitoring¶
Prometheus se rychle stává standardem pro monitoring v cloud-native prostředí. Druhý projekt přijatý do CNCF po Kubernetes — to není náhoda. Pro každý nový projekt s kontejnery doporučujeme Prometheus jako primární monitoring řešení.