将 kafka 代理日志发送到 mysql 数据库

Sending kafka broker logs to mysql database

我一直致力于将 apache-kafka 代理日志存储到 mysql 数据库中。 Kafka 有 log4j jar 文件,它有 JDBC appender 通过它我们可以将日志直接存储到数据库中。所以我在 kafka 中找到了 log4j.properties 文件,并尝试在属性中添加 JDBC 属性行,这样它就可以将日志连同控制台和日志文件一起发送到数据库,这是 kafka

中的默认日志记录功能

log4j.properties: `

log4j.rootLogger=INFO, stdout, kafkaAppender, DB

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n

#log4j JDBC appender properties I have added for storing logs in mysql database

log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=jdbc.mysql://localhost:3306/mydb
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.user=root
log4j.appender.DB.password=password
log4j.appender.DB.sql=INSERT INTO logs VALUES('%d', '%p', '%C', '%m')
log4j.appender.DB.layout=org.apache.log4j.EnhancedPatternLayout

log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log
log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.appender.stateChangeAppender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.stateChangeAppender.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.stateChangeAppender.File=${kafka.logs.dir}/state-change.log
log4j.appender.stateChangeAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.stateChangeAppender.layout.ConversionPattern=[%d] %p %m (%c)%n`

我在这里给出了log4j.properties文件的一半。疑问是,我在 log4j.properties 文件中添加了 JDBC appender 属性,但是当我启动服务器并向代理发送消息时,数据库中没有添加任何日志,但我得到了控制台和文件日志。这种方法是正确的还是我必须使用什么方法或方法来获取附加在 mysql 数据库中的 kafka 代理日志。

我将 mysql connector v5 jar 放在 KAFKA_HOME/lib 中,并且在 KAFKA_HOME/config 的 log4j.properties 文件中添加了 jdbcappender 属性 但是在启动 kafka 时服务器和 zookeeper 服务器 我没有在 mysql 数据库中附加任何日志,所以我只是删除了 stdout,kafkaAppender 在 log4j.properties 文件中,以便我可以看到是什么导致日志不追加到数据库中的错误。终于知道我使用的 mysql 数据库是版本 8,mysql 连接器 jar 是版本 5,在版本 8 中,mysql 身份验证方法是 'caching_sha2_password' 所以我改变了'mysql_native_password' 方法,然后服务器日志附加到 mysql 数据库中。