Skip to content

Как запустить 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

  1. Зайди в Grafana.
  2. Добавь источник данных: Loki.
  3. URL: http://<ip-сервера>:3100 (если Grafana вне Docker — указывай IP хоста).
  4. Нажми "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 — он чаще всего падает из-за прав на чтение файлов