Читать логи: Kibana, Grafana Loki, Sentry

↑ 1.7 Инструменты исследования: DevTools, логи, трассировки · ← Предыдущая · → Следующая

Желательно~4 мин чтенияУровень: middle

Зачем это аналитику и PM

Браузер видит только ответ странице. Почему сервис отказал, написано в журнале. Аналитику не нужно строить график: нужно сузить время, найти строку и сформулировать вопрос без секретов.

План темы

  • поиск по trace id и времени
  • уровни логов
  • как формулировать запрос в поддержку

Объяснение

Журнал — строки, которые сервис сам решил записать. Интерфейсы разные, привычка одна: интервал времени, потом идентификатор или текст ошибки.

Kibana — экран поиска по журналам, которые лежат в Elasticsearch. Если компания на OpenSearch, экран может называться иначе. Grafana Loki хранит потоки логов, а смотрят их в Grafana. Язык запросов там LogQL. Sentry группирует ошибки в выпуски и события. Это не хвост всех логов сервиса. Подписи кнопок, меню и версии здесь не фиксируются: сверьте с вашим экраном.

Как три разных ящика. В одном карточки за смену. В другом лента по цеху. В третьем только бракованные детали, собранные стопками. Искать «всё» в ящике брака бессмысленно.

Что сужать

Сначала интервал. Без него поиск по короткому слову тонет. Часовой пояс интервала записывают так, как на экране, и дублируют в сообщении. Потом идентификатор запроса, если он есть, либо редкий кусок текста ошибки. Имена полей и меток потока берутся у команды. Пример формы запроса ниже не является запросом вашего стенда.

Уровни помогают отсечь шум. Часто встречаются error, warn или warning, info, debug. Точный набор и написание смотрите у себя. Ошибка пользователя иногда записана как info, если автор лога так решил. Пустой поиск по error не значит, что события не было.

В поддержку уходит не «не работает». Нужны стенд, время с поясом, что нажали, какой код или текст ждали, какой идентификатор нашли, чего в журнале нет.

Куда смотретьЧто там обычно лежит
Kibanaстроки журнала за интервал
Grafana и Lokiпоток логов и фильтр строки
Sentryгруппа ошибок и одно событие

Примеры

Форма, не боевой запрос. Имя метки job выдумано для примера.

{job="example"} |= "trace-example"

Сообщение в поддержку:

Стенд: test
Время: 2026-10-04 14:10 MSK, плюс-минус 2 минуты
Действие: сохранение учебного заказа
Ожидали код 201, на экране 500
Идентификатор из ответа: trace-example
В журнале за интервал этой строки не нашли. Куда смотреть дальше?

Нюансы и подводные камни

  • Чужой интервал «сегодня» без пояса сдвигает поиск на часы.
  • Sentry без события не заменяет журнал доступа. Туда попадает не каждый отказ.
  • Строка лога может содержать почту и токен. В задачу копируют идентификатор и код, не весь абзац.
  • Уровень debug на бою часто выключен. Отсутствие подробной строки не доказывает, что шага не было.
  • Grafana без выбранного источника показывает не те логи. Источник уточняют, если экран пуст.

Практика

Составьте сообщение в поддержку по учебному отказу: стенд, время с поясом, действие, ожидание и выдуманный идентификатор trace-example.

Ожидаемый результат: по тексту можно искать, не задавая уточняющих вопросов про «когда». В тексте нет живого допуска и нет утверждения, как называется кнопка в вашей Kibana.

Вопросы с ответами

Связано с блоком Developer

Связанные темы