Confluent Platform中Kafka心跳日志位置及消费者心跳日志配置查询
消费者心跳相关日志的查看和配置方案
一、日志默认位置说明
- Broker侧心跳相关日志:默认就存放在你现在查看的
/var/log/kafka.log路径下,但默认INFO级别仅会打印心跳超时、重平衡触发这类事件日志,不会记录每一次心跳的接收明细,就是你目前看到的报错所属的日志范畴。 - 消费者客户端侧心跳相关日志:存放在消费者应用自身配置的日志文件中,取决于你部署消费程序的日志路径配置,默认也不会打印详细的心跳发送/响应记录。
二、是否需要开启额外配置、如何开启
你需要分别按需开启两端的DEBUG级别日志,才能拿到明细心跳记录做对比验证:
若要确认Broker是否正常收到消费者的心跳,调整Broker日志配置:
- 静态配置方式:修改Broker节点
config/log4j.properties文件,添加如下配置后重启Broker生效:log4j.logger.kafka.coordinator.group.GroupCoordinator=DEBUG - 动态配置方式(无需重启Broker,生产环境推荐):执行如下命令即可即时生效:
kafka-configs.sh --bootstrap-server <broker接入地址:端口> --entity-type brokers --entity-name <对应Broker的ID> --alter --add-config log4j.logger.kafka.coordinator.group.GroupCoordinator=DEBUG
开启后即可在/var/log/kafka.log中过滤到指定消费组、指定消费者ID的每一次心跳接收记录,包含精确的时间戳信息。
若要确认消费者侧是否正常发送心跳,调整消费者应用日志配置:
- 如果你使用官方Java客户端(包括Kafka Streams应用),修改应用的日志配置文件(log4j/slf4j配置均可),添加如下级别配置:
开启后即可在应用日志中看到消费者每次心跳发送、响应接收的明细记录,和Broker端的日志做时间线对比,就能确认心跳链路是否存在丢包、超时问题。log4j.logger.org.apache.kafka.clients.consumer.internals.AbstractCoordinator=DEBUG log4j.logger.org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient=DEBUG
三、注意事项
调试完成后请及时将日志级别改回默认的INFO级别,DEBUG级别的日志量极大,长时间开启会占用大量磁盘空间,也会对Broker或消费应用的性能造成不必要的影响。
内容的提问来源于stack exchange,提问作者Gibbs
相关产品推荐
相关产品推荐

