Сбор логов docker контейнеров для Grafana
Сбор логов с docker контейнеров выполняется с использованием Alloy и Dockerproxy с дальнейшей обработкой и передачей в Loki.
Настройка сбора логов через Alloy
Общий файл конфигурации:
Документация:
- discovery.docker | Grafana Alloy documentation
- loki.relabel | Grafana Alloy documentation
- loki.write | Grafana Alloy documentation
Фильтрация и обработка логов
Установка метки имени контейнера
Для задания в метках имени контейнера необходим блок в секции loki.relabe
:
rule {
source_labels = ["__meta_docker_container_name"]
regex = "/(.*)"
target_label = "container_name"
}
Отбор по имени контейнера
Для исключения контейнера по имени необходим блок в секции loki.relabe
:
rule {
source_labels = ["__meta_docker_container_name"]
regex = "/(<name1>|<name2>)"
action = "drop"
}
где <name1>
- имя исключаемого контейнера
Отбор по имени docker compose стека
Для исключения контейнера по имени необходим блок в секции loki.relabe
:
rule {
source_labels = ["__meta_docker_container_label_com_docker_compose_project"]
regex = "(<name1>|<name2>)"
action = "drop"
}
где <name1>
- имя исключаемого контейнера
Настройка хостов docker
Для сбора данных с хостов используется Dockerproxy для работы необходимо в environment в docker compose обязательно включить параметр NETWORKS
:
...
environment:
- INFO=1 # Для работы Crowdsek
- CONTAINERS=1
- SERVICES=1
- TASKS=1
- POST=0 # Disallow any POST operations (effectively read-only)
- NETWORKS=1 # Alloy
...
На этом все настройки на хосте для мониторинга закончены.
Панель мониторинга Grafana
Мониторинг логов добавлен в существующую панель.
Шаблон панели:
![[Docker Containers and Logs.json]]