initial: create stack, add readme

This commit is contained in:
2022-10-18 10:19:21 +07:00
commit 9d61a1ceeb
7 changed files with 215 additions and 0 deletions

69
readme.md Normal file
View File

@@ -0,0 +1,69 @@
## Grafana + loki logging stack
Стек docker-compose для упрощённого сбора и просмотра логов контейнеров с grafana loki.
### Installing
1. Скопировать [.env.example](/.env.example) в `.env`
#### With promtail
1. Добавить новый лейбл к контейнеру, чьи логи необходимо отсылать в loki
Например, достаточно просто добавить новый лейбл в `docker-compose`-файл искомого стека:
```yaml
services:
my-service:
labels:
- "loki.log=true"
```
2. Запустить весь стек `docker-compose`
```shell
docker compose up -d
```
#### With docker plugin
1. Установить [лог-драйвер grafana loki для docker](https://grafana.com/docs/loki/latest/clients/docker-driver/)
```shell
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
```
По факту, данный драйвер работает аналогично стандартному драйверу `json-file`, который позволяет просматривать логи стандартной командой `docker logs`, но при этом дополнительно пытается отправить логи в инстанс `loki`.
2. Активировать лог-драйвер для контейнера
К примеру, можно определить данный конфиг в искомом `docker-compose`-стеке:
```yaml
x-loki-log-config: &loki-log-config
logging:
driver: loki
options:
loki-url: "http://loki.docker.localhost/loki/api/v1/push"
loki-retries: 5
loki-batch-size: 400
max-size: "50m"
max-file: "10"
```
а затем просто подключить к конкретному контейнеру:
```yaml
services:
my-service:
<<: *loki-log-config
```
3. Убрать профиль `promtail` из значения `COMPOSE_PROFILES` в файле [.env](/.env)
4. Запустить стек `grafana` + `loki`
```shell
docker compose up -d
```
### Difference between driver and promtail
Использование драйвера - [рекомендованный способ доставки логов в loki](https://grafana.com/docs/loki/latest/clients/promtail/configuration/#example-docker-config). К тому же, он имеет очень много предопределённых лейблов для фильтрации контейнеров в `grafana`. Но его необходимо вручную ставить на всех машинах, на которых необходимо настроить подобный сбор логов.