Loki: логирование как метрики — установка и запросы

Мы просто и по делу рассказываем про ИИ-инструменты для работы: сравнения, пошаговые гайды, бесплатные альтернативы и реальные сценарии применения. Помогаем выбрать между ChatGPT, Gemini, Claude, локальными моделями и десятками узкоспециализированных сервисов — от дизайна и HR до аналитики и SEO. Меньше хайпа, больше практики и экономии времени каждый день.

lokiLogQLGrafana

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 и логированию.

🗣 Подборки каналов
🧠 Каталог ботов и приложений
🗺 Навигация

Читайте так же