Как диагностировать можно ли заставить Prometheus AlertManager отправлять оповещения через MQTT?

Ссылка скопирована
1 ответ

По вводным: задача такая: Планирую заставить Prometheus AlertManager отправлять оповещения через MQTT на устройствоMeshtasticНужно понять: в определённый чат. Скажите, кто-нибудь сталкивался с подобной задачей? Возможна ли подобная интеграция?
Сейчас ситуация такая: p.S,: Если не ошибаюсь, в Grafana можно было настроить оповещения в MQTT, но я хотел бы отправлять сообщения в обход Grafana, чтобы не плодить костыли.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Никита Орлов Ответ

Prometheus Alertmanager напрямую не отправляет уведомления в MQTT “из коробки” как штатный receiver, но это легко сделать через webhook-прослойку. Alertmanager умеет отправлять webhook, а небольшой сервис принимает JSON alert и публикует сообщение в MQTT topic.

Схема:

Prometheus -> Alertmanager -> webhook receiver -> MQTT broker

Prometheus -> Alertmanager -> webhook receiver -> MQTT broker

Конфиг Alertmanager:

receivers:
  - name: mqtt-webhook
    webhook_configs:
      - url: http://mqtt-bridge:8080/alert

route:
  receiver: mqtt-webhook

receivers: - name: mqtt-webhook webhook_configs: - url: http://mqtt-bridge:8080/alert route: receiver: mqtt-webhook

Webhook-сервис может быть написан на Go, Python, Node.js. Он принимает payload Alertmanager, нормализует alert и публикует в MQTT:

import paho.mqtt.publish as publish
 
def handle_alert(alert):
    publish.single(
        "alerts/prometheus",
        payload=alert["status"],
        hostname="mqtt-broker"
    )

import paho.mqtt.publish as publish def handle_alert(alert): publish.single( "alerts/prometheus", payload=alert["status"], hostname="mqtt-broker" )

Обязательно добавьте защиту: токен на webhook, ограничение сети, retry/backoff и логирование. Alertmanager может отправлять групповые события, поэтому сервис должен уметь разбирать массив alerts, а не только один alert.

Если нужно без своего кода, можно поискать готовые alertmanager-webhook-to-mqtt bridge, но я бы всё равно проверял поддержку retries и формат payload.

Итог: штатного MQTT receiver нет, но правильная архитектура — webhook bridge. Alertmanager отправляет webhook, а отдельный сервис публикует в MQTT нужный topic с понятным форматом сообщения.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно