Loki — это система централизованного логирования от Grafana Labs, которую часто называют “Prometheus для логов”. Главная идея: хранить не полностью проиндексированные логи, а только метки. За счёт этого Loki требует меньше ресурсов, чем классические ELK-стэки, и отлично подходит для Kubernetes, микросервисов и инфраструктуры с большим потоком событий.
Почему Loki полезен
- дешёвле в хранении и обслуживании, чем тяжёлые поисковые движки
- хорошо интегрируется с Grafana
- удобен для корреляции логов, метрик и алертов
- поддерживает LogQL — язык запросов, похожий на PromQL
- подходит для сценариев “логирование как метрики” 📈
Как установить Loki
Самый быстрый вариант для локального старта — Docker Compose.
Пример минимального запуска:
services:
loki:
image: grafana/loki:latest
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
После запуска Loki обычно доступен на: http://localhost:3100
Для сбора логов чаще всего ставят Promtail — агент, который читает файлы логов и отправляет их в Loki. В Kubernetes также популярен deployment через Helm chart.
Что важно в конфигурации
labels— метки, по которым Loki ищет потоки логов- не злоупотребляйте high cardinality: не добавляйте в labels user_id, request_id, timestamp
- выносите переменные значения в тело лога, а не в метки
- используйте стабильные labels:
job,app,namespace,pod⚙️
Базовые запросы LogQL
Выбор логов по меткам:
{job="nginx"}
Фильтр по строке:
{job="nginx"} |= "error"
Исключение строки:
{job="nginx"} != "healthcheck"
Поиск по regex:
{app="backend"} |~ "timeout|exception"
Извлечение JSON-полей:
{app="api"} | json
Фильтр по полю после парсинга:
{app="api"} | json | status_code=500
Логи как метрики
Самая сильная сторона Loki — превращение логов в числовые ряды для графиков и алертов.
Количество ошибок за 5 минут:
count_over_time({app="backend"} |= "error" [5m])
Сумма логов по потокам:
sum by (app) (count_over_time({namespace="prod"} |= "exception" [1m]))
Топ сервисов по числу ошибок:
topk(5, sum by (app) (count_over_time({namespace="prod"} |= "error" [5m])))
Когда Loki особенно хорош
- мониторинг приложений и контейнеров
- поиск ошибок по Kubernetes namespace/pod
- построение алертов по логам 🚨
- расследование инцидентов через Grafana
- объединение логов и метрик в одном интерфейсе
Итог
Loki — практичный выбор, если нужен быстрый, масштабируемый и экономичный лог-стек. Главное правило: проектируйте labels аккуратно. Тогда запросы будут быстрыми, а хранение — предсказуемым. Для DevOps, SRE и backend-команд это один из самых рациональных инструментов в observability-стеке 🔍
📌 Ниже — мягкая рекомендация: стоит посмотреть подборку каналов про IT, где регулярно публикуют практику по DevOps, мониторингу, Kubernetes и логированию.