AlertManager — это превосходный инструмент оповещения об инцидентах с вашей инфраструктурой. Он умеет оповещать по различным каналам связи: от электронной почты, до Telegram и Slack. В этой статье мы расскажем, как быстро и просто настроить AlertManager так, что бы он слал оповещения в Telegram.
Работать будем через специального Telegram-бота — Telepush. Бот уже настроен и всё, что нам нужно сделать — это получить токен и настроить фовординг алерта в него. Получить токен просто:
- Откройте ссылку на бота в Telegram;
- Нажмите кнопку «Start»;
- Вам будет выдан токен. Скопируйте его.
Теперь отправляемся редактировать конфигурационный файл alertmanager.yml. Если вы устанавливали AlertManager, следуя нашей инструкции, то конфигурационный файл располагается по пути: /etc/alertmanager/alertmanager.yml.
Открываем файл и вносим в него следующие изменения:
route:
group_by: ['alertname', 'instance', 'severity']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'telepush' #Название ресивера, который будет обрабатывать алерты.
receivers:
- name: 'telepush'
webhook_configs:
- url: 'https://telepush.dev/api/inlets/alertmanager/a7524e' #URL с токеном после последнего слеша
http_config:
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
Сохраним файл и создадим теперь само оповещение, которое будет отражаться в web-интерфейсе AlertManager и Telegram-боте. Создадим файл vim /etc/prometheus/alerts.yml и запишем в него следующее:
groups:
- name: Critical alers
rules:
- alert: InstanceDown
expr: up == 0
for: 1m
labels:
severity: critical
annotations:
description: '{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minute.'
summary: Instance {{ $labels.instance }} downestart=on-failure
Этот алерт будет срабатывать, когда любой из наблюдаемых серверов будет недоступен более 1 минуты. Хорошо, сохраним файл и подключим его в наш основной конфигурационный файл etc/prometheus/prometheus.yml в раздел rule_files:
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
- "alerts.yml"
Сохраняем изменения и перезагружаем AlertManager и Prometheus следующими командами: systemctl restart alertmanager && systemctl restart prometheus. Проверим, что оба сервиса запустились успешно и мы нигде не ошиблись:
systemctl status alertmanager
systemctl status prometheus
В обоих случаях systemd должен вернуть ответ со статусом «active»:
Отлично, всё работает и мы нигде не ошиблись в конфигах. Теперь можно устроить стресс-тест нашей новой системе оповещения — принудительно выключаем средствами ОС наш frontend-сервер и посмотрим, какое сообщение пришлёт нам Telegram-бот?
Спустя минуту мы получили такое сообщение:
Наша система работает корректно, всё хорошо. Telepush — это бесплатный бот с простым функционалом, который буквально в несколько минут прикручивается к AlertManager и позволяет оперативно быть в курсе инцидентов.