Система мониторинга логов Docker контейнеров Dozzle
Для централизованного сбора, управления и аналитики логов существуют серьезные решения, целые стеки, такие как PLG (Promtail, Loki, Grafana) или EFK / ELK (Elasticsearch, Kibana, Fluentd / Logstash). Однако, всегда стоит вопрос в целесообразности их применения, а также действительная необходимость в такой обширной функциональности в относительно небольших проектах.
💻 Мне зачастую не хватало простого и быстрого решения для элементарного просмотра логов с нескольких совместно трудящихся сервисов. И такое решение нашлось - легковесная self-hosted система мониторинга логов из Docker контейнеров - dozzle.
Одиночный контейнер с доступом к docker.sock и все логи начинают сыпаться в кучу в реальном времени с удобным представлением в едином окне веб приложения.
📌 Стоит отметить, что возможности собирать логи из файлов нет - только из sysout syserr потоков контейнеров по аналогии с командой docker logs.
📌 Хранилища логов тоже нет, поэтому проанализировать полную историю не получится.
🔸 Готовим пользователя
Генерируем параметры доступа для базовой аутентификации в dozzle
1
docker run -it --rm amir20/dozzle generate testuser --password testpassword --email test@test.test --name "Test User" > data/users.yml
Получаем в выходном файле структуру вида
1
2
3
4
5
6
users:
testuser:
email: test@test.test
name: Test User
password: $2a$11$GstVlSugO7SmT0EV/RkU2ubm2qhXfuC1lWGd8FYIrV/Lg2cjKnro.
filter: ""
где password - bcrypt hash от пароля.
🔸 Заполняем compose
Итоговый compose будет выглядеть следующим образом
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
services:
dozzle:
image: amir20/dozzle:latest
container_name: dozzle
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${HOME}/services/dozzle/data:/data
ports:
- 8080:8080
environment:
DOZZLE_AUTH_PROVIDER: simple
DOZZLE_ENABLE_ACTIONS: true
DOZZLE_NO_ANALYTICS: true
healthcheck:
test: ["CMD", "/dozzle", "healthcheck"]
interval: 3s
timeout: 30s
retries: 5
start_period: 30s
${HOME}/services/dozzle/data - каталог с созданным ранее users.yml
DOZZLE_AUTH_PROVIDER: simple - базовая аутентификация
DOZZLE_ENABLE_ACTIONS: true - включаем кнопки управления контейнерами (старт, стоп, перезапуск) в ui
DOZZLE_NO_ANALYTICS: true - отключаем сбор и отправку аналитики, потому что
1
2
Dozzle collects anonymous user configurations using a simple beacon written in Go.
Dozzle sends anonymous data to DigitalOcean, where it is written to a flat file for processing.
🔸 Запускаем
1
docker compose up -d
Идем в веб приложение на 8080 и наблюдаем статистику использования ресурсов, ленту логов с поиском и даже сплит-окна.



