Alertmanager
Alertmanager - это компонент в экосистеме Prometheus, который предназначен для управления и отправки оповещений (alerting) на основе метрик и правил, определенных в Prometheus. Он играет ключевую роль в системе мониторинга, позволяя операторам и администраторам мониторить состояние системы и получать уведомления о проблемах или аномалиях.
Конфигурация Alertmanager
Конфигурация Alertmanager осуществляется через YAML-файл, который задает, как оповещения должны обрабатываться, группироваться и отправляться получателям (email, Slack, Telegram и др.). Ключевые параметры включают настройку receiver (получателей), route (маршрутизацию оповещений), groupBy (правила группировки), groupWait, groupInterval и repeatInterval (интервалы для групповых уведомлений), а также настройку inhibit (ингибирования, подавления дублирующих алертов).
alertmanager.yml:
- global. Глобальные настройки, которые применяются ко всем последующим блокам, если не переопределены локально.
- route. Определяет основную логику маршрутизации оповещений.
- receiver: Имя получателя, указанного в разделе receivers.
- group_by: Список меток (labels), которые будут использоваться для объединения оповещений в одно уведомление.
- group_wait: Время ожидания перед отправкой первого уведомления для новой группы.
- group_interval: Время ожидания перед отправкой обновленного уведомления для существующей группы.
- repeat_interval: Время ожидания перед повторной отправкой последнего уведомления, если ситуация сохраняется.
- receivers. Список получателей, куда будут отправляться оповещения. Каждый receiver имеет свое уникальное имя и содержит настройки для различных интеграций (например, email_configs, slack_configs, telegram_configs).
- templates. Пути к файлам шаблонов, которые используются для форматирования тела уведомлений.
- inhibit_rules. Правила, которые позволяют подавлять или "заглушать" одни оповещения другими. Например, если срабатывает оповещение о недоступности целого кластера, то другие, менее критичные оповещения об этом кластере, будут подавлены.
global: # Глобальные настройки по умолчанию для всех получателей и маршрутов
resolve_timeout: 5m # Время ожидания перед тем, как считать оповещение разрешенным
# Другие глобальные настройки, например:
# telegram_configs:
# - bot_token: "YOUR_BOT_TOKEN"
# chat_id: "YOUR_CHAT_ID"
route: # Корневой маршрут, к которому привязаны все остальные маршруты
group_by: ['alertname', 'cluster'] # Группировка оповещений по этим тегам
group_wait: 30s # Время ожидания перед первой отправкой группы оповещений
group_interval: 5m # Время интервала между отправками группы оповещений
repeat_interval: 4h # Время интервала перед повторной отправкой одних и тех же оповещений
receiver: 'default-receiver' # Получатель по умолчанию
# Дочерние маршруты для более специфичной обработки оповещений
routes:
- match:
severity: 'critical' # Оповещения с тегом severity=critical
receiver: 'critical-receiver' # Отправлять на критический получатель
# Если здесь нет, то оповещения с 'critical' могут также идти в default-receiver
- match_re:
service: 'web-.*' # Оповещения, где service начинается с 'web-'
receiver: 'web-receiver' # Отправлять на получатель для веб-сервисов
receivers:
# Определения получателей оповещений
- name: 'default-receiver' # Имя получателя
email_configs: # Настройки для Email
- to: 'ops@example.com'
from: 'alertmanager@example.com'
smarthost: 'smtp.example.com:587'
auth_username: 'alertmanager@example.com'
auth_password: 'your_password'
headers:
Subject: '[{{ .CommonLabels.alertname }}] {{ .GroupLabels.cluster }}'
webhook_configs: # Настройки для Webhooks
- url: 'http://localhost:5001/'
- name: 'critical-receiver'
slack_configs: # Настройки для Slack
- api_url: 'YOUR_SLACK_WEBHOOK_URL'
channel: '#critical-alerts'
text: '{{ template "slack.critical.text" . }}' # Использование кастомного шаблона
- name: 'telegram'
telegram_configs:
- bot_token: 'ВАШ_BOT_TOKEN' # Токен вашего Telegram-бота, полученный от BotFather
chat_id: -1001234567890 # ID чата или канала, куда будут отправляться уведомления
# api_url: 'https://api.telegram.org' # Опционально, если вы используете нестандартный API
# parse_mode: 'HTML' # Опционально, если вы хотите использовать форматирование в сообщениях
templates:
- "/etc/alertmanager/templates/*.tmpl" # Путь к файлам с шаблонами сообщений
Prometheus config
Так же необходимо сказать prometheus куда слать Алерты