Раздел 14 · Infrastructure / DevSecOps

Observability: метрики, логи, трейсинг и ошибки

middle-senior~20 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Observability: метрики, логи, трейсинг и ошибки

Пятый урок раздела. Мониторинг отвечает на вопрос “что сломалось”. Observability отвечает на вопрос “почему”, причём на проблемы, которые ты заранее не предусмотрел. Разница принципиальна: мониторинг это заранее заведённые дашборды на известные поломки, observability это возможность задать системе новый вопрос на лету, когда случилось то, чего никто не ждал. В распределённой системе без неё отладка превращается в гадание по разрозненным логам.

Идея: три столпа, три разных вопроса

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

  • Метрики отвечают на вопрос что и насколько: RPS, доля ошибок, p95 латентности. Это числа во времени, дёшевые, для дашбордов и алертов.
  • Логи отвечают на вопрос что именно произошло: конкретное событие с деталями. Лучше структурированные (JSON), их можно фильтровать.
  • Трейсы отвечают на вопрос где в цепочке: как один запрос прошёл через все сервисы и где потерял время. Это и есть ключ к распределённой отладке.

Хорошая практика: алерт срабатывает по метрике (что-то не так), трейс показывает, в каком сервисе (где), лог даёт детали (почему). Три столпа работают как воронка от симптома к причине.

Метрики: Prometheus и Grafana

Prometheus периодически опрашивает у сервисов эндпоинт /metrics и копит временные ряды, а Grafana рисует по ним дашборды и шлёт алерты. Четыре базовых сигнала, с которых стоит начинать любой сервис (golden signals):

  • Latency: как быстро отвечаем (смотри перцентили p95/p99, не среднее, среднее прячет хвост).
  • Traffic: сколько запросов.
  • Errors: доля ошибок.
  • Saturation: насколько забиты ресурсы.

Совет про перцентили важен на практике: среднее время ответа может быть прекрасным, пока каждый сотый пользователь ждёт пять секунд. Хвост видно только в p99.

Логи: структурированно и централизованно

Логи полезны, когда они структурированы и собраны в одном месте. console.log('user', id) это мусор в проде. Структурированный лог это объект с полями, который можно фильтровать и связывать с трейсом:

logger.info({
  event: 'order.created',
  orderId,
  userId,
  traceId,   // связь с трейсом
  durationMs,
});

Собирают их в централизованное хранилище: ELK или Loki. Ключевое поле в каждом логе это traceId: оно сшивает лог с трейсом и метриками, превращая три столпа в одну связную картину.

дальше после входа

Урок целиком открыт всем, кто вошёл. Войди по своему email, чтобы читать дальше.

Вход пока по приглашению. Если хочешь учиться, напиши Vassiliy.