Перейти к содержимому

Уведомления в Mattermost

Входящий вебхук в Mattermost и подключение в Statuser — пошагово со скриншотами


Statuser присылает уведомления в канал Mattermost через входящий вебхук. Настройка займёт несколько минут: создайте вебхук в Mattermost, вставьте его адрес в Statuser — и уведомления начнут приходить в канал.

Что понадобится

  • Права администратора Mattermost, чтобы один раз разрешить входящие вебхуки на сервере. Сам вебхук может создать любой участник, которому разрешено управлять интеграциями.
  • Сервер Mattermost, доступный из интернета: Statuser отправляет сообщения снаружи. Если Mattermost во внутренней сети, хватит прокси, который открывает наружу только вебхуки, — как его настроить.

Шаг 1. Разрешите входящие вебхуки

Откройте меню продукта (значок из квадратов в левом верхнем углу) → Системная консоль → Интеграции → Управление интеграцией и включите три настройки:

  • Разрешить входящие вебхуки — без неё Mattermost не примет ни одного сообщения.
  • Разрешить интеграциям переопределять имена и Разрешить интеграциям переопределять иконки изображений профилей — тогда сообщения придут от имени Statuser с его значком. Если оставить эти две выключенными, уведомления всё равно будут приходить, но от имени того, кто создал вебхук.

Нажмите Сохранить внизу страницы.

Шаг 2. Создайте входящий вебхук

Вернитесь в команду и откройте меню продукта → Интеграции → Входящие вебхуки → Добавить входящий Webhook. Заполните форму:

  • Заголовок — Statuser, чтобы вебхук было легко узнать в списке.
  • Канал — куда будут приходить уведомления.
  • Имя пользователя и Изображение профиля оставьте пустыми: их задаёт Statuser.

Нажмите Сохранить. Mattermost покажет адрес вебхука — скопируйте его целиком.

Адрес вебхука работает как пароль: токен лежит прямо в нём, и любой, кто его знает, может писать в канал. Не пересылайте его в открытых чатах.

Шаг 3. Подключите Mattermost в Statuser

  1. Откройте Настройки аккаунта → Уведомления и нажмите Добавить канал.
  2. Выберите Mattermost и вставьте скопированный адрес. Подпись необязательна — она пригодится, если каналов Mattermost будет несколько.
  3. Нажмите Отправить тест — в канал придёт тестовое сообщение Statuser.
  4. Нажмите Подключить и отметьте проекты, уведомления которых должны приходить в этот канал.

Проверить канал позже можно в любой момент: откройте меню ⋯ на его карточке в разделе Уведомления и выберите Отправить тест.

Как выглядят уведомления

Каждое сообщение приходит блоком с цветной полосой: красная — сбой или уже случившаяся проблема, зелёная — восстановление, жёлтая — плановое напоминание, оранжевая — медленный ответ, синяя — изменение DNS-записей. Внизу — ссылка на инцидент или сервер в Statuser.

Какие события уходят в канал, настраивается в правилах уведомлений: у события можно раскрыть список каналов и выключить в нём Mattermost. Из каких проектов — решают тумблеры каналов в настройках проекта. Подробнее — в статье Каналы уведомлений.

Если Mattermost во внутренней сети

Открывать в интернет весь Mattermost не придётся. Statuser отправляет только запросы POST на путь /hooks/ — хватит прокси на сервере с публичным адресом, который пропускает их и ничего больше. Например, в nginx:

server {
    listen 443 ssl;
    server_name mm-hooks.example.com;
    # ssl_certificate и ssl_certificate_key — сертификат для mm-hooks.example.com
 
    location /hooks/ {
        limit_except POST { deny all; }
        proxy_pass http://mattermost.internal:8065;
    }
 
    location / {
        return 404;
    }
}

В Statuser вставьте адрес вебхука, заменив в нём хост на адрес прокси: https://mm-hooks.example.com/hooks/….

Прокси должен именно пересылать запросы: по редиректу Statuser не переходит. Чтобы пускать через прокси только Statuser, фильтруйте запросы по заголовку User-Agent — у всех наших запросов к вебхукам он одинаковый:

Mozilla/5.0 (compatible; Statuser Webhook; https://statuser.cloud/)

Фильтр по IP здесь не сработает: в списке адресов Statuser — адреса проверок, а уведомления отправляются с других.

Если тест не проходит

  • Сервер чата недоступен из интернета — Mattermost во внутренней сети. Откройте снаружи путь /hooks/, например через прокси.
  • Чат вернул HTTP 501 — в системной консоли выключены входящие вебхуки, вернитесь к шагу 1.
  • Чат вернул HTTP 400 — адрес скопирован не целиком или вебхук удалён. Скопируйте адрес заново в Интеграции → Входящие вебхуки.
  • Сообщения приходят от вашего имени, а не от Statuser — не включено переопределение имён и иконок, вернитесь к шагу 1.