Как настроить алертинг в 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-токены в репозиторий.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.