Конфигурация драйвера журнала Docker

Docker

Docker включает в себя несколько механизмов ведения журналов, которые помогут вам получать информацию журнала из запущенных контейнеров или служб. Эти механизмы становятся управляемыми журналом. У каждого демона docker есть драйвер журнала по умолчанию, и каждый контейнер использует этот драйвер журнала по умолчанию, если вы не настроите другие драйверы журнала.

Настройте драйвер журнала по умолчанию для демона Docker.

Чтобы настроить демон docker в качестве драйвера журнала по умолчанию, используйте--log-driver=<VALUE>опции. Если драйвер имеет настраиваемые параметры, вы можете использовать один или несколько--log-opt<NAME>=<VALUE>сделать настройки. Если вы не укажете драйвер журнала, по умолчаниюjson-file. Так что такие вещи, какdocker inspectВыходное содержимое команды находится в формате json.

Давайте посмотрим, что представляет собой текущий драйвер журнала по умолчанию.

$ docker info |grep 'Logging Driver'

Logging Driver: json-file

Настройте драйвер журнала для контейнера.

При запуске контейнера мы можем настроить драйвер журнала для контейнера, отличный от демона docker. Если драйвер имеет настраиваемые параметры, вы можете использовать один или несколько--log-opt<NAME>=<VALUE>сделать настройки. Даже если контейнер использует драйвер журнала по умолчанию, доступны различные параметры конфигурации.

Посмотрите, что такое драйвер журнала текущего контейнера.

$ docker inspect -f { { .HostConfig.LogConfig.Type } } webtest1
json-file

Ниже перечислены поддерживаемые драйверы журналов.

Driver Description
none нет журнала
json-file запись логов в json-файл, по умолчанию
syslog Запись логов в syslog, syslog должен быть запущен на машине
journald Запись логов в journald, на машине должен быть запущен journald
gelf Запись журналов на конечные точки GELF, такие как Graylog или Logstash.
fluentd Закачать логи в fluentd, fluentd должен быть запущен на машине
awslogs Запись журналов в Amazon Cloudwatch
splunk Запись журналов для splunk с помощью сборщика событий HTTP
etwlogs Отслеживайте сообщения журнала как время Windows. Доступно только на платформе Windows
gcplogs Запись журналов в Google Cloud Platform
nats Публикация журналов на сервере NATS

лог-управляемые ограничения

  • docker logsкоманда не может быть использована дляjson-fileиjournaldдрайвер журнала

Examples

Используйте теги меток или переменные среды для настройки драйвера журнала.

Если ваш контейнер находится в Dockerfile или во время выполнения, укажите теги или переменные среды. Некоторые драйверы протоколирования могут использовать эти теги или переменные среды для управления поведением протоколирования. Если метка и переменная среды конфликтуют, переменная среды имеет приоритет.

Укажите свойства и параметры при запуске демона Docker. Например, запустите демон вручную, укажите драйвер json-файла и установите метку и две переменные среды следующим образом:

$ dockerd \
          --log-driver=json-file \
          --log-opt labels=production_status \
          --log-opt env=os,customer

Далее запускаем контейнер и указываем значения labels и env следующим образом:

$ docker run -tid --label production_status=testing -e os=ubuntu alpine sh

Наконец, давайте просмотрим содержимое журнала, записанное в локальный json-файл.

$ cat /var/lib/docker/containers/02bb794219c31704629bd0c84d39d56228b8163bc8d4925002c5164b678c521a/02bb794219c31704629bd0c84d39d56228b8163bc8d4925002c5164b678c521a-json.log
"os":"ubuntu","production_status":"test123"

Если драйвер журнала поддерживает это, он добавит дополнительные поля в вывод журнала.Для файлов json используется следующий вывод:

"attrs":{"production_status":"testing","os":"ubuntu"}

none

нет драйвера, отключает ведение журнала для демона докера или отключает ведение журнала для отдельных контейнеров во время выполнения

$ docker run -ti --log-driver none alpine sh

json-file

json-файл является драйвером журнала по умолчанию и возвращает выходные данные в формате json.

Драйвер журнала json-файла поддерживает следующие параметры:

Options Description Example value
max-size каждый размер журнала --log-opt максимальный размер = 10 м
max-file Сколько файлов журналов может существовать, допустимо только в том случае, если также установлен максимальный размер --log-opt максимальный файл = 3
labels Используется при запуске демона docker для добавления списка тегов, разделенных запятыми, к содержимому журнала. --log-opt labels=production_status,geo
env Используется при запуске демона docker для предоставления переменных среды, связанных с ведением журнала, для ведения журнала. --log-opt env=os,клиент
$ docker run -ti --log-opt max-size=10m --log-opt max-file=3 alpine sh

syslog

Для драйвера журнала системного журнала поддерживаются следующие параметры:

Option Description Example value
syslog-address Адрес внешнего сервера системного журнала, указанный в [tcp/udp/tcp+tls]://хост:порт, unix://путь или unixgram://путь, порт передачи по умолчанию 514 --log-opt syslog-address=tcp+tls://192.168.1.3:514, --log-opt syslog-address=///tmp/syslog.sock
syslog-facility Средство системного журнала для использования. Может быть номером или именем любого допустимого средства системного журнала. Может относиться кдокументация системного журнала --log-opt syslog-facility=демон
syslog-tls-ca-cert Абсолютный путь к доверенному сертификату, выданному ЦС. Игнорируется, если адресный протокол не tcp+tls --log-opt syslog-tls-ca-cert=/etc/ca-certificates/custom/ca.pem
syslog-tls-cert Абсолютный путь к файлу сертификата TLS. Игнорируется, если адресный протокол не tcp+tls --log-opt syslog-tls-cert=/etc/ca-certificates/custom/cert.pem
syslog-tls-key Абсолютный путь к файлу ключа TLS. Игнорируется, если адресный протокол не tcp+tls --log-opt syslog-tls-key=/etc/ca-certificates/custom/key.pem
syslog-tls-skip Если установлено значение true, пропустите проверку TLS при подключении к демону syslog. По умолчанию ложно. Игнорируется, если адресный протокол не tcp+tls --log-opt syslog-tls-skip-verify=true
tag Строка для добавления к APP-NAME в журналах системного журнала. По умолчанию Docker использует первые 12 символов идентификатора контейнера для маркировки сообщений журнала. --log-opt тег=почтовая программа
syslog-format Используемый формат сообщения системного журнала. Если он не указан, вместо указанного имени хоста используется собственный формат системного журнала UNIX. Например: укажите rfc3164 для формата, совместимого с RFC-3164, и rfc5424 для формата, совместимого с RFC-5424. --log-opt формат системного журнала = rfc5424micro
labels Используется при запуске демона docker для добавления списка тегов, разделенных запятыми, к содержимому журнала. --log-opt labels=production_status,geo
env Используется при запуске демона docker для предоставления переменных среды, связанных с ведением журнала, для ведения журнала. --log-opt env=os,клиент
$ docker run \
         --log-driver=syslog \
         --log-opt syslog-address=tcp://192.168.0.42:123 \
         --log-opt syslog-facility=daemon \
         alpine ash
$ docker run \
         --log-driver=syslog \
         --log-opt syslog-address=tcp+tls://192.168.0.42:123 \
         --log-opt syslog-tls-ca-cert=syslog-tls-ca-cert=/etc/ca-certificates/custom/ca.pem \
         --log-opt syslog-tls-cert=syslog-tls-ca-cert=/etc/ca-certificates/custom/cert.pem \
         --log-opt syslog-tls-key=syslog-tls-ca-cert=/etc/ca-certificates/custom/key.pem \
         alpine ash

journald

Драйвер журнала journald сохраняет идентификатор контейнера в поле CONTAINER_ID журнала. Дополнительную информацию о глянцевом журнале см.the journald logging driver

Option Description Example vaule
tag Шаблон для установки значения CONTAINER_TAG в журналах journald --log-opt тег=почтовая программа
labels Используется при запуске демона docker для добавления списка тегов, разделенных запятыми, к содержимому журнала. --log-opt labels=production_status, получить
env Используется при запуске демона docker для предоставления переменных среды, связанных с ведением журнала, для ведения журнала. --log-opt env=os,клиент
$ docker run \
         --log-driver=journald \
         alpine ash
Здесь я перечисляю несколько часто используемых, их гораздо больше, вы можете обратиться кофициальный сайт докера