Документация

Документация IncidentRelay

Версия v2.3.1 · Обновлено

Документация IncidentRelay#

IncidentRelay — это self-hosted сервис для планирования дежурств (on-call), маршрутизации алертов и уведомлений. Он хранит команды, ротации, маршруты, каналы уведомлений, подписки на браузерные push-уведомления, подтверждения (ACK), разрешения (Resolve), временное откладывание алертов (Shelve), напоминания и эскалации внутри вашей собственной инфраструктуры.

Поток алертов#

Monitoring system
  -> Incoming integration endpoint
  -> Route intake token
  -> Route match
  -> Service
  -> Team and rotation
  -> Assigned on-call user
  -> Notification channels and profile browser push
  -> ACK / Resolve / Shelve

Браузерные push-уведомления включаются пользователями в профиле и доставляются автоматически назначенным пользователям. Они не являются каналами маршрута.

Способы установки#

Выберите один способ установки:

СпособРекомендуется дляНачните здесь
Docker Composeбыстрый старт, тестирование, простые self-hosted развёртыванияУстановка через Docker
RPM packageRHEL, Rocky Linux, AlmaLinux, CentOS StreamУстановка через RPM
Manual systemdразвёртывание из исходников, собственное окружение Python, классическая Linux VMРучная установка через systemd

Все production-установки должны запускать два процесса:

incidentrelay             # HTTP API, UI, incoming webhooks
incidentrelay-scheduler   # reminders, escalations, periodic jobs

Не запускайте задачи планировщика внутри каждого веб-воркера.

Настройка#

IncidentRelay читает путь к конфигурации из:

INCIDENTRELAY_CONFIG_FILE

Пример:

export INCIDENTRELAY_CONFIG_FILE=/etc/incidentrelay/incidentrelay.conf

Старое имя ONCALL_CONFIG_FILE использовать не следует.

Подробнее: Настройка.

Для браузерных/PWA-уведомлений настройте [browser_push] и ключи VAPID. Подробнее: Браузерные push-уведомления.

Основные понятия#

ПонятиеОписание
GroupГраница доступа и область администрирования на уровне группы
UserЧеловек, который может входить в систему, дежурить, получать уведомления, включать браузерные push-уведомления или использовать персональные API-токены
TeamОперационная единица внутри группы
RotationРасписание дежурств для команды
RouteПравило маршрутизации алертов с собственным токеном приёма
ChannelЦель исходящих уведомлений, например Mattermost, Telegram, email, вебхук или голосовой вызов
Browser pushДоставка браузерных/PWA-уведомлений на уровне профиля для назначенных пользователей
AlertАлерт IncidentRelay, созданный из входящей интеграции
SilenceПравило, подавляющее уведомления для совпадающих новых алертов
ShelveВременная responder-пауза для одного существующего AlertGroup без изменения технического статуса и impact
OverrideВременная замена участника ротации

Подробнее:

Сводка по RBAC#

IncidentRelay использует два уровня разрешений:

УровеньНазначение
Group roleОпределяет границу доступа и администрирование пользователей на уровне группы
Team roleОпределяет, что пользователь может делать внутри конкретной команды

Текущие названия ролей:

Group roles: viewer, editor, user_admin
Team roles:  viewer, responder, manager

Важные правила:

  • Пользователь должен состоять в группе, прежде чем его можно будет добавить в команду этой группы.
  • Добавление пользователя в команду не добавляет пользователя в группу автоматически.
  • user_admin может создавать пользователей только в пределах границы выбранной группы.
  • editor может создавать команды в группе, но не управляет автоматически всеми командами.
  • manager — это роль записи для конкретной команды.
  • responder может подтверждать, разрешать или временно откладывать алерты без изменения настроек команды.

Подробнее: Группы и RBAC.

Интеграции#

В IncidentRelay есть два уровня интеграций.

Источники входящих алертов#

ИсточникЭндпоинтДокументация
AlertmanagerPOST /api/integrations/alertmanagerAlertmanager
AWS SNS/Cloud watchPOST /api/integrations/aws-snsAWS SNS/Cloud watch
GrafanaPOST /api/integrations/grafanaGrafana
RMONPOST /api/integrations/rmonGrafana
ZabbixPOST /api/integrations/zabbixZabbix
SentryPOST /api/integrations/sentry/<route_id>Sentry
LibreNMSPOST /api/integrations/librenmsLibreNMS
Generic webhookPOST /api/integrations/webhookGeneric webhook

Входящие интеграции используют токены приёма маршрутов (route intake token).

Доставка уведомлений#

Способ доставкиДокументация
Общее поведение каналовКаналы уведомлений
MattermostMattermost
TelegramTelegram
EmailEmail
SlackSlack
Discord, Microsoft Teams, кастомный вебхукКаналы на основе вебхуков
Голосовой вызовГолосовой вызов
Браузерные/PWA pushБраузерные push-уведомления

У каналов уведомлений нет токенов приёма. Маршруты получают алерты, а затем отправляют уведомления в прикреплённые каналы. Браузерные push-уведомления действуют на уровне профиля и отправляются на активные браузерные устройства назначенного пользователя.

Синхронизация календаря#

Способ синхронизацииПодходит дляДокументация
CalDAVApple Calendar, Thunderbird, DAVx5 и другие CalDAV-клиентыСинхронизация календаря по CalDAV
Подписной ICS-фидOutlook, Google Calendar и подписки на веб-календариICS-фид календаря

CalDAV использует персональные API-токены с областью calendar:read. ICS-фиды календаря используют секретные URL подписки и не требуют входа в систему.

Управление инцидентами#

Сервисы#

Планирование#

API и автоматизация#

Swagger UI:

/docs

OpenAPI JSON:

/api/openapi.json

Полезные страницы:

Процесс первичной настройки#

1. Install IncidentRelay
2. Configure the service and public_base_url
3. Configure browser push VAPID keys if browser/PWA notifications are required
4. Run migrations
5. Create the first global admin
6. Create a group
7. Create or add users to the group
8. Assign group roles: viewer, editor, user_admin
9. Create a team
10. Add group users to the team
11. Assign team roles: viewer, responder, manager
12. Create a rotation
13. Add rotation members
14. Create a service
15. Add service links and runbooks
16. Create notification channels
17. Ask users to enable browser push in Profile if required
18. Create a route and attach channels
19. Select a default service or configure service match rules
20. Copy the route intake token
21. Configure Alertmanager, Zabbix or webhook sender
22. Send a test alert
23. Подтвердите, разрешите или временно отложите алерт

Подробнее: Первый вход и настройка.

Ссылки проекта#