kafka 官方对于自身的 lag 监控并没有太好的方法,虽然kafka broker 自带有 kafka-topic.sh, kafka-consumer-groups.sh, kafka-console-consumer.sh 等脚本,但是对于大规模的生产集群上,使用脚本采集是非常不可靠的。
linkedin 公司的数据基础设施streaming sre团队正在积极开发burrow,该软件由go语言编写,在apache许可证下发布,并托管在 github burrow 上。
它收集集群消费者群组的信息,并为每个群组计算出一个单独的状态,告诉我们群组是否运行正常,是否落后,速度是否变慢或者是否已经停止工作,以此来完成对消费者状态的监控。它不需要通过监控群组的进度来获得阈值,不过用户仍然可以从中获得消息的延时数量。
burrow自动监控所有消费者和他们消费的每个分区。它通过消费特殊的内部kafka主题来消费者偏移量。然后,burrow将消费者信息作为与任何单个消费者分开的集中式服务提供。消费者状态通过评估滑动窗口中的消费者行为来确定。
这些信息被分解成每个分区的状态,然后转化为consumer的单一状态。消费状态可以是ok,或处于warning状态(consumer正在工作但消息消费落后),或处于error状态(consumer已停止消费或离线)。此状态可通过简单的http请求发送至burrow获取状态,也可以通过burrow 定期检查并使用通知其通过电子邮件或单独的http endpoint接口(例如监视或通知系统)发送出去。
burrow能够监控consumer消费消息的延迟,从而监控应用的健康状况,并且可以同时监控多个kafka集群。用于获取关于kafka集群和消费者的信息的http上报服务与滞后状态分开,对于在无法运行java kafka客户端时有助于管理kafka集群的应用程序非常有用。
burrow 是基于 go 语言开发,当前 burrow 的 v1.1 版本已经release。
burrow 也提供用于 docker 镜像。
burrow_1.2.2_checksums.txt 297 bytes
burrow_1.2.2_darwin_amd64.tar.gz 4.25 mb
burrow_1.1.0_linux_amd64.tar.gz 3.22 mb (centos 6)
burrow_1.2.2_linux_amd64.tar.gz 4.31 mb (centos 7 require glibc >= 2.14)
burrow_1.2.2_windows_amd64.tar.gz 4 mb
source code (zip)
source code (tar.gz)
本发行版包含针对初始1.0.0发行版中发现的问题的一些重要修复,其中包括:
支持 kafka 1.0更新版本(#306)
fix zookeeper 监视处理(#328)
还有一些小的功能更新
存储最近的代理偏移环以避免停止的分区出现虚假警报
添加可配置的通知间隔
通过环境变量添加对配置的支持
支持存储模块中可配置的队列深度
安装方法可以选用源码编译,和使用官方提供的二进制包等方法。
这里推荐使用二进制包的方式。
burrow 是无本地状态存储的,cpu密集型,网络io密集型应用。
默认配置文件为 burrow.toml
burrow 返回额接口均为 json 对象格式,所以非常方便用于二次采集处理。
消费组健康状态的接口含义如下: