Incidents
Управление инцидентами для отслеживания и разрешения проблем в сервисах и приложениях.
Инциденты — это механизм управления проблемами и сбоями в работе сервисов. Они позволяют фиксировать, отслеживать и координировать работу команды по устранению неполадок, а также анализировать историю проблем для улучшения надёжности системы.
Инциденты создаются автоматически при сбоях мониторов для отслеживания проблем в проекте.
Для чего используются инциденты
1. Централизованное отслеживание проблем
Инциденты обеспечивают единую точку для:
- фиксации всех проблем в работе сервисов;
- отслеживания статуса решения проблемы;
- координации действий команды;
- сохранения истории событий и решений.
Это особенно важно для:
- production-окружений с высокой нагрузкой;
- распределённых команд;
- систем с SLA-требованиями;
- постмортем-анализа и улучшения процессов.
2. Автоматическое реагирование на сбои
При возникновении проблем с мониторами платформа:
- автоматически создаёт инцидент;
- фиксирует время начала проблемы;
- отслеживает все последующие проверки;
- может запускать автоматизации для уведомлений или компенсирующих действий.
3. Координация работы команды
Инциденты помогают команде:
- назначать ответственных за решение проблемы;
- отслеживать прогресс работы;
- добавлять комментарии и заметки;
- анализировать первопричины после устранения.
Создание инцидентов
Инциденты создаются автоматически от мониторов.
Когда монитор обнаруживает проблему, платформа автоматически создаёт инцидент, если:
- монитор остаётся недоступным 3 минуты подряд;
- превышены пороговые значения проверок;
- ошибка сохраняется стабильно.
Это предотвращает создание инцидентов при кратковременных сбоях (например, перезапуск сервиса).
Что происходит при автоматическом создании:
- создаётся инцидент с привязкой к монитору;
- указывается окружение монитора;
- время начала (
startedAt) устанавливается на момент первого сбоя; - статус устанавливается в
Open; - фиксируются детали ошибки в событиях.
Пример сценария:
00:00 - Монитор недоступен (начало отслеживания)
00:01 - Монитор недоступен (ожидание)
00:02 - Монитор недоступен (ожидание)
00:03 - Монитор недоступен (создание инцидента)Жизненный цикл инцидента
Статусы инцидента
Инцидент проходит через следующие статусы:
Open (Открыт)
Начальный статус инцидента.
Означает:
- проблема обнаружена;
- требуется внимание команды;
- работа по устранению не начата или в процессе.
Что делать:
- оценить серьёзность проблемы;
- назначить ответственного;
- начать исследование причин.
Acknowledged (Подтверждён)
Инцидент взят в работу.
Означает:
- команда знает о проблеме;
- кто-то активно работает над устранением;
- уведомления о проблеме получены.
Что делать:
- исследовать первопричину;
- применять временные решения (workarounds);
- добавлять заметки о прогрессе.
Resolved (Разрешён)
Проблема устранена.
Означает:
- инцидент закрыт;
- проблема больше не воспроизводится;
- зафиксирована первопричина (root cause).
Что делать:
- документировать решение;
- обновить runbook и документацию;
- провести постмортем для критичных инцидентов.
Переходы между статусами
[Создание]
↓
┌─── Open ───┐
│ ↓ │
│ Acknowledged│
│ ↓ │
└→ Resolved ←┘Возможные действия:
Open → Acknowledged— подтвердить инцидент (acknowledge);Acknowledged → Resolved— разрешить инцидент (resolve);Open → Resolved— разрешить напрямую (для простых случаев).
Автоматическое разрешение
Инциденты, созданные от мониторов, могут автоматически разрешаться, если:
- монитор восстановился;
- монитор работает стабильно 2 минуты подряд;
- нет повторных сбоев в период восстановления.
При автоматическом разрешении:
- статус меняется на
Resolved; - время разрешения (
resolvedAt) фиксируется; - создаётся событие с пометкой
auto: true; - сохраняется время стабильной работы (
uptimeMs).
Важно: Если монитор снова падает во время периода восстановления, отсчёт начинается заново.
Критичность инцидента (Severity)
Уровень критичности помогает приоритизировать работу и определять скорость реагирования.
Critical (Критический)
Когда использовать:
- полный отказ основного сервиса;
- недоступность production для всех пользователей;
- потеря данных;
- нарушение безопасности.
Время реакции: немедленно (24/7)
Примеры:
- основная база данных недоступна;
- API возвращает 500 для всех запросов;
- платёжная система не работает;
- утечка персональных данных.
High (Высокий)
Когда использовать:
- серьёзное ухудшение работы сервиса;
- проблема затрагивает значительную часть пользователей;
- критичные функции недоступны.
Время реакции: в течение часа
Примеры:
- медленная работа основных функций;
- отказ важного внешнего интеграционного сервиса;
- проблемы с авторизацией;
- недоступность части функциональности.
Medium (Средний)
Когда использовать:
- проблема затрагивает небольшую группу пользователей;
- есть workaround;
- некритичная функциональность работает неправильно.
Время реакции: в рабочее время
Примеры:
- баг в редко используемой функции;
- проблемы с UI в определённом браузере;
- медленная работа некритичного API;
- проблемы с экспортом отчётов.
Low (Низкий)
Когда использовать:
- косметические проблемы;
- улучшения и оптимизации;
- минорные баги без влияния на бизнес.
Время реакции: по возможности
Примеры:
- опечатки в интерфейсе;
- незначительные UI-неточности;
- запросы на улучшение документации;
- предложения по оптимизации.
События инцидента
Каждое действие с инцидентом фиксируется как событие, создавая полную историю.
Типы событий
opened
Инцидент создан.
Payload содержит:
- детали ошибки монитора;
- статус ошибки;
- тип ошибки (
errorKind).
check_failed
Новая неудачная проверка монитора.
Payload содержит:
- статус ошибки;
- тип ошибки (
errorKind); - сообщение об ошибке;
- HTTP-статус (если применимо).
acknowledged
Инцидент подтверждён.
Payload содержит:
- кто подтвердил (
acknowledgedBy); - время подтверждения.
resolved
Инцидент разрешён.
Payload содержит:
- кто разрешил (
resolvedBy); - первопричина (
rootCause); auto: true/false(автоматическое разрешение);- время стабильной работы (для автоматических разрешений).
note
Добавлена заметка.
Payload содержит:
- текст заметки;
- кто добавил (
addedBy); - время добавления.
assigned
Назначен ответственный.
Payload содержит:
- кому назначен (
assignedTo); - кто назначил (
assignedBy); - информация о пользователе.
Просмотр событий
События инцидента доступны в деталях инцидента и показывают:
- хронологию всех действий;
- кто и когда выполнил действие;
- детали каждого изменения;
- историю проверок монитора.
Это помогает при:
- анализе времени реакции;
- постмортем-анализе;
- аудите действий команды;
- понимании эволюции проблемы.
Работа с инцидентами
Назначение ответственного
Любому инциденту можно назначить ответственного из команды проекта.
Зачем это нужно:
- чёткое понимание, кто работает над проблемой;
- предотвращение дублирования усилий;
- отслеживание загрузки команды;
- быстрая эскалация при необходимости.
Ответственный может быть назначен:
- при создании инцидента;
- после подтверждения (acknowledge);
- переназначен другому члену команды.
Добавление заметок
Заметки позволяют документировать процесс работы над инцидентом.
Что фиксировать в заметках:
- гипотезы о причинах проблемы;
- результаты исследований;
- примененные временные решения;
- ссылки на логи и метрики;
- коммуникацию с другими командами.
Все заметки сохраняются в истории событий с указанием автора и времени.
Разрешение инцидента
При разрешении инцидента рекомендуется указать первопричину (root cause).
Root Cause (первопричина):
- что именно вызвало проблему;
- какие действия были предприняты;
- какие изменения внесены для предотвращения повторения.
Примеры root cause:
- Исчерпана память на сервере БД, увеличен размер инстанса
- Неправильная конфигурация nginx, исправлен upstream timeout
- Внешний API изменил формат ответа, обновлен парсер
- DDoS-атака, настроены rate limits и WAFДокументирование первопричины важно для:
- предотвращения повторения проблемы;
- накопления знаний команды;
- улучшения мониторинга и алертинга;
- проведения постмортем-анализа.
Автоматизация и интеграция
Пороговые значения (Thresholds)
Платформа использует пороговые значения для предотвращения ложных срабатываний.
Создание инцидента:
- Монитор должен быть недоступен 3 минуты подряд
- Предотвращает создание инцидентов при кратковременных сбоях
- Время начала (
startedAt) = момент первого сбоя
Автоматическое разрешение:
- Монитор должен работать 2 минуты подряд
- Предотвращает преждевременное закрытие при нестабильной работе
- Если монитор снова падает — отсчёт начинается заново
Интеграция с Workflows
⚠️ В разработке: Система автоматизаций (Workflows) находится в активной разработке. Функциональность может быть ограничена или изменена.
Инциденты могут запускать автоматизации через систему Workflows.
Доступные триггеры:
- Incident Opened — инцидент создан
- Incident Acknowledged — инцидент подтверждён
- Incident Resolved — инцидент разрешён
Примеры автоматизаций:
1. Уведомление в Slack при критическом инциденте:
Триггер: Incident Opened
Условие: severity == "critical"
Действие: Отправить сообщение в #incidents2. Создание задачи в Jira:
Триггер: Incident Opened
Условие: severity == "high" OR severity == "critical"
Действие: Создать задачу в проекте SUPPORT3. Автоматическое отключение feature flag:
Триггер: Incident Opened
Условие: monitor связан с определённым сервисом
Действие: Отключить флаг "new_feature"4. Уведомление команды о разрешении:
Триггер: Incident Resolved
Действие: Отправить отчёт в Slack с root causeSummary и аналитика
Платформа предоставляет сводку по инцидентам проекта:
- Open — количество открытых инцидентов
- Acknowledged — количество подтверждённых
- Resolved — количество разрешённых
- Total — общее количество
Эта информация помогает:
- оценить текущую нагрузку;
- отслеживать динамику инцидентов;
- планировать ресурсы команды;
- выявлять проблемные зоны системы.
Лучшие практики
Настройка мониторинга
Правильные пороги:
- Используйте встроенные пороговые значения (3 мин / 2 мин);
- Для критичных сервисов — уменьшайте интервал проверок;
- Для стабильных сервисов — увеличивайте интервалы.
Разделение по окружениям:
- Production — жёсткие пороги и немедленная реакция;
- Staging — более мягкие условия создания инцидентов;
- Development — мониторинг без автоматических инцидентов.
Работа с критичностью
Используйте правильные уровни:
- Не завышайте критичность — это приводит к "усталости от алертов";
- Critical только для реальных production-outage;
- Medium/Low для большинства проблем в staging/dev.
Документируйте критерии:
- Создайте внутренний runbook с критериями severity;
- Обучите команду правильной классификации;
- Регулярно пересматривайте и обновляйте критерии.
Процесс работы с инцидентами
Быстрое реагирование:
- Настройте автоматические уведомления;
- Определите дежурство для критичных систем;
- Документируйте процедуры эскалации.
Эффективное расследование:
- Сразу назначайте ответственного;
- Используйте заметки для фиксации гипотез;
- Добавляйте ссылки на логи, метрики, трейсы;
- Привлекайте нужных специалистов через упоминания.
Документирование решений:
- Всегда указывайте root cause при разрешении;
- Обновляйте документацию и runbook;
- Создавайте задачи на улучшение мониторинга;
- Проводите постмортем для серьёзных инцидентов.
Интеграция с процессами
Связь с Feature Flags:
- Автоматически отключайте проблемные фичи через workflows;
- Включайте fallback-режимы при инцидентах;
- Используйте флаги для быстрого отката изменений.
Связь с Jira/Task Trackers:
- Автоматически создавайте задачи для инцидентов;
- Синхронизируйте статусы между системами;
- Сохраняйте контекст в обе стороны.
Интеграция с мониторингом:
- Добавляйте ссылки на дашборды в заметки;
- Настройте correlation между инцидентами и метриками;
- Используйте трейсинг для быстрой диагностики.
Постмортем и улучшения
После разрешения критичных инцидентов:
- Проведите постмортем в течение 24-48 часов;
- Определите action items для предотвращения повторения;
- Обновите мониторинг и алертинг;
- Поделитесь результатами с командой.
Регулярный анализ:
- Еженедельно анализируйте статистику инцидентов;
- Выявляйте повторяющиеся проблемы;
- Приоритизируйте системные улучшения;
- Отслеживайте MTTR (Mean Time To Resolve).
Дополнительные материалы
Инциденты тесно интегрированы с другими возможностями платформы:
- Monitoring — настройка мониторов для автоматического создания инцидентов
- Workflows — автоматизация реагирования на инциденты (в разработке)
- Feature Flags — управление функциональностью при возникновении проблем