Grafana Loki представляет собой решение для агрегации, анализа и долгосрочного хранения логов. Непосредственно за обработку и хранение отвечает компонент Loki, тогда как Grafana — это компания-вендор, чьё название совпадает с её основным продуктом — панелью визуализации метрик. Таким образом, связка состоит из двух частей: сервиса хранения логов (Loki) и интерфейса визуализации (Grafana).
Настройка Docker #
curl https://get.docker.com | bash -
Настройка Loki #
mkdir /opt/docker/loki && mkdir /opt/docker/loki/data && cd /opt/docker/loki
chown -R 10001:10001 /opt/docker/loki/data
chmod 755 /opt/docker/loki/data
nano docker-compose.yaml
services:
loki:
container_name: loki
image: docker.io/grafana/loki:3.6
command: "-config.file=/etc/loki/config.yaml"
ports:
- "3100:3100"
volumes:
- ./config/config.yaml:/etc/loki/config.yaml:ro
- /opt/docker/loki/data:/loki:rw
restart: unless-stopped
Конфигурация Loki:
mkdir /opt/docker/loki/config && cd /opt/docker/loki/config
nano config.yaml
---
auth_enabled: false
server:
http_listen_port: 3100
common:
instance_addr: 127.0.0.1
path_prefix: /loki
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory
schema_config:
configs:
- from: 2020-10-24
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
compactor:
working_directory: /loki/compactor
retention_enabled: true
delete_request_store: filesystem
compaction_interval: 10m
retention_delete_delay: 2h
retention_delete_worker_count: 150
limits_config:
retention_period: 720h
ingestion_rate_mb: 4
ingestion_burst_size_mb: 6
max_streams_per_user: 10000
max_line_size: 256000
ruler:
alertmanager_url: http://localhost:9093
Запуск Loki:
docker compose up -d
docker compose ps
docker compose logs
Проверка Loki:
curl http://192.168.20.74:3100
404 page not found
Настройка Grafana #
mkdir /opt/docker/grafana && cd /opt/docker/grafana
nano docker-compose.yaml
services:
loki:
container_name: loki
image: docker.io/grafana/loki:3.6
command: "-config.file=/etc/loki/config.yaml"
ports:
- "3100:3100"
volumes:
- ./config/config.yaml:/etc/loki/config.yaml:ro
- data_loki:/loki:rw
restart: unless-stopped
volumes:
data_loki:
driver: local
Запуск Grafana:
docker compose up -d
docker compose ps
docker compose logs
Проверить статус Docker-контейнеров:
root@loki:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6b527411441 grafana/grafana-oss:12.3.2 "/run.sh" 5 hours ago Up 4 hours 0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp grafana
b9d571097b36 grafana/loki:3.6 "/usr/bin/loki -conf…" 5 hours ago Up 4 hours 0.0.0.0:3100->3100/tcp, [::]:3100->3100/tcp loki
Проверка Grafana (admin\admin):
http://192.168.20.74:3000
Для начала работы необходимо настроить источник данных Loki. Для этого в интерфейсе следует перейти в раздел Connections ⇨ Data sources, нажать Add data source и выбрать Loki. В поле URL указывается адрес сервера (например, http://192.168.20.74:3100). Прочие настройки остаются без изменений. После заполнения необходимо нажать кнопку Save & Test в нижней части страницы. При корректной конфигурации ошибки отображаться не будут.