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

Для логирования 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.

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

Примеры записей из лог-файла брокера server.log:

Уровень события

Запись

Описание

[ERROR]

[2023-10-05 14:56:23,020] ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
at kafka.zookeeper.ZooKeeperClient.waitUntilConnected(ZooKeeperClient.scala:254)
at kafka.zookeeper.ZooKeeperClient.<init>(ZooKeeperClient.scala:108)
at kafka.zk.KafkaZkClient$.apply(KafkaZkClient.scala:2290)
at kafka.zk.KafkaZkClient$.createZkClient(KafkaZkClient.scala:2382)
at kafka.server.KafkaServer.initZkClient(KafkaServer.scala:600)
at kafka.server.KafkaServer.startup(KafkaServer.scala:220)
at ru.sbrf.kafka.distributed.log.DistributedLog$.main(DistributedLog.scala:94)
at ru.sbrf.kafka.distributed.log.DistributedLog.main(DistributedLog.scala)

Критическая ошибка при запуске сервера Kafka: отсутствие подключения брокера к ZooKeeper по истечении тайм-аута

[WARN]

WARN: [2023-12-26 18:40:16,649] WARN [ReplicaFetcher replicaId=1, leaderId=3, fetcherId=0] Received UNKNOWN_TOPIC_ID from the leader for partition test5-9. This error may be returned transiently when the partition is being created or deleted, but it is not expected to persist. (kafka.server.ReplicaFetcherThread)

От лидера получен неизвестный ID топика

[INFO]

[2023-12-06 10:28:53,762] INFO Registered kafka:type=kafka.Log4jController MBean (kafka.utils.Log4jControllerRegistration$)
[2023-12-06 10:28:53,768] INFO Kafka 3.4.0 starting... (ru.sbrf.kafka.distributed.log.DistributedLog$)

Регистрация и запуск брокера Kafka

[DEBUG]

[2023-12-11 12:04:16,383] DEBUG [GroupCoordinator 1]: Member id consumer-UiAclConsumer-1-81ef9138-6224-4413-a841-0d46c8b87f70 was not found in UiAclConsumer during heartbeat completion check (kafka.coordinator.group.GroupCoordinator)

Идентификатор члена consumer-группы не найден во время проверки heartbeat («сердцебиения»)

[TRACE]

[2024-01-31 12:50:28,298] TRACE [Controller id=1] Checking need to trigger auto leader balancing (kafka.controller.KafkaController)

Сообщение о начале проверки необходимости запуска автоматической балансировки лидеров

Внимание

Включение уровней логирования TRACE и DEBUG не рекомендуется в промышленном использовании.