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

Уведомления в Rocket.Chat

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


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

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

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

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

Нажмите значок шестерёнки на верхней панели → Рабочее пространство → Интеграции и нажмите Новый — откроется форма входящего вебхука. Заполните её:

  • Включено — оставьте включённым.
  • Имя — Statuser, чтобы вебхук было легко узнать в списке.
  • Опубликовать на канале — куда будут приходить уведомления, например #alerts.
  • Отправить от имени — rocket.cat. Этот бот есть на любом сервере Rocket.Chat, и сообщения от него придут с именем и значком Statuser.
  • Псевдоним, URL-адрес Аватара и Эмодзи оставьте пустыми: имя и значок задаёт Statuser.

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

Шаг 2. Скопируйте адрес вебхука

После сохранения Rocket.Chat покажет раздел Инструкции с полем URL Webhook. Скопируйте адрес кнопкой справа от него.

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

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

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

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

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

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

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

Если Rocket.Chat во внутренней сети

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

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

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

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

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

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

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

  • Сервер чата недоступен из интернета — Rocket.Chat во внутренней сети. Откройте снаружи путь /hooks/, например через прокси.
  • Чат вернул HTTP 503 — вебхук выключен. Откройте его в Интеграции и включите Включено.
  • Чат вернул HTTP 500 — адрес скопирован не целиком или вебхук удалён. Скопируйте адрес заново из поля URL Webhook.
  • Адрес вебхука начинается с внутреннего адреса сервера — Rocket.Chat собирает его из адреса, указанного в настройках сервера. Замените в скопированной ссылке хост на тот, по которому сервер открывается из интернета.