Практикум Prometheus — Alertmanager и Grafana Alerting
Практикум, шаг 6 из 9. Назад — экспортёры. Дальше — Loki, Tempo, Mimir.
Два контура алертинга
| Контур | Где правила | Куда летят уведомления |
|---|---|---|
| Prometheus + Alertmanager | rules/*.yml в Prometheus | Alertmanager → email, Slack, Telegram |
| Grafana Unified Alerting | UI Grafana или provisioning | Contact points, notification policies |
Оба могут сосуществовать. Классический cloud-native путь — Prometheus rules → Alertmanager.
Документация — Alertmanager, Tutorial alerting.
Alerting rule в Prometheus
rules/alerts.yml:
groups:
- name: host
rules:
- alert: HostDown
expr: up{job="node"} == 0
for: 2m
labels:
severity: critical
annotations:
summary: "Node {{ $labels.instance }} down"
description: "Target unreachable more than 2 minutes."
- alert: DiskSpaceLow
expr: |
(1 - node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"}
/ node_filesystem_size_bytes) * 100 > 90
for: 5m
labels:
severity: warning
annotations:
summary: "Disk >90% on {{ $labels.instance }}"
Подключение в prometheus.yml:
rule_files:
- /etc/prometheus/rules/*.yml
alerting:
alertmanagers:
- static_configs:
- targets: ['alertmanager:9093']
Проверка:
promtool check rules rules/alerts.yml
В UI Prometheus — вкладка Alerts (Pending → Firing после for).
Alertmanager в Compose
alertmanager:
image: prom/alertmanager:v0.27.0
ports:
- "9093:9093"
volumes:
- ./alertmanager.yml:/etc/alertmanager/alertmanager.yml:ro
alertmanager.yml — минимальная маршрутизация:
route:
receiver: default
group_by: ['alertname', 'job']
group_wait: 30s
group_interval: 5m
repeat_interval: 4h
receivers:
- name: default
webhook_configs:
- url: 'http://127.0.0.1:5001/' # тестовый webhook или Alertmanager Bot
UI Alertmanager — http://localhost:9093 — silences, grouping, status.
Inhibition и grouping
Grouping — одно письмо на пачку алертов HostDown по кластеру.
Inhibition — если HostDown, подавить DiskSpaceLow на том же instance:
inhibit_rules:
- source_matchers:
- alertname = HostDown
target_matchers:
- alertname = DiskSpaceLow
equal: ['instance']
Grafana Unified Alerting
Alerting → Alert rules → New alert rule
- Query A — PromQL, например
avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) < 0.1. - Condition — порог.
- Contact point — Slack, email, Telegram (настройте в Contact points).
- Notification policy — маршрут по label
severity.
Плюс Grafana — алерты по Loki и Tempo, не только Prometheus.
Минус дублирования — держите один источник правды для prod (либо Prometheus rules, либо Grafana, с документированным исключением).
Практическое упражнение
- Остановите
node_exporter:docker compose stop node_exporter. - Дождитесь Pending → Firing для
HostDown. - Откройте Alertmanager — группа алертов.
- Создайте Silence на 1 час для maintenance.
- Запустите exporter снова — алерт Resolved.
Runbook в annotations
annotations:
summary: "High error rate on {{ $labels.job }}"
runbook_url: "https://wiki.example.com/runbooks/high-5xx"
Grafana может показывать ссылку в notification template.
Чек-лист
-
promtool check rulesбез ошибок - Alertmanager в Targets Prometheus (status → alertmanagers)
- Тестовый алерт переходит в Firing
- Silence работает в UI Alertmanager
Дальше — логи, трейсы, Mimir.
См. также
Другие статьи этого же раздела в боковом меню (как на странице "О разделе"). Два инструмента, русский UI Grafana 12, windows_exporter, UI-шпаргалки, targets, Explore, дашборд Windows и типичные сбои. Pull-модель, компоненты Prometheus, временные ряды, метки, exporters и Pushgateway — основа перед установкой. Docker Compose на Windows и Linux, Grafana 12 и ru-RU, windows_exporter, provisioning, health check и типичные сбои первого запуска. Counter, Gauge, Histogram, Summary, функции rate и increase, агрегации и типовые запросы для дашбордов. Проверка provisioned datasource, первая панель up, переменные, Explore, импорт дашбордов — после шага 2. node_exporter, windows_exporter на Windows, blackbox, Pushgateway, client libraries и /metrics. PLG-расширение — логи в Loki, трейсы в Tempo, долгосрочные метрики в Mimir, LogQL и корреляция в Grafana. Grafana Alloy как единый агент, eBPF-метрики Beyla, RUM Faro и профилирование Pyroscope. OpenTelemetry Collector, инструментирование сервиса, нагрузочный тест k6 с метриками и полный docker-compose observability lab.Как пользоваться
Практикум Prometheus — архитектура и модель данных
Практикум Prometheus — установка и первые метрики
Практикум Prometheus — типы метрик и PromQL
Практикум Grafana — источники данных и дашборды
Практикум Prometheus — экспортёры и инструментирование
Практикум — Loki, Tempo и Mimir
Практикум — Alloy, Beyla, Faro и Pyroscope
Практикум — OpenTelemetry, k6 и итоговый стенд