Системный журнал#
Доступ к системному журналу#
Данную операцию могут выполнять пользователи и администраторы, имеющие соответствующие права в системе оркестрации контейнеризированных приложений.
IDMX записывает сообщения системного журнала одним из двух способов:
В файлы на сервере.
В этом режиме IDMX (компонент
idmx-engine) создает файлы журнала в директории/opt/midpoint/var/log/контейнера. Основные файлы для работы это:idm-engine.log— основной файл системного журнала. В него вносятся все логи работы IDMX.midpoint.out— журнал для инициализационного логирования IDMX. В этот файл вносятся только те логи, которые выдаются до запуска основой подсистемы логирования IDMX. Это логи при запуске и инициализации IDMX, а также при завершении работы и остановке. Как правило, данный журнал не используется при разборе ошибок во время работы IDMX, однако может быть полезен, если возникают какие-либо ошибки во время запуска IDMX. Подробнее смотрите в разделе Конфигурирование инициализационного логирования.midpoint.outможет отсутствовать, если для инициализационного логирования и системного логирования используется внешнийlogback.xmlи отключено использование конфигурации логирования из системной БД (репозитория).
В системный журнал по протоколу syslog. Подробнее смотрите в разделе Запись в Syslog
По умолчанию происходит ротация файлов журналов. Когда основной файл начинает занимать много слишком места на диске, он переименовывается, и создается новый. Самые старые файлы в директории регулярно удаляются. Параметры ротации журналов можно сконфигурировать в logback.xml.
IDMX имеет следующую схему именования файлов журнала по умолчанию:
Основной файл журнала именуется
idm-engine.log. При переполнении (по умолчанию - 100МБ), файл переименовывается по шаблонуidm-engine-<дата в формате гггг-мм-дд>.<порядковый номер>.log. IDMX будет хранить не больше 10 резервных файлов, и общий объем журнала не может превышать 200МБ (по умолчанию).Вспомогательный файл журнала, содержащий записи в формате JSON, именуется
idm-engine.json.log. При переполнении (по умолчанию - 100МБ), файл переименовывается по шаблонуidm-engine-json-<дата в формате гггг-мм-дд>.<порядковый номер>.log. IDMX будет хранить не больше 10 резервных файлов, и общий объем журнала не может превышать 200МБ (по умолчанию).
Настройка системного журнала#
Настройки логирования можно изменить при установке IDMX, либо в ConfigMap уже развернутого экземпляра. Подробнее смотрите в Руководстве по установке, раздел Установка через Installer. подраздел Миграция конфигурационных файлов.
Изменить схему именования и политику смены файлов журнала можно в конфигурации логирования.
Конфигурация логирования выполняется в logback.xml, вынесенном в ConfigMap компонента idmx-engine. Для внесения изменений в конфигурацию:
Откройте ConfigMap
logback-configв интерфейсе системы оркестрации контейнеризированных приложений, в которой развернут экземпляр IDMX.Внесите изменения в
logback.xmlи сохраните их. В файле используется стандартный синтаксис библиотеки Logback.Перезапустите IDMX, чтобы изменения применились.
Основные события#
Имя logger |
Применение |
Рекомендуемый уровень логирования |
Описание |
Подробность сообщения |
|---|---|---|---|---|
|
Отслеживание маппингов |
TRACE |
Верхнеуровневое описание исполнения каждого маппинга |
Средняя |
|
Отслеживание выражений |
TRACE |
Описывает исполнение выражений. Более низкоуровневый лог, с дампами входных и выходных данных выражения |
Высокая |
|
Отслеживание скриптовых выражений |
TRACE |
Детальное описание исполнения скриптовых выражений (Groovy, JavaScript, и других) |
Очень высокая |
|
Отслеживание проекций |
TRACE |
Описывает этапы вычисления проекций. Много деталей, особенно на уровне TRACE. Logger чаще всего используется при разрешении проблем с маппингами при синхронизации, а также при проблемах при взаимодействии маппингов |
Высокая |
|
Детальное отслеживание проекций |
TRACE |
Записывает этапы вычисления проекций, детально расписывая каждый шаг. Чрезвычайно много деталей, особенно на уровне TRACE. Как правило требуется в редких случаях, когда нужно разобрать ошибки в работе IDM |
Чрезвычайно высокая |
|
Информация о системе |
INFO |
Предоставляет общую информацию о работе IDMX, включая источники событий, верхнеуровневые результаты вычисления проекций и их результаты (изменения в учетных записях). Рекомендуется для решения основных проблем в работе IDM |
Средняя |
|
Отслеживание работы IDMX |
TRACE |
Описывает шаги работы IDMX по основным этапам — проекции, исполнение, алгоритм работы. Включает себя дампы контекста между крупными шагами |
Высокая |
|
Отслеживание исполнителя изменений |
TRACE |
Записывает все изменения, выполняемые IDMX — учетные записи IDM и других ресурсов, другие объекты системы |
Средняя |
|
Отслеживание коннекторов |
TRACE |
Записывает исполнение всех вызванных операций на всех коннекторах и их результаты |
Высокая |
Loggers категории com.evolveum.midpoint поддерживают все уровни логирования (OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, ALL). При изменении уровня логирования с рекомендуемого будет увеличиваться или уменьшаться количество и детализация сообщений, в зависимости от выбранного уровня.
Обратите внимание
Использование уровней логирования DEBUG, TRACE и ALL не рекомендуется в промышленных инсталляциях.
Конфигурирование инициализационного логирования#
Некоторые события, происходящие при запуске IDMX, логируются до инициализации основного механизма логирования, поэтому для их записи в журнал используется встроенная конфигурация логирования IDMX — конфигурация logback.xml, которая хранится в idmx-engine и используется до того, как инициализируется подключение к системной БД для получения основной конфигурации.
IDMX имеет базовую конфигурацию для записи таких событий, однако она может быть недостаточна для анализа проблем, возникающих при низкоуровневой инициализации IDMX, инициализации БД и других подобных ситуациях. Изменить эту конфигурацию можно добавлением logger com.evolveum.midpoint.init.StartupConfiguration в logback.xml в ConfigMap.
Пример logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT"/>
</root>
<logger name="com.evolveum.midpoint" level="DEBUG"/>
<logger name="com.evolveum.midpoint.init.StartupConfiguration" level="TRACE"/>
</configuration>
Игнорирование системной конфигурации логирования#
В некоторых случаях может возникнуть необходимость в получении более подробных логов, которые записываются после инициализации системной БД. В таких случаях можно использовать опцию конфигурации IDMX, которая позволит игнорировать основную конфигурацию.
При включении этой опции IDMX будет продолжать использовать базовую конфигурацию логирования, либо измененные logback.xml или logback-extra.xml, вместо основной конфигурации логирования из системного конфигурационного объекта (объекта системной БД IDMX, содержащего конфигурацию IDMX).
Для включения игнорирования системной конфигурации логирования следует добавить JVM аргумент -Dmidpoint.internals.avoidLoggingChange=true в параметр idmx-engine.java_opts_extra конфигурафионного файла idm.all.conf (подробнее смотрите в Руководстве по установке.
Секретная информация в инициализационных логах#
Базовая конфигурация логирования может записывать в журнал значения из config.xml, включая пароли, если logger com.evolveum.midpoint.init.StartupConfiguration установлен на уровень DEBUG или TRACE. Поскольку это является риском кибербезопасности, IDMX заменяет такие значения в логах плейсхолдерами. Однако для разрешения некоторых инцидентов может потребоваться исследование журнала с конкретными значениями.
Для того, чтобы отключить замену секретной информации плейсхолдерами в инициализационных логах, нужно использовать JVM аргумент -Dmidpoint.printSensitiveValues при запуске IDMX.
Внимание!
Данный logger является опциональным, его следует использовать только для тестирования и при необходимости для анализа инцидентов. Не рекомендуется включение данного logger в промышленной среде!
Обязательно удалите этот аргумент после разрешения инцидента!
Запись в Syslog#
IDMX записывает логи в журнал используя библиотеку LogBack. Поддерживаются только два режима работы этой библиотеки — запись в файл (по умолчанию) и запись по сети через протокол Syslog. Для записи логов в syslog необходимо изменить конфигурацию логирования IDMX.
Конфигурация логирования хранится в ConfigMap idmx-engine, следовательно, для изменения режима логирования нужно изменить этот объект. Для записи в syslog необходимо изменить appender логирования. Откройте logback.xml, найдите в нем раздел <logging> и измените блок <appender> следующим образом:
<logging>
<!-- Здесь идет конфигурация логгера -->
<appender xsi:type="c:SyslogAppenderConfigurationType" name="IDM_LOG"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<syslogHost>syslog.example.com</syslogHost>
<facility>LOCAL3</facility>
<suffixPattern>[%X{subsystem}] [%thread] %level \(%logger\): %msg</suffixPattern>
</appender>
<rootLoggerAppender>IDM_LOG</rootLoggerAppender>
<rootLoggerLevel>INFO</rootLoggerLevel>
</logging>
После изменения убедитесь, что значение параметра
nameв appender совпадает со значением элемента<rootLoggerAppender>(IDM_LOG в примере выше).
Такая конфигурация будет отправлять записи со всех loggers в в syslog. Отправка сообщений на сервер syslog должна начаться сразу после сохранения изменений в объекте системной конфигурации. Если этого не произошло, перезапустите IDMX.
Более подробную информацию о конфигурировании appender вы найдете в документации LogBack.
Конфигурация выше будет работать только для основного логирования событий. Если также требуется отправка сообщений инициализационного логирования в syslog, то необходимо изменить appender в logback.xml соответствующим образом:
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="IDM_LOG" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>syslog.example.com</syslogHost>
<facility>LOCAL3</facility>
<suffixPattern>[%X{subsystem}] [%thread] %level \(%logger\): %msg</suffixPattern>
</appender>
<logger name="ro.isdc.wro.extensions.processor.css.Less4jProcessor" level="ERROR"/>
<logger name="org.hibernate.engine.jdbc.spi.SqlExceptionHelper" level="OFF"/>
<logger name="org.hibernate.engine.jdbc.batch.internal.BatchingBatch" level="OFF"/>
<logger name="PROFILING" level="INFO"/>
<logger name="com.evolveum.midpoint" level="INFO" />
<root level="INFO">
<appender-ref ref="IDM_LOG"/>
</root>
</configuration>
После перезапуска, IDMX будет отправлять в syslog и инициализационные логи. В случае, если используется кластерный режим работы IDMX, необходимо распространить эти изменения на все узлы кластера.
Интеграция с Platform V Monitor#
IDMX поддерживает интеграцию с компонентом LOGA (Журналирование) продукта Platform V Monitor. Подробнее о подключении интеграции смотрите в документе Руководство по установке, раздел Интеграции с платформенными зависимостями.
Логирование на конкретных узлах#
Доступна функциональность настройки уровней логирования и отдельных логгеров на конкретных узлах IDM.
Чтобы настроить раздельное логирование на конкретных узлах:
Перейдите в legacy UI IDM.
Перейдите в раздел Configuration -> System -> Логирование.
Выберите вкладку Class loggers.
В открывшейся таблице будет представлен список всех логгеров инсталляции IDM. С ними доступны следующие настройки:
Конфигурация узлов - В колонке
nodeIdможно указать конкретные имена узлов, которые должны отбрасывать сообщения по этому логгеру. Можно указать несколько узлов через,.Конфигурация уровня логирования - В колонке Уровень (Level) можно выбрать уровень логирования для данного логгера. Он будет применяться для всех узлов, либо, если в колонке
nodeIdуказаны конкретные узлы - только для них.
Сохраните изменения, нажав кнопку Сохранить.
В случае, если один и тот же логгер нужно отбрасывать на разных узлах на разных уровнях логирования - можно добавить данный логгер в таблицу еще раз (нажав кнопку Новый со значком *), и указать другие узлы и уровни логирования для новой строки. После добавления следует сохранить изменения.
Обратите внимание.
Если задать конкретные узлы для какого-либо логгера на вкладке Class loggers - все остальные узлы, не указанные в колонке
nodeIdдля данного логгера, будут использовать настройку root логгера. Настройку root логгера можно найти на вкладке Логирование в разделе Configuration -> System -> Логирование.