Appearance
Настройка журналирования Apache Kafka в Syslog (подсистема ЖУРНАЛЛИСТ)
Apache Kafka использует log4j / log4j2 для ведения журналов. Для интеграции с подсистемой ЖУРНАЛЛИСТ журналы Kafka могут быть направлены в syslog с последующей централизованной доставкой.
Общая схема
Kafka:
- генерирует логи (broker, controller, replication, ошибки)
- log4j отправляет их в syslog
- syslog (rsyslog / syslog-ng) пересылает сообщения в ЖУРНАЛЛИСТ
Где настраивается логирование
В зависимости от версии Kafka:
- Kafka ≤ 2.x →
log4j.properties - Kafka ≥ 3.x →
log4j2.xmlилиlog4j2.properties
Файлы обычно находятся:
bash
$KAFKA_HOME/config/log4j.propertiesили
bash
$KAFKA_HOME/config/log4j2.xmlВариант 1. Kafka (log4j) — отправка в syslog
Добавление SyslogAppender
Пример для log4j.properties:
properties
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.syslogHost=localhost
log4j.appender.SYSLOG.facility=LOCAL0
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern=%d{ISO8601} %p %c: %m%nПодключение аппендера
properties
log4j.rootLogger=INFO, SYSLOGВариант 2. Kafka (log4j2)
Пример log4j2.xml:
xml
<Appenders>
<Syslog name="Syslog" host="localhost" port="514" protocol="UDP"
facility="LOCAL0" format="RFC5424">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n"/>
</Syslog>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Syslog"/>
</Root>
</Loggers>Настройка пересылки в ЖУРНАЛЛИСТ
Kafka отправляет сообщения в локальный syslog, далее требуется настроить пересылку.
rsyslog
bash
/etc/rsyslog.d/kafka.confПример:
bash
if $programname == 'kafka' then @@journalist-server:514
& stopили по facility:
bash
local0.* @@journalist-server:514syslog-ng
bash
filter f_kafka { program("kafka"); };
destination d_journalist {
tcp("journalist-server" port(514));
};
log {
source(src);
filter(f_kafka);
destination(d_journalist);
};Перезапуск сервисов
bash
systemctl restart kafka
systemctl restart rsyslogПроверка
- Проверить локальный syslog:
bash
tail -f /var/log/syslogПроверить события в ЖУРНАЛЛИСТ
Создать нагрузку:
- отправка сообщений в Kafka
- остановка/запуск брокера
- создание topic
Какие события попадают
- запуск и остановка брокера
- ошибки репликации
- проблемы с Zookeeper / KRaft
- сетевые ошибки
- операции с топиками
- события контроллера
Рекомендации
- использовать отдельный facility (например, local0)
- разделять логи Kafka и других сервисов
- использовать TCP для передачи
- контролировать verbosity
Альтернативный вариант (через файл)
Если используется файловое логирование:
Kafka пишет в:
bash
logs/server.logТогда можно:
- использовать rsyslog (imfile)
- пересылать файл в ЖУРНАЛЛИСТ
Когда использовать syslog
Рекомендуется:
- при централизованном мониторинге
- при интеграции с инфраструктурными системами
- для корреляции событий Kafka с другими компонентами
Краткий вывод
Интеграция Kafka с подсистемой ЖУРНАЛЛИСТ через syslog позволяет включить события брокеров и кластерных компонентов в единую систему анализа, выявлять проблемы на ранних стадиях и автоматизировать реакцию на инциденты.