Туториал

Как найти root cause инцидента за 5 минут с Konso

Пошаговый сценарий: от алерта о росте ошибок — до конкретной строки кода и оценки бизнес-ущерба.

Открыть Konso arrow_forward
bolt

TL;DR

  • check_circleМаршрут диагностики: алерт → метрика → логи → бизнес-события
  • check_circleСначала сузьте временной диапазон до момента начала инцидента — это ключевой шаг
  • check_circleФильтруйте логи по сервису и уровню Error/Critical, а не просматривайте всё подряд
  • check_circlecorrelationId в логах позволяет восстановить полный путь запроса от первой до последней строки
  • check_circleValue Tracking покажет бизнес-ущерб: сколько операций упало за время инцидента

Сценарий: алерт о росте ошибок

Вы получили уведомление: error rate на endpoint /api/payments вырос выше порога. Пользователи не могут завершить оплату. У вас есть 5 минут, чтобы понять причину и передать информацию команде для исправления. Вот как это сделать с Konso.

Шаг 1. Откройте алерт и зафиксируйте временной диапазон

Перейдите в раздел Метрики в вашем проекте Konso. Найдите метрику, вызвавшую алерт — обычно это error_rate или http_errors_count. Посмотрите на график и определите точный момент начала роста ошибок: это ваша точка отсчёта. [скриншот: график метрики с видимым всплеском ошибок, курсор указывает на момент начала] Запомните или скопируйте время начала инцидента — оно понадобится на следующем шаге.

Шаг 2. Установите временной фильтр

В правом верхнем углу интерфейса Konso установите временной диапазон: начало — за 2–3 минуты до всплеска, конец — текущий момент или время окончания инцидента. Узкий диапазон критичен — он сократит объём данных в 10–20 раз и позволит видеть только релевантные события. [скриншот: выбор временного диапазона в интерфейсе Konso с установленным кастомным периодом]

Шаг 3. Перейдите в раздел Логи и примените фильтры

Откройте раздел Логи. Примените следующие фильтры: • Уровень: Error, Critical (снимите Warning и Info — это шум на этапе диагностики) • Сервис или endpoint: введите название сервиса или путь /api/payments [скриншот: интерфейс логов Konso с применёнными фильтрами по уровню и сервису] Вы увидите только ошибки из нужного сервиса за выбранный период — именно то, что нужно.

Шаг 4. Найдите первую ошибку и откройте детали

Отсортируйте логи по времени по возрастанию — первая ошибка в списке, скорее всего, и есть источник проблемы. Кликните на запись, чтобы раскрыть детали. [скриншот: развёрнутая запись лога с полями: message, exception, stackTrace, userId, correlationId, timestamp] Обратите внимание на: • message и exception — описание ошибки • stackTrace — конкретная строка кода • correlationId — идентификатор запроса для поиска всей цепочки • userId — кто из пользователей пострадал первым

Шаг 5. Проследите цепочку запроса по correlationId

Скопируйте значение correlationId из открытой записи. В поле поиска логов введите этот correlationId. Снимите фильтр по уровню — теперь вам нужны все записи с этим ID, включая Info. [скриншот: результаты поиска по correlationId — хронологическая цепочка событий одного запроса] Вы увидите полный путь запроса: от входа в систему до места сбоя. Это покажет, на каком именно шаге произошёл отказ — например, timeout внешнего API, отсутствие записи в БД или нарушение валидации.

Шаг 6. Оцените масштаб через Value Tracking

Перейдите в раздел Value Tracking. Найдите событие, соответствующее упавшей операции — например, payment.completed или payment.failed. Установите тот же временной диапазон. [скриншот: дашборд Value Tracking с графиком payment.completed за период инцидента — видимое падение] Это ответит на вопрос «какой ущерб»: сколько оплат не прошло, в какой момент всё упало и восстановилось ли уже.

Шаг 7. Сформулируйте root cause

У вас теперь есть всё необходимое для чёткого описания инцидента: • Когда началось — из метрики • Что именно упало — из первого Error-лога • Где в коде — из stackTrace • Почему — из цепочки по correlationId • Ущерб — из Value Tracking Пример формулировки: «В 14:23 UTC начался рост ошибок на /api/payments. Root cause: timeout при обращении к fraud-check сервису (>3000ms). Затронуто 47 оплат за 12 минут. Сервис восстановился в 14:35 после рестарта fraud-check.»

lightbulb

Ключевое условие быстрой диагностики

Этот сценарий работает за 5 минут только если в логах есть correlationId и структурированные поля (userId, endpoint, duration). Без них поиск займёт в 5–10 раз дольше. Если correlationId ещё нет — это первое, что стоит добавить в код.

Маршрут диагностики: что где искать

ВопросРаздел KonsoЧто смотреть
Когда началось?МетрикиГрафик error_rate — точка начала всплеска
Что упало?Логи → фильтр Error/CriticalПервая ошибка в хронологии
Где в коде?Детали логаstackTrace → файл и строка
Почему упало?Логи по correlationIdПолная цепочка запроса
Какой ущерб?Value TrackingКоличество упавших бизнес-операций

Что делать, если correlationId нет в логах

Если в ваших логах нет correlationId, добавьте его через middleware — один раз при входе запроса в систему, и он автоматически прокидывается во все последующие записи. В .NET это делается через ILogger scope или Activity.Current.Id из System.Diagnostics.

Чеклист: готов ли ваш проект к быстрой диагностике

  • check_circleЛоги содержат correlationId или requestId для связи событий в одну цепочку
  • check_circleУровни логирования настроены правильно: Error только для реальных сбоев
  • check_circleКлючевые бизнес-операции трекаются через Value Tracking
  • check_circleАлерты настроены с порогом и временным окном (не на каждую единичную ошибку)
  • check_circleИмя сервиса или endpoint присутствует в каждой записи лога

Настройте диагностику инцидентов в Konso

Подключите Konso и получите единый инструмент для поиска root cause — от метрик до бизнес-событий

Начать бесплатно arrow_forward

Частые вопросы

Что делать, если алерт сработал, но в логах ничего нет? expand_more
Проверьте уровень логирования — возможно, Error-логи отключены в production. Также проверьте временной диапазон: иногда алерт срабатывает с задержкой. Если проблема в внешнем сервисе (таймаут, 502), ошибка может быть залогирована в другом модуле.
Как искать по correlationId, если он называется иначе (например, requestId или traceId)? expand_more
В Konso можно фильтровать по любому полю структурированного лога. В поле поиска введите имя поля и значение в формате fieldName:value. Используйте то название, которое вы задали в своём коде при добавлении в scope логгера.
Что если инцидент начался раньше, чем сработал алерт? expand_more
Алерты срабатывают по пороговым условиям, поэтому реальное начало проблемы может быть на несколько минут раньше. Расширьте временной диапазон на 10–15 минут назад от момента срабатывания алерта — первые единичные ошибки появятся там.
Как понять, затронул ли инцидент конкретного пользователя? expand_more
Если в логах есть userId — используйте его как фильтр, чтобы увидеть все события конкретного пользователя за период инцидента. Это полезно для ответа на запрос поддержки о конкретном клиенте.

Оставаясь на сайте, Вы даете свое согласие на использование файлов cookie