Системный журнал#

Доступ к системному журналу#

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

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

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

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

  3. Перезапустите IDMX, чтобы изменения применились.

Основные события#

Имя logger

Применение

Рекомендуемый уровень логирования

Описание

Подробность сообщения

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. Logger чаще всего используется при разрешении проблем с маппингами при синхронизации, а также при проблемах при взаимодействии маппингов

Высокая

com.evolveum.midpoint.model.impl.lens.projector

Детальное отслеживание проекций

TRACE

Записывает этапы вычисления проекций, детально расписывая каждый шаг. Чрезвычайно много деталей, особенно на уровне TRACE. Как правило требуется в редких случаях, когда нужно разобрать ошибки в работе IDM

Чрезвычайно высокая

com.evolveum.midpoint.model.impl.lens.Clockwork

Информация о системе

INFO

Предоставляет общую информацию о работе IDMX, включая источники событий, верхнеуровневые результаты вычисления проекций и их результаты (изменения в учетных записях). Рекомендуется для решения основных проблем в работе IDM

Средняя

com.evolveum.midpoint.model.impl.lens.Clockwork

Отслеживание работы IDMX

TRACE

Описывает шаги работы IDMX по основным этапам — проекции, исполнение, алгоритм работы. Включает себя дампы контекста между крупными шагами

Высокая

com.evolveum.midpoint.model.impl.lens.ChangeExecutor

Отслеживание исполнителя изменений

TRACE

Записывает все изменения, выполняемые IDMX — учетные записи IDM и других ресурсов, другие объекты системы

Средняя

org.identityconnectors.framework

Отслеживание коннекторов

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.

Чтобы настроить раздельное логирование на конкретных узлах:

  1. Перейдите в legacy UI IDM.

  2. Перейдите в раздел Configuration -> System -> Логирование.

  3. Выберите вкладку Class loggers.

  4. В открывшейся таблице будет представлен список всех логгеров инсталляции IDM. С ними доступны следующие настройки:

    • Конфигурация узлов - В колонке nodeId можно указать конкретные имена узлов, которые должны отбрасывать сообщения по этому логгеру. Можно указать несколько узлов через ,.

    • Конфигурация уровня логирования - В колонке Уровень (Level) можно выбрать уровень логирования для данного логгера. Он будет применяться для всех узлов, либо, если в колонке nodeId указаны конкретные узлы - только для них.

  5. Сохраните изменения, нажав кнопку Сохранить.

В случае, если один и тот же логгер нужно отбрасывать на разных узлах на разных уровнях логирования - можно добавить данный логгер в таблицу еще раз (нажав кнопку Новый со значком *), и указать другие узлы и уровни логирования для новой строки. После добавления следует сохранить изменения.

Обратите внимание.

Если задать конкретные узлы для какого-либо логгера на вкладке Class loggers - все остальные узлы, не указанные в колонке nodeId для данного логгера, будут использовать настройку root логгера. Настройку root логгера можно найти на вкладке Логирование в разделе Configuration -> System -> Логирование.