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
Здесь я перечисляю несколько часто используемых, их гораздо больше, вы можете обратиться кофициальный сайт докера