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

README проекта IncidentRelay

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

IncidentRelay#

IncidentRelay — это self-hosted сервис для планирования дежурств (on-call), маршрутизации алертов и уведомлений.

Он предоставляет:

  • группы и RBAC;
  • команды и ротации;
  • каталог сервисов с затронутыми системами, ссылками, runbook’ами, зависимостями и аналитикой влияния;
  • токены приёма алертов на основе маршрутов;
  • приём из Alertmanager, Zabbix и обобщённых вебхуков;
  • каналы уведомлений Mattermost, Telegram, email, на основе вебхуков и голосовых вызовов;
  • рабочие процессы ACK, Resolve и Alert Shelving;
  • временный Shelve отдельных AlertGroup с автоматическим expiry и resume;
  • напоминания и эскалацию;
  • заглушки (silences) и переопределения ротаций;
  • представление календаря;
  • персональные API-токены;
  • документацию Swagger/OpenAPI.

Основной рабочий процесс#

Monitoring system -> Route -> Service -> Team -> Rotation -> Notification channels -> ACK / Resolve / Shelve

Маршруты определяют, как алерты попадают в IncidentRelay. Сервисы описывают, какая логическая система затронута.

Порядок отображения сервиса и команды:

name -> slug -> "-"

Установка#

Выберите один способ:

СпособДокументация
Docker ComposeУстановка через Docker
RPM packageУстановка через RPM
Manual systemdРучная установка через systemd

Сервисы времени выполнения#

IncidentRelay следует запускать как отдельные сервисы:

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

Telegram-воркер опционален и нужен только тогда, когда используются опрос (polling) или действия Telegram.

Настройка#

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

INCIDENTRELAY_CONFIG_FILE

Пример:

export INCIDENTRELAY_CONFIG_FILE=/etc/incidentrelay/incidentrelay.conf

Не используйте старое имя ONCALL_CONFIG_FILE.

Миграции базы данных#

python manage.py migrate

Создание первого администратора#

python manage.py create-admin   --username admin   --password 'change-me-123'   --email admin@example.com

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

1. Create a group
2. Create users
3. Add users to the group
4. Create a team
5. Add users to the team
6. Create a rotation
7. Add rotation members
8. Create a service
9. Add service links and runbooks
10. Create notification channels
11. Create a route and select default service
12. Copy the route intake token
13. Configure Alertmanager, Zabbix, or webhook sender
14. Send a test alert
15. Acknowledge or resolve the alert

Сервисы#

Сервис описывает затронутую систему, например:

RabbitMQ Cloud
Billing API
PostgreSQL Prod
Frontend Web

Сервис может иметь:

  • ссылки на дашборд, логи, трейсы, репозиторий и документацию;
  • обобщённые runbook’и;
  • специфичные для алертов runbook’и, выбираемые матчерами;
  • зависимости;
  • аналитику и статус влияния.

Поведение матчера runbook’ов:

empty matchers -> generic runbook for all alerts of the service
matchers set   -> runbook only for matching alerts

Уведомления по email#

Канал email не хранит получателей или настройки SMTP-транспорта.

  • SMTP настраивается глобально в файле конфигурации.
  • Письма отправляются на адрес email из профиля назначенного пользователя.
  • Канал email может при необходимости переопределить HTML-шаблон.

Интервалы напоминаний#

Интервал напоминаний настраивается на ротациях:

0 disables reminders
>= 60 enables reminders
1..59 invalid

API#

Swagger UI:

/docs

OpenAPI JSON:

/api/openapi.json

Эндпоинты Service API доступны по адресу:

/api/services

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

ТемаСсылка
Первый входgetting-started/first-login.md
Сервисыconcepts/services.md
Алертыusage/alerts.md
Токены приёма маршрутовconcepts/route-intake-tokens.md
APIapi/index.md
Устранение неполадокadministration/troubleshooting.md

Лицензия#

MIT