Alertmanager — Správa Alertov a Notifikácií
Alertmanager je komponent Prometheus ekosystému, ktorý spravuje alerty — grupuje ich, routuje na správne tímy a posiela notifikácie cez rôzne kanály. Bez neho by bol monitoring len pasívne sledovanie grafov.
Čo je Alertmanager?
Alertmanager prijíma alerty z Promethea (alebo iných zdrojov), deduplikuje ich, grupuje súvisiace alerty dokopy a posiela notifikácie na správne miesta — Slack, email, PagerDuty, OpsGenie, webhook a ďalšie.
Kľúčové funkcie:
- Grouping — zlúčenie súvisiacich alertov do jednej notifikácie
- Inhibition — potlačenie menej dôležitých alertov, keď je aktívny kritickejší
- Silencing — dočasné stlmenie alertov (napr. počas maintenance)
- Routing — smerovanie alertov na správne tímy podľa labelov
Ako funguje
Alert pravidlá sa definujú v Prometheovi:
groups:
- name: infrastructure
rules:
- alert: HighCPUUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
for: 5m
labels:
severity: warning
annotations:
summary: "Vysoké CPU na {{ $labels.instance }}"
description: "CPU je nad 90% už 5 minút."
Alertmanager konfigurácia (routing a notifikácie):
global:
slack_api_url: 'https://hooks.slack.com/services/...'
route:
receiver: 'slack-default'
group_by: ['alertname', 'cluster']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
routes:
- match:
severity: critical
receiver: 'pagerduty-critical'
- match:
severity: warning
receiver: 'slack-warnings'
receivers:
- name: 'slack-default'
slack_configs:
- channel: '#alerts'
title: '{{ .GroupLabels.alertname }}'
text: '{{ range .Alerts }}{{ .Annotations.summary }}\n{{ end }}'
- name: 'pagerduty-critical'
pagerduty_configs:
- service_key: '<key>'
Routing funguje hierarchicky — Alertmanager prechádza strom routes a posiela alert na prvý matching receiver.
Praktické použitie
- On-call rotácie — kritické alerty idú na PagerDuty, ostatné na Slack
- Maintenance windows — silence na konkrétne servery počas plánovanej údržby
- Grouping — ak padne celý cluster, dostanete jednu notifikáciu, nie 200
- Inhibition — ak je node down, potlačia sa všetky alerty z toho nodu
- Webhook integrácie — automatické vytvorenie ticketu v Jira pri critical alerte
Best Practices
- Každý alert musí mať action item — ak neviete čo s ním robiť, nemá existovať
- Rozumné prahy — nie príliš citlivé, nie príliš voľné
- Používajte
forklauzulu — vyhnete sa false positives pri krátkych spike-och - Testujte routing —
amtoolumožňuje simulovať routing bez odosielania - Dokumentujte runbooky — link na runbook v anotácii alertu
- Review alertov — pravidelne vyhodnocujte, ktoré alerty sú užitočné
Dobrý alerting je tichý, keď je všetko OK, a presný, keď niečo nie je.