Настройка логирования

В процессе работы ADCM создаются логи разных типов, которые выгружаются в виде файлов, расположенных в директории /<data_volume>/log/. Ее файлы и вложенные директории содержат следующую информацию:

  • adcm.log и adcm_debug.log — записи о событиях и ошибках, возникающих при работе ADCM, соответственно;

  • nginx/ — логи Nginx;

  • audit.log — записи о событиях аудита;

  • cron_task.log — сообщения о фоновых задачах, которые выполняются с помощью планировщика (например, очистка данных, связанных с конфигурацией таких объектов, как кластер или сервис);

  • task_runner.err — сообщения об ошибках в случае неудачно запущенных действий (actions);

  • ldap.log — сообщения об аутентификации в ADCM через LDAP;

  • status.log — записи о событиях, возникающих при работе статус-сервера;

  • wsgi.log — записи о событиях, возникающих при работе uWSGI.

Для указанных лог-файлов доступны следующие возможности настройки логирования, которые позволяют управлять логированием и записывать только требуемые события в лог-файлы:

  • Настройка уровня логирования.

  • Настройка параметров логирования uWSGI.

  • Настройка ротации логов.

Настройка уровня логирования может быть выполнена для определенного типа лога. Значение уровня логирования, заданное для одного типа лога, не влияет на остальные типы и передается во время запуска ADCM.

Уровень логирования

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

  • STATUS_LOG_LEVEL — уровень логирования для статус-сервера;

  • ADCM_LOG_LEVEL — уровень логирования для бэкенд-сервера;

  • AUDIT_LOG_LEVEL — уровень логирования для audit.log;

  • LDAP_LOG_LEVEL — уровень логирования для ldap.log;

  • BACKGROUND_TASKS_LOG_LEVEL — уровень логирования для фоновых процессов;

  • TASK_RUNNER_LOG_LEVEL — уровень логирования для task_runner.err.

Пример команды для запуска Docker-контейнера с настройкой уровня логирования для status.log:

$ sudo docker run -d --name adcm -p 8000:8000 -v /opt/adcm:/adcm/data -e STATUS_LOG_LEVEL= "ERROR" hub.arenadata.io/adcm/adcm:<version>

где <version> — это версия Docker-образа в одном из следующих форматов:

  • <major>.<minor>.<patch> — если необходим конкретный патч ADCM. Пример: 2.0.0.

  • <major>.<minor> — если необходим последний патч в рамках выбранной версии ADCM. Пример: 2.0.

Более подробная информация о специальных переменных окружения и возможных значениях приведена в разделе Online-установка с использованием Docker-образа.

Для всех типов логов поддерживается переменная окружения LOG_LEVEL с целью обеспечения обратной совместимости.

Параметры логирования uWSGI

Основным способом управления логированием uWSGI является задание соответствующих параметров в файле конфигурации adcm.cfg, который расположен внутри Docker-контейнера. Файл содержит секцию [uwsgi] и предназначен для предоставления конфигурации веб-серверу uWSGI.

Более подробная информация о форматах и способах загрузки файла конфигурации, поддерживаемых uWSGI, приведена в документации uWSGI.

Структура файла adcm.cfg представлена ниже.

[uwsgi]
touch-reload = /etc/adcm/adcm.cfg
module = adcm.wsgi
master = True
processes = 4
harakiri = 6000
pidfile = /run/uwsgi.pid
socket = /run/adcm.sock
chmod-socket = 777
max-requests = 5000
log-4xx = true
log-5xx = true
disable-logging = true
logto = /adcm/data/log/wsgi.log
log-maxsize = 2000000
Параметры файла adcm.cfg
Параметр Описание

touch-reload

Позволяет выполнить автоматический перезапуск uWSGI при изменении указанного файла

module

Позволяет указать имя файла, который отвечает за запуск бэкенд-сервера на веб-сервере uWSGI

master

Позволяет запустить uWSGI в режиме master

processes

Определяет максимально допустимое количество процессов, то есть экземпляров бэкенд-сервера

harakiri

Определяет максимальное количество времени в секундах, отведенное процессу для выполнения задачи, по истечении которого процесс прерывается и запускается повторно

pidfile

Позволяет указать путь к файлу для записи идентификатора процесса (PID). Параметр полезен в управлении запуском процессов

socket

Позволяет указать путь к файлу сокета, через который взаимодействуют uWSGI и Nginx

chmod-socket

Позволяет указать права доступа к файлу сокета. В adcm.cfg файл сокета доступен для чтения, записи и выполнения для всех категорий пользователей

max-requests

Позволяет выполнить перезапуск процессов после обработки указанного количества запросов. Установка данного параметра способствует борьбе с утечками памяти

log-4xx

Позволяет включить запись в лог-файлы ответов с кодами состояния HTTP 4xx

log-5xx

Позволяет включить запись в лог-файлы ответов с кодами состояния HTTP 5xx

disable-logging

Позволяет отключить встроенное (стандартное) ведение логов uWSGI

logto

Позволяет указать путь к лог-файлу

log-maxsize

Определяет максимальный размер лог-файла, при достижении которого выполняется ротация файла

Чтобы указать пользовательские параметры логирования uWSGI:

  1. Создайте директорию для хранения нового файла adcm.cfg.

    Пример:

    $ sudo mkdir /opt/myconf
  2. С помощью редактора vi или vim создайте новый файл конфигурации с указанием необходимых параметров логирования:

    $ sudo vi adcm.cfg
  3. Для владельца файла установите права на чтение, запись и выполнение файла:

    $ sudo chmod u=rwx /opt/myconf/adcm.cfg
  4. Запустите новый Docker-контейнер adcm с указанием пути к созданному файлу:

    $ sudo docker run -d adcm -p 8000:8000 -v /opt/adcm:/adcm/data -v /<file_path>/adcm.cfg/:/etc/adcm/adcm.cfg hub.arenadata.io/adcm/adcm:<version>

    где file_path — абсолютный путь к созданному файлу конфигурации adcm.cfg.

Ротация логов

По умолчанию в ADCM нет автоматической ротации логов, поэтому для решения данной проблемы используется утилита logrotate, которая выполняет архивацию лог-файлов при превышении заданного максимального размера файла.

Более подробная информация о работе с logrotate приведена в статье Использование logrotate для настройки ротации логов.

Утилита logrotate применяется для всех перечисленных выше лог-файлов, за исключением wsgi.log, так как данный лог-файл подвергается автоматической ротации при достижении максимального размера, указанного в файле adcm.cfg.

ПРИМЕЧАНИЕ
Для указания требуемого имени лог-файла после ротации в файле adcm.cfg используйте параметр log-backupname, например log-backupname = /opt/adcm/log/uwsgi.log.1.
Нашли ошибку? Выделите текст и нажмите Ctrl+Enter чтобы сообщить о ней