Интеграция с Prometheus Alertmanager — мобильные оповещения

Направляйте оповещения Prometheus Alertmanager в Echobell и получайте push-уведомления или звонки при инцидентах на серверах и в инфраструктуре.


Prometheus вместе с Alertmanager — широко используемый стек мониторинга и оповещения с открытым исходным кодом. Подключив Alertmanager к Echobell, вы будете получать мгновенные уведомления на телефон (в том числе срочные или звонковые), как только сработают ваши правила оповещения.

Предварительные требования

  • Аккаунт Echobell хотя бы с одним созданным каналом
  • Работающая связка Prometheus + Alertmanager
  • Доступ к редактированию конфигурации Alertmanager (alertmanager.yml)

Обзор настройки

  1. Создайте канал Echobell
  2. Настройте шаблоны уведомлений (и при необходимости шаблон ссылки)
  3. Выберите способ интеграции:
    • Вебхук через webhook-получатель Alertmanager (рекомендуется)
    • Email через email-получатель Alertmanager (альтернатива)
  4. Создайте или обновите правила оповещений
  5. Проверьте и доработайте

Пошаговое руководство

Создайте канал Echobell

  1. Откройте приложение Echobell
  2. Создайте новый канал (например, «Prometheus Alerts»)
  3. Выберите цвет, чтобы канал было легко узнавать

Настройте шаблоны уведомлений

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 — вебхук (рекомендуется)

  1. В канале Echobell скопируйте URL вебхука из раздела «Триггеры»
  2. В 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-адрес, привязанный к каналу.

  1. В Echobell скопируйте email-адрес канала из раздела «Триггеры»
  2. Настройте 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 уведомит подписчиков канала.

Проверка интеграции

  1. Временно снизьте пороги или создайте тестовое оповещение, которое сработает быстро
  2. Убедитесь, что при срабатывании приходит уведомление Echobell
  3. Если вы используете шаблон ссылки, откройте запись и нажмите на ссылку
  4. Закройте оповещение и проверьте, что приходит уведомление о его закрытии (если оно включено)

Выбор типов уведомлений

  • Срочное: критические сбои на продакшене, инциденты уровня пейджинга
  • Звонок: серьёзные сбои, когда нужно разбудить вас или прервать режимы Фокусирования
  • Обычное: рутинные оповещения, предупреждения или информационные сообщения

Лучшие практики

  1. Держите шаблоны краткими, но информативными (имя оповещения, уровень серьёзности, инстанс, краткое описание)
  2. Используйте шаблон ссылки, чтобы сразу переходить к нужному графику или дашборду
  3. Группируйте и маршрутизируйте оповещения в Alertmanager, чтобы не создавать шум и усталость от уведомлений
  4. Добавляйте метки серьёзности и подбирайте типы уведомлений Echobell под срочность
  5. Относитесь к URL вебхука Echobell как к секрету; при утечке замените его

Устранение неполадок

Если оповещения не приходят в Echobell:

  • Проверьте правильность URL вебхука или email-адреса канала
  • Убедитесь, что канал Echobell активен и у него есть подписчики
  • Просмотрите логи Alertmanager на предмет ошибок доставки
  • Убедитесь, что маршрут в alertmanager.yml действительно указывает на нужный получатель
  • Проверьте работу на простом разовом правиле оповещения
  • Если используется email, убедитесь, что настройки SMTP работают и письма доставляются

Конфиденциальность и обработка данных

Echobell ставит приватность на первое место:

  • Содержимое уведомлений остаётся на ваших устройствах
  • На серверах хранится только минимальный объём конфигурационных данных
  • URL вебхуков и email-адреса каналов следует считать секретами
  • Echobell не хранит payload ваших оповещений на своих серверах

Дополнительные материалы