Системный журнал#
Для логирования Corax использует Apache Log4j.
Настройка системного журнала#
Уровни логирования и другие параметры логирования настраиваются в файлах:
config/log4j.properties— конфигурационный файл для брокера Kafka;config/connect-log4j.properties— конфигурационный файл для Kafka Connect;config/kafka-ui-log4j.properties— конфигурационный файл для графической утилиты Corax UI;config/tools-log4j.properties— конфигурационный файл для cmd line tools;config/zookeeper-log4j.properties— конфигурационный файл для ZooKeeper;config/schemaregistry/schema-registry-log4j.properties— конфигурационный файл для Schema Registry.
Для конфигурирования используйте синтаксис, описанный на официальном сайте Apache Log4j.
Настройка log4j.additivity.<логгер> определяет в какой лог-файл будут писаться сообщения:
false— логирование производится только в файлы, заданные в аппендере;true— (поведение по умолчанию) сообщения будут писаться как в собственный лог-файл (если задан), так и в логгер более высокого уровня (включая корневой).
В Corax имеется возможность изменить алгоритм определения значения log4j.additivity.<логгер>, если он не задан — с помощью параметра запуска -Dlog4j.configuratorClass=org.apache.log4j.CoraxPropertyConfigurator. При запуске компонента системы с данным параметром значение log4j.additivity.<логгер> определяется по алгоритму:
false— если для данного логгера задан один или более аппендер (предполагается, что логирование будет производиться в файлы, заданные в аппендере);true— если для данного логгера аппендеры не заданы.
Доступ к системному журналу#
По умолчанию записи ведутся в лог-файл брокера server.log. Дополнительные лог-файлы:
Логи авторизации:
kafka-authorizer.log— используется для базовой (Kafka) авторизации (authorizer.class.name=kafka.security.authorizer.AclAuthorizerилиauthorizer.class.name=org.apache.kafka.metadata.authorizer.StandardAuthorizer).Логи для Corax авторизации по ACL (
authorizer.class.name=ru.sbrf.kafka.authorizer.CoraxAclAuthorizer):corax-algorithm-allowed.log— записи об успешной авторизации.corax-algorithm-denied.log— записи о не успешной авторизации, включая первую проверку перед применением fallback-механизма, исключая проверки по строгому алгоритму для последовательного алгоритма авторизации и мягкому алгоритму с проверкой строгого.corax-algorithm-sequential-strict-denied.log— записи о не успешной авторизации по строгому алгоритму только для последовательного алгоритма авторизации.corax-algorithm-soft-with-strict-denied.log— записи о не успешной авторизации по строгому алгоритму только для мягкого алгоритма с проверкой строгого.corax-fallback-allowed.log— записи об успешной авторизации по fallback-механизму.kafka-authorizer.log— только при срабатывании fallback-механизма, записи о не успешной авторизации.
В
kafka-authorizer.logможет присутствовать сообщение с уровнем TRACE при условии: сработал fallback-механизм, авторизация успешна, задан уровень логирования TRACE. Вcorax-fallback-allowed.logпоявится запись с уровнем DEBUG.
Автоматическое сжатие файлов с логами#
Функциональность реализуется аппендером ru.sbrf.kafka.log4j.RollingAndCompressFileAppender. Аппендер выполняет автоматическую ротацию лог-файлов по размеру с последующим асинхронным сжатием ротированного файла в формат gzip.
Параметры#
Дополнительные параметры, помимо параметров базового класса org.apache.log4j.FileAppender:
maxFileSize— максимальный размер лог-файла. По достижению этого значения начинается ротация файла — текущий лог-файл переименовывается по шаблону:<имя лог-файла>.1, создается новый пустой файл для логирования.maxBackupIndex— максимальное количество архивированных лог-файлов. Проверяется при создании gzip архива:если количество архивов равно значению параметра — удаление самого старого архива (индекс равен значению данного параметра) и затем ротация других архивов (увеличение индекса на 1).
если количество архивов меньше значения параметра — ротация других архивов (увеличение индекса на 1).
Пример настройки#
Пример настроенного log4j.properties:
# Определение аппендера
log4j.appender.gzfile=ru.sbrf.kafka.log4j.RollingAndCompressFileAppender
# Путь к лог-файлу
log4j.appender.gzfile.file=/var/log/app/application.log
# Максимальный размер лог-файла перед ротацией (в байтах)
log4j.appender.gzfile.maximumFileSize=52428800
# Количество сохраняемых архивированных файлов
log4j.appender.gzfile.maxBackupIndex=5
# Определение формата логов
log4j.appender.gzfile.layout=org.apache.log4j.PatternLayout
log4j.appender.gzfile.layout.ConversionPattern=[%d] %p %m (%c:%L)%n
# Привязка к логгеру
log4j.logger.my.logger=INFO, gzfile
log4j.additivity.my.logger=false
Основные события#
Примеры записей из лог-файла брокера server.log:
Уровень события |
Запись |
Описание |
|---|---|---|
|
|
Критическая ошибка при запуске сервера Kafka: отсутствие подключения брокера к ZooKeeper по истечении тайм-аута |
|
|
От лидера получен неизвестный ID топика |
|
|
Регистрация и запуск брокера Kafka |
|
|
Идентификатор члена consumer-группы не найден во время проверки heartbeat («сердцебиения») |
|
|
Сообщение о начале проверки необходимости запуска автоматической балансировки лидеров) |
Внимание
Включение уровней логирования TRACE и DEBUG не рекомендуется в промышленном использовании.