🟡 Intermediate

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 for klauzulu — vyhnete sa false positives pri krátkych spike-och
  • Testujte routingamtool umožň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.