Интеграция с Prometheus Alertmanager — мобильные оповещения
Направляйте оповещения Prometheus Alertmanager в Echobell и получайте push-уведомления или звонки при инцидентах на серверах и в инфраструктуре.
Prometheus вместе с Alertmanager — широко используемый стек мониторинга и оповещения с открытым исходным кодом. Подключив Alertmanager к Echobell, вы будете получать мгновенные уведомления на телефон (в том числе срочные или звонковые), как только сработают ваши правила оповещения.
Предварительные требования
- Аккаунт Echobell хотя бы с одним созданным каналом
- Работающая связка Prometheus + Alertmanager
- Доступ к редактированию конфигурации Alertmanager (alertmanager.yml)
Обзор настройки
- Создайте канал Echobell
- Настройте шаблоны уведомлений (и при необходимости шаблон ссылки)
- Выберите способ интеграции:
- Вебхук через webhook-получатель Alertmanager (рекомендуется)
- Email через email-получатель Alertmanager (альтернатива)
- Создайте или обновите правила оповещений
- Проверьте и доработайте
Пошаговое руководство
Создайте канал Echobell
- Откройте приложение Echobell
- Создайте новый канал (например, «Prometheus Alerts»)
- Выберите цвет, чтобы канал было легко узнавать
Настройте шаблоны уведомлений
Payload вебхука Alertmanager содержит структурированные поля: status, commonLabels, commonAnnotations, externalURL и массив alerts. Эти поля можно напрямую использовать в шаблонах Echobell.
Рекомендуемые шаблоны:
Шаблон заголовка:
{{commonLabels.alertname}} - {{status}}
Шаблон тела:
🔔 Alert: {{commonLabels.alertname}}
📊 Severity: {{commonLabels.severity}}
🖥️ Instance: {{alerts[0].labels["instance"]}}
⏰ Starts: {{alerts[0].startsAt}}
ℹ️ Summary: {{commonAnnotations.summary}}
🧾 Description: {{commonAnnotations.description}}
Опциональный шаблон ссылки (в дополнительных настройках):
{{alerts[0].generatorURL || externalURL}}
Так в записи оповещения появится прямая ссылка на сработавший график или дашборд. Если generatorURL отсутствует, используется externalURL.
Способ интеграции A — вебхук (рекомендуется)
- В канале Echobell скопируйте URL вебхука из раздела «Триггеры»
- В Alertmanager добавьте webhook-получатель, который отправляет запросы на этот URL
Минимальный пример alertmanager.yml:
route:
receiver: echobell-webhook
receivers:
- name: echobell-webhook
webhook_configs:
- url: "https://hook.echobell.one/t/<channel-token>"
send_resolved: true
http_config:
follow_redirects: trueПримечания:
- send_resolved: true отправит уведомление и тогда, когда оповещение будет закрыто (status станет resolved)
- Echobell читает тело JSON как есть, поэтому шаблоны выше отработают корректно
Способ интеграции B — email (альтернатива)
Если вам удобнее или необходимо использовать email, задействуйте email-получатель Alertmanager и отправляйте письма на email-адрес, привязанный к каналу.
- В Echobell скопируйте email-адрес канала из раздела «Триггеры»
- Настройте email-получатель в Alertmanager и используйте простые шаблоны
Пример фрагмента конфигурации:
receivers:
- name: echobell-email
email_configs:
- to: "PASTE_CHANNEL_EMAIL_ADDRESS"
send_resolved: true
subject: "{{ .CommonLabels.alertname }} - {{ .Status }}"
html: |
<p><strong>Summary:</strong> {{ .CommonAnnotations.summary }}</p>
<p>{{ .CommonAnnotations.description }}</p>
<p>
<a href='{{ (index .Alerts 0).GeneratorURL }}' target='_blank' rel='noopener'>Open in Prometheus</a>
</p>В шаблонах Echobell для email-триггеров доступны переменные subject, text и html — Echobell подставляет их автоматически.
Создайте пример правила оповещения
Небольшое правило для проверки всей цепочки:
groups:
- name: example
rules:
- alert: HighCPU
expr: avg(rate(process_cpu_seconds_total[5m])) > 0.8
for: 2m
labels:
severity: critical
annotations:
summary: "High CPU usage"
description: "CPU has been over 80% for 2 minutes"Как только это оповещение сработает, Alertmanager отправит событие настроенному получателю, а Echobell уведомит подписчиков канала.
Проверка интеграции
- Временно снизьте пороги или создайте тестовое оповещение, которое сработает быстро
- Убедитесь, что при срабатывании приходит уведомление Echobell
- Если вы используете шаблон ссылки, откройте запись и нажмите на ссылку
- Закройте оповещение и проверьте, что приходит уведомление о его закрытии (если оно включено)
Выбор типов уведомлений
- Срочное: критические сбои на продакшене, инциденты уровня пейджинга
- Звонок: серьёзные сбои, когда нужно разбудить вас или прервать режимы Фокусирования
- Обычное: рутинные оповещения, предупреждения или информационные сообщения
Лучшие практики
- Держите шаблоны краткими, но информативными (имя оповещения, уровень серьёзности, инстанс, краткое описание)
- Используйте шаблон ссылки, чтобы сразу переходить к нужному графику или дашборду
- Группируйте и маршрутизируйте оповещения в Alertmanager, чтобы не создавать шум и усталость от уведомлений
- Добавляйте метки серьёзности и подбирайте типы уведомлений Echobell под срочность
- Относитесь к URL вебхука Echobell как к секрету; при утечке замените его
Устранение неполадок
Если оповещения не приходят в Echobell:
- Проверьте правильность URL вебхука или email-адреса канала
- Убедитесь, что канал Echobell активен и у него есть подписчики
- Просмотрите логи Alertmanager на предмет ошибок доставки
- Убедитесь, что маршрут в alertmanager.yml действительно указывает на нужный получатель
- Проверьте работу на простом разовом правиле оповещения
- Если используется email, убедитесь, что настройки SMTP работают и письма доставляются
Конфиденциальность и обработка данных
Echobell ставит приватность на первое место:
- Содержимое уведомлений остаётся на ваших устройствах
- На серверах хранится только минимальный объём конфигурационных данных
- URL вебхуков и email-адреса каналов следует считать секретами
- Echobell не хранит payload ваших оповещений на своих серверах