【发布时间】:2021-01-13 15:30:15
【问题描述】:
我的云服务器中有 Kafka 服务器实例,由 3 个代理、3 个 zk 和 12 个连接工作人员组成。众所周知,Kafka 的主文件夹由 bin、config 和 logs 组成。我想问我是否要保护磁盘大小,删除logs文件夹中的旧server.log、connect.log和zookeeper_gc.log文件是否安全?如果是,那么我如何定期删除/压缩它(例如每天或每周)?
【问题讨论】:
标签: apache-kafka
我的云服务器中有 Kafka 服务器实例,由 3 个代理、3 个 zk 和 12 个连接工作人员组成。众所周知,Kafka 的主文件夹由 bin、config 和 logs 组成。我想问我是否要保护磁盘大小,删除logs文件夹中的旧server.log、connect.log和zookeeper_gc.log文件是否安全?如果是,那么我如何定期删除/压缩它(例如每天或每周)?
【问题讨论】:
标签: apache-kafka
回答您的第一个问题,是的,可以删除旧的 Kafka 日志文件。仅当您想追溯历史日志时才可以使用它们。
对于第二个,您可以检查 /config 文件夹下的 log4j 属性文件。默认情况下,Kafka 提供 DailyRollingAppender,您可以将其更改为您喜欢的 RollingAppender..
来自默认 kafka log4j 属性的片段。参考https://github.com/apache/kafka/blob/trunk/config/log4j.properties
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
您可以像下面这样更新 RollingAppender,这将保留最多 10 个 25MB 的文件,因此永远不会占用超过 250MB。
log4j.appender.kafkaAppender=org.apache.log4j.RollingFileAppender
log4j.appender.kafkaAppender.File=${kafka.logs.dir}/server.log
log4j.appender.kafkaAppender.MaxFileSize=25MB
log4j.appender.kafkaAppender.MaxBackupIndex=10
log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
请注意,上述日志属性文件中有几个附加程序(参考上面的链接),您必须相应地更新每个附加程序的设置。
【讨论】:
Kafka 使用 log.cleanup.policy 配置属性来定义清理策略。此外,它使用 log.retention.check.interval.ms 配置属性作为定期日志检查之间的间隔。因此,以上两个属性将允许一个在所需的时间间隔清理旧日志。
这里有更多详细信息供您参考:https://jaceklaskowski.gitbooks.io/apache-kafka/content/kafka-log-cleanup-policies.html
【讨论】: