Как запустить Loki? Где взять конфиг?
🔧 1. Установка Loki
Варианты установки:
- Через Docker
- Через Helm (для Kubernetes)
- С помощью бинарника
- Через systemd (на сервере)
Мы рассмотрим самый простой способ — через Docker.
🐳 2. Запуск Loki через Docker
Шаг 1: Создай директорию для конфига
mkdir -p ~/loki && cd ~/loki
Шаг 2: Создай файл loki-config.yaml
# loki-config.yaml
auth_enabled: false
server:
http_listen_port: 3100
ingester:
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 5m
chunk_retain_period: 30s
max_transfer_retries: 0
schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: /tmp/loki/boltdb-shipper-active
cache_location: /tmp/loki/boltdb-shipper-cache
cache_ttl: 24h
filesystem:
directory: /tmp/loki/chunks
limits_config:
reject_old_samples: true
reject_old_samples_max_age: 168h
chunk_store_config:
max_look_back_period: 0s
table_manager:
retention_deletes_enabled: false
retention_period: 0s
⚠️ Этот конфиг — минимальный рабочий пример для тестирования. Для продакшена нужна более сложная настройка (например, с S3/GCS).
Шаг 3: Запусти Loki через Docker
docker run -d \
--name=loki \
-p 3100:3100 \
-v $(pwd)/loki-config.yaml:/etc/loki/loki-config.yaml \
grafana/loki:latest \
-config.file=/etc/loki/loki-config.yaml
Проверь, что контейнер запущен:
bash docker logs loki
Если видишь сообщение о запуске сервера — всё ок.
📥 3. Отправка логов: нужен Promtail
Loki сам по себе не читает логи с диска — он только принимает их. Для отправки нужен Promtail.
Установка Promtail (пример через Docker)
Создай promtail-config.yaml
:
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*.log
Обрати внимание:
url: http://loki:3100
— значит, Promtail должен быть в той же сети, что и Loki.
Запуск Promtail:
docker run -d \
--name=promtail \
--network=host \
-v $(pwd)/promtail-config.yaml:/etc/promtail/config.yml \
-v /var/log:/var/log \
grafana/promtail:latest \
-config.file=/etc/promtail/config.yml
Или, если используешь
--network=bridge
, убедись, что оба контейнера в одной пользовательской сети.
📊 4. Просмотр логов в Grafana
- Зайди в Grafana.
- Добавь источник данных: Loki.
- URL:
http://<ip-сервера>:3100
(если Grafana вне Docker — указывай IP хоста). - Нажми "Save & Test".
Теперь можешь строить запросы в Explore, например:
{job="varlogs"}
📁 Где ещё взять конфиг?
Официальные примеры конфигов: - https://grafana.com/docs/loki/latest/configuration/
Для продакшена рекомендуют использовать: - S3, GCS или MinIO как бэкенд хранилища - Consul или etcd для кольца (ring) - Разделение компонентов: distributor, ingester, querier и т.д.
✅ Проверка работы
Открой в браузере:
http://localhost:3100/ready
→ Должно быть ready
.
Или:
http://localhost:3100/metrics
→ Метрики Loki.
🛠 Советы
- Логи Loki пишутся в stdout (в Docker ты их видишь через
docker logs
) - Убедись, что порт 3100 свободен
- Если используешь SELinux/AppArmor — могут быть проблемы с доступом к
/var/log
- Для отладки проверяй логи Promtail — он чаще всего падает из-за прав на чтение файлов