Как настроить мониторинг логов приложения в реальном времени с помощью связки Loki и Grafana?

Связка Loki + Grafana — это мощный и легковесный стек для сбора, хранения и визуализации логов приложений в реальном времени. В отличие от ELK, Loki не индексирует содержимое логов, а только метки (labels), что делает его экономичным по ресурсам.

## 1. Архитектура стека

Стек состоит из трёх компонентов:
— **Promtail** — агент, который собирает логи с хостов и отправляет их в Loki.
— **Loki** — сервер хранения и агрегации логов.
— **Grafana** — интерфейс для визуализации и алертинга.

## 2. Установка через Docker Compose

Создайте файл `docker-compose.yml`:

yaml
version: ‘3’
services:
loki:
image: grafana/loki:2.9.0
ports:
— «3100:3100»
command: -config.file=/etc/loki/local-config.yaml

promtail:
image: grafana/promtail:2.9.0
volumes:
— /var/log:/var/log
— ./promtail-config.yaml:/etc/promtail/config.yml
command: -config.file=/etc/promtail/config.yml

grafana:
image: grafana/grafana:latest
ports:
— «3000:3000″

Запустите: `docker-compose up -d`

## 3. Настройка Promtail

Создайте `promtail-config.yaml`:

yaml
server:
http_listen_port: 9080

positions:
filename: /tmp/positions.yaml

clients:
— url: http://loki:3100/loki/api/v1/push

scrape_configs:
— job_name: app-logs
static_configs:
— targets:
— localhost
labels:
job: myapp
__path__: /var/log/myapp/*.log

Promtail будет отслеживать файлы логов и отправлять их в Loki с меткой `job=myapp`.

## 4. Подключение Loki к Grafana

1. Откройте Grafana по адресу `http://localhost:3000` (логин/пароль: admin/admin).
2. Перейдите в **Configuration → Data Sources → Add data source**.
3. Выберите **Loki**.
4. Укажите URL: `http://loki:3100`.
5. Нажмите **Save & Test**.

## 5. Просмотр логов в реальном времени

Перейдите в раздел **Explore**, выберите источник данных Loki и введите запрос на языке LogQL:

logql
{job=»myapp»} |= «ERROR»

Это покажет все строки логов с меткой `myapp`, содержащие слово ERROR. Для просмотра в реальном времени включите режим **Live** в правом верхнем углу.

## 6. Создание дашборда

Добавьте панели на дашборд:
— **Logs panel** — отображает поток логов.
— **Time series** — количество ошибок за период: `count_over_time({job=»myapp»} |= «ERROR» [5m])`.

## 7. Настройка алертов

В Grafana 9+ можно создать Alert Rule прямо на основе LogQL-запроса. Укажите условие, например, если количество ошибок за минуту превышает 10 — отправить уведомление в Slack или Telegram через Contact Points.

## Итог

С помощью Loki и Grafana вы получаете полноценную систему мониторинга логов с минимальными ресурсными затратами, удобным поиском по меткам и мощными возможностями визуализации.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.