Monitoring

Наблюдаемость без боли: логи, метрики, трейсы

Шесть часов мы искали причину деградации API, хотя все данные были в системе. Проблема в том, что логи, метрики и трейсы жили в трёх разных мирах и не имели общего ключа — trace id.

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

app.use((req, res, next) => {
  const traceId = req.headers["x-trace-id"] ?? crypto.randomUUID();
  res.setHeader("x-trace-id", traceId);
  ctx.run({ traceId }, next);
});

Метрики: начните с четырёх золотых сигналов — latency, traffic, errors, saturation. Красивые дашборды приходят потом, сначала алерты на то, что реально будит.

Логи: пишите события, а не отладку. «order.created» с полями полезнее, чем «entered function handleOrder».

Хороший инцидент-разбор отвечает на вопрос «что система рассказала нам сама?». Если ответ «ничего» — вы платите за наблюдаемость, но не владеете ею.

Комментарии 1

S
SRE_Dima9 июня 2026

Trace id в каждой строчке лога — да. Но добавьте ещё соглашение об именовании span-ов, иначе трейс на 200 span-ов нечитаем.

Оставить комментарий