Настройка логирования
В процессе работы 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
Параметр | Описание |
---|---|
touch-reload |
Позволяет выполнить автоматический перезапуск uWSGI при изменении указанного файла |
module |
Позволяет указать имя файла, который отвечает за запуск бэкенд-сервера на веб-сервере uWSGI |
master |
Позволяет запустить uWSGI в режиме |
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:
-
Создайте директорию для хранения нового файла adcm.cfg.
Пример:
$ sudo mkdir /opt/myconf
-
С помощью редактора
vi
илиvim
создайте новый файл конфигурации с указанием необходимых параметров логирования:$ sudo vi adcm.cfg
-
Для владельца файла установите права на чтение, запись и выполнение файла:
$ sudo chmod u=rwx /opt/myconf/adcm.cfg
-
Запустите новый 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 .
|