spacetab

@spacetab_bot

OpsHorn: инциденты и дежурства

Прототип, 2020

Наш собственный сервис управления инцидентами: принимает алерты мониторинга, группирует и правит их по правилам и оповещает дежурных по графику с эскалацией. Проработан интерактивным прототипом — веб-кабинет и мобильное приложение.

Клиент и задача

OpsHorn — собственный продукт студии: сервис управления инцидентами и дежурствами в духе PagerDuty и Opsgenie. Он стоит между системами мониторинга и командой и решает, кого, как и когда звать, когда что-то сломалось.

Сервис должен был собирать алерты из Prometheus, Sentry, Amazon CloudWatch и других источников в инциденты, группировать и править их по правилам и доводить до нужного человека: письмом, SMS, звонком, в Telegram, пушем или в чат команды — по графику дежурств и с эскалацией, если никто не отреагировал. Мы собирались вывести OpsHorn на рынок как подписку и проработали продукт целиком, вместе с тарифами и оплатой.

Что проработали

133 страницы прототипа: веб-кабинет проекта, личный профиль и мобильное приложение.

Текущие инциденты: группы, карточка инцидента с метками, Acknowledged и Resolved, оповещения по уровням эскалации

Инциденты: группы и карточка

Текущие инциденты собраны в группы, группу можно подтвердить целиком. В карточке — все поля алерта (метки, аннотации, критичность, статус), кнопки Acknowledged и Resolved, кого и когда оповестили на каждом уровне эскалации, когда следующее оповещение и кто отреагировал. Пояснение показывает, через какую интеграцию пришёл инцидент и какие правила к нему применились. Поиск и архив с фильтрами по критичности, интеграции и периоду.

Дежурный видит, что случилось, кого уже позвали и почему.

Правило оповещений: фильтр из вложенных групп AND/OR с regexp, графики дежурств для отправки

Правила оповещений

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

Инцидент доходит до нужной команды, а не будит всех подряд.

Правило группировки: цепочка правил имени группы из имени алерта и аннотаций

Группировка и модификация

Группировка объединяет инциденты одного типа сервиса и называет группу по цепочке правил из имени алерта и аннотаций. Модификация меняет критичность, имя алерта и аннотации или добавляет новые, в том числе из значений других полей; результат проверяется на последних 20 инцидентах.

Однотипные алерты собираются в одну группу с понятным именем.

График дежурств: месяц, два уровня эскалации, люди, каналы и группы, замены поверх графика

Графики дежурств

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

В любой момент понятно, кто дежурит и кого позовут следующим.

Входящая интеграция Prometheus: ключ, адрес приёма, сторожевой таймер, инструкция

Интеграции и каналы

Источники алертов — Prometheus, Sentry, Amazon CloudWatch и универсальная интеграция: у каждой свой ключ и адрес приёма, сторожевой таймер и инструкция по настройке. Каналы команды — Telegram, Slack и Microsoft Teams.

Подключить мониторинг — скопировать ключ и адрес.

Профиль: контакты, подключённые устройства, личные настройки оповещений по каналам и проектам

Личные настройки оповещений

Каждый сам решает, как его звать: почта, SMS, звонок, Telegram и пуш — всегда, никогда или в заданные часы, с отдельными настройками по проектам. Шаблоны писем и сообщений под каждый тип сервиса с предпросмотром на реальном инциденте; телефон с приложением подключается по QR-коду.

Оповещение приходит туда и тогда, где человек его заметит.

Команда проекта: роли, приглашения, платные звонки и SMS по участникамЖурнал проекта: кто что изменил, ссылки на прежние версии

Команда, тариф и журнал

Участники проекта с ролями, приглашения и группы; у каждого видно, подключены ли платные звонки и SMS. Тарифы — бесплатный с ограничениями по проектам и людям, Premium и корпоративный с SSO и своим доменом; пакеты звонков и SMS по странам, статистика расхода, карта и получатели счетов. Журнал проекта показывает, кто что поменял, со ссылкой на прежнюю версию.

Команда, расходы и изменения проекта — под контролем владельца.

Приложение, инциденты проекта: группы, текущие и архивПриложение, карточка инцидента: метки, Acknowledged и Resolved

Мобильное приложение

Проекты с числом инцидентов по критичности, текущие инциденты группами, архив и поиск, карточка с Acknowledged и Resolved и пуш-уведомление об инциденте.

Отреагировать на инцидент можно с телефона, не открывая ноутбук.

1 / 8

Что это дало

  • Весь путь инцидента на экранах

    От алерта мониторинга до подтверждения дежурным и архива — с группировкой, правками, эскалацией и пояснением, какие правила сработали.

  • Продукт вместе с моделью денег

    Тарифы, ограничения бесплатного плана, пакеты звонков и SMS и роли для бухгалтерии проработаны вместе с функциями.

  • Меньше лишних побудок

    Правила, графики и личные часы тишины решают, кого и когда звать.

  • Готово к оценке и разработке

    У экранов проработаны пустые списки, ошибки и варианты, с примечаниями к поведению.

Технологии

Статус

Проект остановился на этапе прототипа в 2020 году.

Есть похожая задача?

Расскажите о ней — ответим в течение рабочего дня и предложим, с чего начать.

Telegram: @spacetab_bot · Почта: bip@spacetab.io