Перейти к содержанию

Loki: логи


Логи — самая древняя форма наблюдаемости. tail -f /var/log/syslog существовал задолго до веб-приложений. Но в эпоху контейнеров логи размазаны по сотням подов, а grep уже не спасает. Loki — централизованное хранилище логов, сделанное специально для Grafana.

Главная идея Loki: индексировать не содержимое логов (как Elasticsearch), а метаданные — labels, те же ключ-значение, что в Prometheus.

Разница: Elasticsearch индексирует каждое слово. Loki индексирует только {job="api", env="prod"}. Сами строки пишутся в chunk'и без индекса — получается дёшево по памяти (раз в 5-10 дешевле Elasticsearch).


LogQL — язык запросов к Loki

Базовый синтаксис:

{job="api", env="production"} |= "error"
  • {...} — label filter (обязателен, Loki не делает запрос без меток)
  • |= "error" — line filter (ищет слово "error" в строке)

Пример для панели Logs:

{job="api"}
  | json message
  | line_format "{{.message}}"
  | status >= 400

Визуализация логов в Grafana

Три типа визуализации:

  1. Logs panel: raw логи с цветовой подсветкой. Удобно, когда нужно именно строки.
  2. Time Series: метрика rate({job="api"} |="error" [5m]) — счётчик ошибок в логах. Это визуализируется как обычный график в панели Time Series. Позволяет смотреть вместе с Prometheus для корреляции.
  3. Histogram в Explore: без создания панели. В Explore, Loki data source, нажмите "Logs" → "Histogram". Grafana сама построит распределение логов по времени в виде гистограммы.

Correlation между метрикой Prometheus и логами в Loki

Типичный пример: в панели Time Series видите скачок HTTP 500 errors. Переходите в Explore, находите тот же промежуток времени через dataLinks, переключившись на Loki. Логи сами отфильтруются.

Чтобы эти связи работали: 1. В Loki-источнике включены derivedFields (см. главу Provisioning источников данные — tracesToLogsV2). Обычно для traceID. 2. В Prometheus-источнике также считываются exemplarTraceIDdestinations.

Вывод: метрика Prometheus показывает медленный запрос → переключаемся → трейс Tempo → внутри трейса ссылка на логи Loki через traceID.


Далее: Tempo: трассировка