IMPulse: аутентификация, Inhibition, Maintenance и шаблоны тредов

от автора

IMPulse — ChatOps система менеджмента инцидентов. Если вы получаете алерты напрямую от Alertmanager, IMPulse поможет формировать из них полноценные инциденты с эскалацией, ответственными и тредом обсуждения проблемы. Подробности в статье.

После прошлого поста вышли v3.4.0v3.7.0. Ниже — что изменилось по факту.


Inhibition

Добавили механизм, который позволяет сосредоточиться на важных инцидентах: менее важные замораживаются, и в их тредах перестают появляться сообщения. Для этого используется уже существующий механизм freeze.

Синтаксис позволяет перенести подобные правила из Alertmanager:

inhibit_rules:  - source_matchers:      - severity = "critical"    target_matchers:      - severity = "warning"    equal:      - service

Если инцидент, подпадающий под правила source_matchers, находится в статусе firing, инциденты соответствующие target_matchers становятся дочерними и получают состояние frozen пока все родители не станут resolved. Для срабатывания правила у родительского и дочернего инцидентов лейбл service должен совпадать.

Поддержка groups в Slack и Mattermost

Добавлены messenger.groups — нативные группы мессенджеров. Шаг group в цепочке эскалации упоминает соответствующую группу.

messenger:  groups:    devops_group: {id: S0A6WIL2F7T}  chains:    oncall:      - group: devops_group

UI escallation chain

Ещё один тип цепочки эскалации. В конфиге происходит только объявление цепочки, расписание дежурств редактируется уже из UI (кнопка ui chains в футере).

messenger:  chains:    oncall:      type: ui

Maintenance

Механизм maintenance позволяет заморозить инциденты, подходящие под указанные условия, на время проведения работ, чтобы не дёргать инженеров лишний раз.

Временные окна задаются в UI (кнопка maintenance в футере).

Аутентификация в UI

Добавлена аутентификация через OAuth вашего мессенджера. Для работы необходимо установить переменные окружения AUTH_CLIENT_ID, AUTH_CLIENT_SECRET, AUTH_REDIRECT_URL.

Интерактивные кнопки инцидента в UI

В строке инцидента теперь есть те же кнопки (и чуть больше), что в мессенджере: назначение ответственного, Freeze, Task (если настроена интеграция с Jira). Эти действия, а так же ui chains и maintenance доступны только авторизованным пользователям.

Шаблоны сообщений в треде

Каждое сообщение в треде теперь рендерится используя свой Jinja2-файл из ./thread_templates/<messenger.type>_<template>.j2.

Вы можете настроить свои шаблоны и вывести информацию, интересующую именно вашу команду.

HTTP API

Простой (пока что) API под /api. Swagger: /api/docs, схема: /api/openapi.json.

Также появился endpoint /-/reload для перечитывания изменений в конфиге. Если в новом конфиге обнаружится ошибка, сервер вернёт ошибочный код, а работа продолжится с прежними настройками.

Эксплуатация

Downgrade

С v3.7.0 добавлен механизм —downgrade. В некоторых минорных обновлениях меняется схема файлов инцидентов. И теперь стало возможно откатиться на прежнюю минорную версию в случае возникновения проблем.

Логи

Логи теперь пишутся в формате JSON для лёгкой интеграции с системами хранения логов.

Proxy

Добавлена поддержка прокси через стандартные переменные HTTP_PROXY / HTTPS_PROXY / NO_PROXY.

Мелочи

  • Telegram: задействованы цветные кнопки;

  • Состояние кнопки Archive теперь сохраняется, так как пишется в localStorage;

  • Фильтры в UI можно редактировать после добавления.


Сайт: impulse.bot

Документация: docs.impulse.bot

Код: github.com/eslupmi/impulse

ссылка на оригинал статьи https://habr.com/ru/articles/1082754/