Для отправки логов с докера в Graylog используется драйвер GELF, который docker поддерживает из коробки.
Gelf – это драйвер логирования который понимают множество современных утилит, пример Graylog, Logstash, и Fluentd живет он на 12201 порту. Нам остается только настроить его драйвером по умолчанию для, сделать это можно добавив необходимые ключи и значения в файл daemon.json.
Файл лежит в следующих директориях:
– linux: /etc/docker/daemon.json
– macOS: ~/.docker/daemon.json
Стоить помнить, что перед тем как отправлять логи, нужно создать Input GELF UDP в настройках Graylog.
Так как Input на Graylog у меня уже настроен, перейду к тестированию отправки логов.
Что ж, открываем файл ~/.docker/daemon.json удобным Вам редактором и добавляем ключ log-griver and log-opts и их значения:
{
"log-driver": "gelf",
"log-opts": {
"gelf-address": "udp://GRAYLOG_SERVER_IP:12201"
}
}
Чтоб изменения применились нужно перезапустить docker.
После перезапуска попробуем отправить простой вывод Hello World в Graylog, для этого запустим контейнер с ключами –log-driver и –log-opt:
❯ docker run \
--log-driver gelf --log-opt gelf-address=udp://*********.example.com:12201 \
alpine echo hello world from local
hello world from local
Переходим в UI Graylog, в поиске пишем Hello и смотрим результат:
отлично, все работает.
Если говорить про docker-compose, то здесь тоже все легко и элементарно. Для примера опишем простой compose файл с именем grafana-compose.yml с добавлением параметров logging:
version"3"
services
grafana
image grafana/grafana-oss8.2.0
ports
3000:3000
logging
driver gelf
options
gelf-address"udp://*******.example.com:12201"
tag"grafana-compose log"
после чего запустим его:
❯ docker-compose -f grafana-compose.yml up
[+] Running 1/0
⠿ Container docker-compose-grafana-1 Created 0.0s
Attaching to docker-compose-grafana-1
**********
Снова переходим в UI Graylog, вбиваем в поиск grafana-compose, жмем Enter:
Логи там где им и место, работает.