Как настроить централизованное логирование (ELK stack, Loki)?
Подробный ответ
Зачем нужно централизованное логирование
Логи на отдельном сервере бесполезны, если сервер недоступен, контейнер уже удалён или инцидент затрагивает несколько сервисов. Централизованная система принимает структурированные логи со всех источников, хранит их по заданному retention и позволяет искать события из одного интерфейса.
ELK stack
Классический ELK stack состоит из Elasticsearch для хранения и поиска, Logstash для обработки логов и Kibana для визуализации. Вместо Logstash или вместе с ним часто используют Beats или другие агенты для доставки логов с хостов.
Application stdout / file logs
|
Filebeat
|
Logstash
|
Elasticsearch
|
KibanaLoki stack
Loki — система агрегации логов, ориентированная на экономичное хранение. Она индексирует labels, например сервис, environment, namespace и pod, а не полный текст каждой строки. Логи доставляет агент, например Grafana Alloy или Promtail, а запросы и визуализация часто выполняются через Grafana.
Application stdout / journald
|
Grafana Alloy or Promtail
|
Loki
|
GrafanaСтруктурированные логи
Приложение желательно должно писать JSON-логи в stdout. Полезные поля: timestamp, level, service, environment, message, request_id, trace_id, user_id при допустимости с точки зрения privacy, а также ошибка и stack trace.
{
"timestamp": "2026-08-13T07:00:00Z",
"level": "error",
"service": "payments-api",
"environment": "production",
"request_id": "a1b2c3",
"message": "Payment provider timeout"
}Labels и cardinality
В Loki labels должны иметь ограниченный набор значений. Нельзя использовать в labels request ID, user ID, timestamp или уникальный URL: это создаёт высокую cardinality и ухудшает работу системы. Такие значения нужно оставлять в теле лога и искать по ним через LogQL.
Безопасность и retention
В логи нельзя писать пароли, токены, полные номера карт и другие чувствительные данные. Нужно определить retention policy, доступ по ролям, аудит доступа, маскирование PII и процедуру удаления данных по требованиям компании и законодательства.
Как ответить на собеседовании
Для централизованного логирования собираю логи всех сервисов в единое хранилище. ELK подходит для полнотекстового поиска через Elasticsearch и Kibana, а Loki хорошо интегрируется с Grafana и индексирует labels. Логи пишу в JSON в stdout, добавляю request_id и trace_id, контролирую cardinality labels, retention и не допускаю попадания секретов в лог.
Оцени свой прогресс