Nagios nám sloužil věrně deset let. Ale v dynamickém světě kontejnerů, kde se pody rodí a umírají každou minutu, je statická konfigurace monitoringu neudržitelná. Prometheus s jeho service discovery a pull modelem je přesně to, co potřebujeme.
Proč ne Nagios/Zabbix¶
Tradiční monitoring funguje na principu: nakonfigurujte seznam hostů, definujte checky, sledujte. Jenže v Kubernetes nemáte „hosty” — máte pody, které se dynamicky přesouvají mezi nody, scalují nahoru a dolů, umírají a rodí se znovu.
Prometheus architektura¶
Prometheus funguje na pull modelu — sám si chodí pro metriky na definované endpointy. V Kubernetes má nativní service discovery: automaticky najde všechny pody s anotací prometheus.io/scrape: "true" a začne z nich sbírat metriky.
PromQL — jazyk, který milujete nebo nenávidíte¶
# 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]))
# CPU utilizace podu
rate(container_cpu_usage_seconds_total{namespace="production"}[5m])
PromQL se učíte postupně, ale jakmile ho ovládnete, dokážete odpovědět na otázky, které byste s Nagiosem nikdy nepoložili.
Grafana dashboardy¶
Prometheus sám má minimalistické webové UI. Pro vizualizaci používáme Grafanu, která má nativní Prometheus datasource. Komunita sdílí tisíce hotových dashboardů na grafana.com.
Alerting s Alertmanagerem¶
groups:
- name: application
rules:
- alert: HighErrorRate
expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.1
for: 5m
labels:
severity: critical
annotations:
summary: "High error rate on {{ $labels.service }}"
Instrumentace aplikací¶
Prometheus klientské knihovny existují pro Javu, Go, Python, Node.js a další. Ve Spring Boot stačí přidat Micrometer s Prometheus registry a máte metriky za pár minut. Counter, Gauge, Histogram, Summary — čtyři typy metrik pokryjí většinu potřeb.
Prometheus je standard pro cloud-native monitoring¶
Přechod z Nagiosu nebyl triviální — museli jsme přehodnotit, co a jak monitorujeme. Ale výsledek je nesrovnatelně lepší. Prometheus s Grafanou a Alertmanagerem je dnes naše standardní monitoring trojice.