Как настроить алертинг в Prometheus (через Alertmanager), чтобы получать уведомления в Slack при падении сервера?
Настройка алертинга в Prometheus с отправкой уведомлений в Slack через Alertmanager состоит из нескольких последовательных шагов.
## 1. Создание Incoming Webhook в Slack
Перейдите в раздел «Apps» вашего Slack-воркспейса, найдите «Incoming WebHooks» и создайте новый webhook для нужного канала. Скопируйте полученный URL вида `https://hooks.slack.com/services/XXXX/YYYY/ZZZZ` — он понадобится в конфигурации Alertmanager.
## 2. Настройка правил алертинга в Prometheus
Создайте файл с правилами, например `alerts.yml`:
yaml
groups:
— name: server_alerts
rules:
— alert: InstanceDown
expr: up == 0
for: 1m
labels:
severity: critical
annotations:
summary: «Сервер {{ $labels.instance }} недоступен»
description: «Экземпляр {{ $labels.instance }} не отвечает более 1 минуты.»
В `prometheus.yml` подключите файл правил:
yaml
rule_files:
— «alerts.yml»
alerting:
alertmanagers:
— static_configs:
— targets:
— «alertmanager:9093»
## 3. Настройка Alertmanager
Создайте файл `alertmanager.yml`:
yaml
global:
resolve_timeout: 5m
route:
group_by: [‘alertname’]
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receiver: ‘slack-notifications’
receivers:
— name: ‘slack-notifications’
slack_configs:
— api_url: ‘https://hooks.slack.com/services/XXXX/YYYY/ZZZZ’
channel: ‘#alerts’
send_resolved: true
title: ‘{{ .CommonAnnotations.summary }}’
text: ‘{{ .CommonAnnotations.description }}’
## 4. Запуск Alertmanager
Запустите Alertmanager с указанием конфигурационного файла:
bash
./alertmanager —config.file=alertmanager.yml
По умолчанию Alertmanager слушает порт `9093`. Проверить статус можно через веб-интерфейс: `http://localhost:9093`.
## 5. Проверка работы
Остановите один из мониторируемых сервисов и подождите 1–2 минуты. Prometheus должен зафиксировать состояние `up == 0`, сформировать алерт и передать его в Alertmanager, который отправит сообщение в указанный Slack-канал.
## Полезные советы
— Используйте `inhibit_rules` в Alertmanager, чтобы подавлять менее критичные алерты при срабатывании критических.
— Настройте `repeat_interval` разумно: слишком короткий интервал приведёт к спаму в канале.
— Для тестирования можно использовать `amtool alert add` для ручного создания тестового алерта.
— Храните `api_url` в переменных окружения или секретах, не коммитьте webhook-токены в репозиторий.
