Логирование
Просмотр логов
После запуска контейнера доступен просмотр логов командой:
docker logs -f {container_name}Для просмотра последних n строк лога:
docker logs -f --tail n {container_name}Для просмотра логов за определенный промежуток времени:
docker logs -f {container_name} --since 2020-03-30 --until 2020-04-01При остановке и удалении контейнера Docker по умолчанию удаляет его логи.
Хранение логов
При необходимости хранения укажите конфигурацию logging в файле запуска docker-compose.
flows_engine:
image: devcubesolutions/flows_engine:2.0.0
...
logging:
driver: journald
options:
tag: flows_engineТакая конфигурация позволит смотреть логи с фильтрацией по тегам
journalctl -u docker CONTAINER_NAME=mycontainer_name
journalctl -u docker CONTAINER_TAG=mytagПри запуске в режиме кластера рекомендуется собирать и агрегировать логи с помощью ELK-стека.
Формат и ограничение файлов логирования
По умолчанию журналы контейнеров хранятся в виде json-файлов. Вы можете изменить этот формат по своему желанию. Доступные форматы:
| Драйвер | Описание |
|---|---|
| none | Журналы для контейнера недоступны и docker logsне возвращают никаких выходных данных. |
| local | Журналы хранятся в пользовательском формате, предназначенном для минимальных накладных расходов. Рекомендуется использовать этот формат для локального хранения журналов (если нет задачи передавать информацию в системы сбора журналов) |
| json-file | Журналы имеют формат JSON. Драйвер ведения журнала по умолчанию для Docker. |
| syslog | Записывает сообщения регистрации в syslogобъект. Демон syslogдолжен быть запущен на хост-компьютере. |
| journald | Записывает сообщения журнала в journald. Демон journaldдолжен быть запущен на хост-компьютере. |
| gelf | Записывает сообщения журнала в конечную точку расширенного формата журнала Graylog (GELF), например Graylog или Logstash. |
| fluentd | Записывает сообщения журнала в fluentd(прямой ввод). Демон fluentdдолжен быть запущен на хост-компьютере. |
| awslogs | Записывает сообщения журнала в журналы Amazon CloudWatch. |
| splunk | Записывает сообщения журнала в splunkсборщик событий HTTP. |
| etwlogs | Записывает сообщения журнала как события трассировки событий для Windows (ETW). Доступно только на платформах Windows. |
| gcplogs | Записывает сообщения журнала в журнал Google Cloud Platform (GCP). |
| logentries | Записывает сообщения журнала в Rapid7 Logentries. |
ℹ️
При использовании Docker Engine 19.03 или старше эта docker logsкоманда работает только для драйверов local, json-fileи ведения журнала. journaldВ Docker 20.10 и более поздних версиях представлено «двойное ведение
журнала», в котором используется локальный буфер, позволяющий
использоватьdocker logsкоманду для любого драйвера ведения журнала.
Пример настройки syslog логирования:
logging:
driver: syslog
options:
syslog-address: "tcp://192.168.0.42:123"Ограничение максимального размера файлов
Часто контейнеры потребляют большое количество места на диске, что приводит к сбоям в работе ПО. Чтобы избежать такой проблемы рекомендуется выставить ограничение на количество файлов логирования. Для этого используются параметры драйвера:
logging:
options:
max-size: "10m"
max-file: "3"Данная настройка ограничит максимальное количество файлов журнала для контейнера = 3, и размер каждого файла не более 10 мегабайт.
Более подробную информацию о выводе журналов контейнеров вы можете получить в документации Docker.
Теги логов
logging:
driver: json-file
options:
tag: "accelera-backoffice"Вывод логов в формате JSON
ℹ️
Доступно начиная с версии 2.4.5 для основных образов Accelerа, Segments - 2.4.9, Etl Worker - 1.1.0, Kafka adapter - 2.3.5, SQL adapter - 2.3.2
Для вывода лога в формате JSON укажите переменную среды LOG_FORMAT со значением json.
Лог выводится в формате
{ datetime: 'DD-MM-YYYY HH:mm:ss.SSS', level: 'INFO', message: 'Example' }