← Наблюдаемость
10 мин · просто · Урок 2 из 6

Уровни логирования и структурные логи

DEBUG/INFO/WARN/ERROR, зачем уровни, structured logging в JSON и что нельзя писать в логи.

Зачем у логов уровни

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

Уровень логирования настраивается: в проде ставят INFO, и тогда DEBUG не пишется вообще. При разборе инцидента уровень временно опускают до DEBUG, чтобы увидеть детали.

Фильтровать по уровню — основа работы с логами. По journald это -p:

journalctl -u myapp -p err     # только ERROR и критичнее

Плоский лог против структурного

Обычный лог — строка текста:

2026-06-18 10:14 ERROR payment failed for order 4821, gateway timeout

Человеку читать удобно, машине — нет. Чтобы найти все ошибки по заказу 4821, приходится парсить строку регэкспами, а формат у каждого сервиса свой. На масштабе это не работает.

Структурный лог (structured logging) пишет ту же запись как JSON с полями:

{"ts":"2026-06-18T10:14:02Z","level":"error","msg":"payment failed",
 "order_id":4821,"reason":"gateway_timeout","service":"payments"}

Теперь система сбора логов индексирует поля, и можно искать запросом: level=error AND order_id=4821. Это фильтр по полям вместо парсинга текста. Поэтому в сервисах, которые отдают логи в централизованную систему, пишут структурно.

Пара слов про названия

Стек для логов часто называют «ELK» — Elasticsearch, Logstash, Kibana. Как родовое имя это слово уже неточно, и вот почему.

В 2021 году Elastic перевела Elasticsearch и Kibana с открытой Apache 2.0 на SSPL, лицензию с ограничениями для тех, кто продаёт продукт как услугу. AWS сделала форк последней открытой версии и назвала его OpenSearch; проект развивается отдельно и живёт во многих облаках под своим именем. В 2024 Elastic добавила к SSPL опцию AGPL, то есть вернула Elasticsearch в разряд открытых, но OpenSearch к тому моменту уже разошёлся своей дорогой.

Плюс сама конфигурация сменилась: Logstash во многих установках заменили на легковесный Filebeat, и тот же стек стали звать «Elastic Stack». Отдельно от этого семейства выросли Loki (Grafana) и ClickHouse-решения.

Так что в разговоре «ELK» обычно означает просто «централизованные логи с поиском». Уточняй, что за система на самом деле — от этого зависят и запросы, и лицензия.

Что нельзя писать в логи

Логи хранятся, пересылаются и часто доступны многим. Туда нельзя класть секреты и персональные данные:

Утёкший в лог токен — это тот же утёкший токен. Чувствительные поля маскируют (card: ****1234) или не логируют вовсе.

Что важно запомнить

Уровни логов (DEBUG, INFO, WARN, ERROR) отделяют рутину от аварий; в проде обычно пишут от INFO, при разборе опускают до DEBUG.

Структурные логи (JSON с полями) ищутся фильтром по полям, а не парсингом текста, поэтому их используют для централизованного сбора.

Секреты и персональные данные в логи не попадают: лог хранится и пересылается, утечка в него — это утечка.

В следующих уроках логи соединяются с метриками и трейсами в полноценный мониторинг.

Прошли материал до конца? Отметьте урок пройденным.