События системного журнала#

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. Для внесения изменений в конфигурацию:

  1. Откройте ConfigMap logback-config в интерфейсе вашей системы оркестрации контейнеризированных приложений, в которой развернут экземпляр IDM.

  2. Внесите изменения в logback.xml и сохраните их. В файле используется стандартный синтаксис библиотеки Logback.

  3. Перезапустите 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. Все доступные для изменения настройки интеграции приведены в конфигурационном файле.