Документация Accelera

Логирование

Просмотр логов

После запуска контейнера доступен просмотр логов командой:

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' }

На этой странице