События системного журнала#
IDM записывает сообщения системного журнала одним из двух способов:
В файлы на сервере.
В этом режиме IDM создает файлы журнала в директории
/opt/midpoint/var/log/. Основные файлы для работы это:midpoint.log— основной файл системного журнала. В него вносятся все логи работы системы.midpoint.out— журнал для инициализационного логирования IDM. В этот файл вносятся только те логи, которые выдаются до запуска основой подсистемы логирования IDM. Это логи при запуске и инициализации IDM, а также при завершении работы и остановке. Как правило, данный журнал не используется при разборе ошибок во время работы системы, однако может быть полезен, если возникают какие-либо ошибки во время запуска IDM. Подробнее смотрите в разделе Конфигурирование инициализационного логирования.midpoint.outможет отсутствовать, если для инициализационного логирования и системного логирования используется внешнийlogback.xmlи отключено использование конфигурации логирования из системной БД (репозитория).
В системный журнал по протоколу syslog. Подробнее смотрите в разделе Запись в Syslog
По умолчанию происходит ротация файлов журналов. Когда основной файл начинает занимать много слишком места на диске, он переименовывается, и создается новый. Самые старые файлы в директории регулярно удаляются.
IDM имеет следующую схему именования файлов журнала по умолчанию:
Основной файл журнала именуется
midpoint.log. При переполнении (по умолчанию - 100МБ), файл переименовывается по шаблонуmidpoint-<дата в формате гггг-мм-дд>.<порядковый номер>.log. IDM будет хранить не больше 10 резервных файлов, и общий объем журнала не может превышать 1ГБ.Вспомогательный файл журнала, содержащий записи в формате JSON, именуется
midpoint.json.log. При переполнении (по умолчанию - 100МБ), файл переименовывается по шаблонуmidpoint-json-<дата в формате гггг-мм-дд>.<порядковый номер>.log. IDM будет хранить не больше 10 резервных файлов, и общий объем журнала не может превышать 1ГБ.
Изменить схему именования и политику смены файлов журнала можно в конфигурации логирования.
Конфигурация логирования выполняется в logback.xml, вынесенном в ConfigMap компонента idmx-engine. Для внесения изменений в конфигурацию:
Откройте ConfigMap
logback-configв интерфейсе вашей системы оркестрации контейнеризированных приложений, в которой развернут экземпляр IDM.Внесите изменения в
logback.xmlи сохраните их. В файле используется стандартный синтаксис библиотеки Logback.Перезапустите IDM, чтобы изменения применились.
Основные логгеры#
Имя логгера |
Применение |
Рекомендуемый уровень логирования |
Описание |
Подробность сообщения |
|---|---|---|---|---|
com.evolveum.midpoint.model.common.mapping.Mapping |
Отслеживание маппингов |
TRACE |
Верхнеуровневое описание исполнения каждого маппинга |
Средняя |
com.evolveum.midpoint.model.common.expression.Expression |
Отслеживание выражений |
TRACE |
Описывает исполнение выражений. Более низкоуровневый лог, с дампами входных и выходных данных выражения |
Высокая |
com.evolveum.midpoint.model.common.expression.script.ScriptExpression |
Отслеживание скриптовых выражений |
TRACE |
Детальное описание исполнения скриптовых выражений (Groovy, JavaScript, и других) |
Очень высокая |
com.evolveum.midpoint.model.impl.lens.projector.Projector |
Отслеживание проекций |
TRACE |
Описывает этапы вычисления проекций. Много деталей, особенно на уровне TRACE. Логгер чаще всего используется при разрешении проблем с маппингами при синхронизации, а также при проблемах при взаимодействии маппингов |
Высокая |
com.evolveum.midpoint.model.impl.lens.projector |
Детальное отслеживание проекций |
TRACE |
Записывает этапы вычисления проекций, детально расписывая каждый шаг. Чрезвычайно много деталей, особенно на уровне TRACE. Как правило требуется в редких случаях, когда нужно разобрать ошибки в работе IDM |
Чрезвычайно высокая |
com.evolveum.midpoint.model.impl.lens.Clockwork |
Информация о системе |
INFO |
Предоставляет общую информацию о работе системы, включая источники событий, верхнеуровневые результаты вычисления проекций и их результаты (изменения в учетных записях). Рекомендуется для решения основных проблем в работе IDM |
Средняя |
com.evolveum.midpoint.model.impl.lens.Clockwork |
Отслеживание работы системы |
TRACE |
Описывает шаги работы системы по основным этапам — проекции, исполнение, алгоритм работы. Включает себя дампы контекста между крупными шагами |
Высокая |
com.evolveum.midpoint.model.impl.lens.ChangeExecutor |
Отслеживание исполнителя изменений |
TRACE |
Записывает все изменения, выполняемые системой — учетные записи IDM и других ресурсов, другие объекты системы |
Средняя |
org.identityconnectors.framework |
Отслеживание коннекторов |
TRACE |
Записывает исполнение всех вызванных операций на всех коннекторах и их результаты |
Высокая |
Логгеры категории com.evolveum.midpoint поддерживают все уровни логирования (OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, ALL). При изменении уровня логирования с рекомендуемого будет увеличиваться или уменьшаться количество и детализация сообщений, в зависимости от выбранного уровня.
Конфигурирование инициализационного логирования#
Некоторые события, происходящие при запуске системы, логируются до инициализации основного механизма логирования, поэтому для их записи в журнал используется встроенная конфигурация логирования.
IDM имеет базовую конфигурацию для записи таких событий, однако она может быть недостаточна для анализа проблем, возникающих при низкоуровневой инициализации системны, инициализации БД и других подобных ситуациях. Изменить эту конфигурацию можно добавлением логгера 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>
Игнорирование системной конфигурации логирования#
В некоторых случаях может возникнуть необходимость в получении более подробных логов, которые записываются после инициализации репозитория, и при этом будет отсутствовать доступ к UI администратора, через который можно изменить основную конфигурацию логирования. В таких случаях можно использовать опцию конфигурации IDM, которая позволит игнорировать основную конфигурацию:
config.xml:
<configuration>
<midpoint>
...
<internals>
<avoidLoggingChange>true</avoidLoggingChange>
</internals>
</midpoint>
</configuration>
При включении этой опции IDM будет продолжать использовать базовую конфигурацию логирования, либо измененные logback.xml или logback-extra.xml, вместо основной конфигурации логирования из системного конфигурационного объекта.
Как вариант, можно использовать JVM аргумент -Dmidpoint.internals.avoidLoggingChange=true при запуске IDM, чтобы не изменять config.xml.
Секретная информация в инициализационных логах#
Базовая конфигурация логирования может записывать в журнал значения из config.xml, включая пароли, если логгер com.evolveum.midpoint.init.StartupConfiguration установлен на уровень DEBUG или TRACE. Поскольку это является риском кибербезопасности, IDM заменяет такие значения в логах плейсхолдерами. Однако для разрешения некоторых инцидентов может потребоваться исследование журнала с конкретными значениями.
Для того, чтобы отключить замену секретной информации плейсхолдерами в инициализационных логах, нужно использовать JVM аргумент -Dmidpoint.printSensitiveValues при запуске IDM.
Внимание! Обязательно удалите этот аргумент после разрешения инцидента!
Запись в Syslog#
IDM записывает логи в журнал используя библиотеку LogBack. Поддерживаются только два режима работы этой библиотеки — запись в файл (по умолчанию) и запись в Syslog. Для записи логов в syslog необходимо изменить конфигурацию системы.
Конфигурация логирования хранится в ConfigMap idmx-engine, следовательно, для изменения режима логирования нужно изменить этот объект. Для записи в syslog необходимо изменить appender логирования. Откройте logback.xml, найдите в нем раздел <logging> и измените блок <appender> следующим образом:
...
<logging>
<!-- logger configuration should be here -->
<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 в примере выше).
Такая конфигурация будет отправлять записи со всех логгеров в syslog. Отправка сообщений на сервер syslog должна начаться сразу после сохранения изменений в объекте системной конфигурации. Если этого не произошло, перезапустите IDM.
Более подробную информацию о конфигурировании 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>
После перезапуска, IDM будет отправлять в syslog и инициализационные логи. В случае, если используется кластерный режим работы IDM, необходимо распространить эти изменения на все узлы кластера.
Интеграция с Platform V Monitor#
Интеграция с компонентом LOGA (Журналирование) продукта Platform V Monitor производится путем указания корректных значений в настройках категории idm.fluent конфигурационного файла idm.all.conf перед установкой IDM. При этом, во время установки IDM также устанавливается сайдкар с клиентом LOGA, который собирает журналы, записываемые IDM, и отправляет их в установленный экземпляр Platform V Monitor. Все доступные для изменения настройки интеграции приведены в конфигурационном файле.