kafka监控工具比较多,有kafka monitor,kafka manager, kafka eagle,KafkaOffsetMonitor 等,但是监控consumer lag最好用的当属burrow.
Burrow是linkedin开源的一个监控Apache Kafka的工具,burrow可以将消费者滞后检查作为一项服务来对外提供。 它监视所有消费者的承诺偏移量,并根据需要计算消费者的状态,提供HTTP endpoint接口来获取消费者状态,能够监控Consumer消费消息的延迟,从而监控应用的健康状况,并且可以同时监控多个Kafka集群。 通知器可以通过配置电子邮件或HTTP通告进行告警,而无需指定阈值,他完全是基于消费过程的动态评估。同时可以监控offset提交到broker,zk两种方式,还可以作storm的消费监控,报警支持http, email想要扩展个自己的短信报警什么的也是超简单。
第一步安装采集器burrow
下载tar包https://github.com/linkedin/Burrow/releases
解压后修改config/burrow.toml配置文件
主要是修改日志文件地址和增加kafka集群配置,同时可以增加zookeeper的模式。
进入到解压目录执行 nohup burrow -config-dir=config/ & 就直接启动了
验证是否成功可以访问ip/v3/kafka 可以获取到监控的kafka集群信息如下
{"error":false,"message":"cluster list returned","clusters":["applog","order"],"request":{"url":"/v3/kafka","host":"bigdata"}}
ip/v3/kafka/applog/consumer/buryPoint/status 可以获取集群applog consumer为buryPoint的信息
{"error":false,"message":"consumer status returned","status":{"cluster":"applog","group":"buryPoint","status":"OK","complete":1,"partitions":[],"partition_count":32,"maxlag":{"topic":"burypoint","partition":16,"owner":"","client_id":"","status":"OK","start":{"offset":1197540889,"timestamp":1568940322677,"lag":0},"end":{"offset":1197762297,"timestamp":1568941162597,"lag":0},"current_lag":16477,"complete":1},"totallag":527124},"request":{"url":"/v3/kafka/applog/consumer/buryPoint/status","host":"bigdata"}}
其他接口信息如下
第二步安装数据收集器telegraf
有一些工具可以将burrow提供的http数据收集到influxdb或者promethues.
我使用LInkedin开源的telegraf 完成这个操作。
在https://portal.influxdata.com/downloads/ 寻找适合自己机器的包
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.12.1_linux_amd64.tar.gz tar xf telegraf-1.12.1_linux_amd64.tar.gz网上很多通过rpm安装也是可以的,这里通过tar包的方式
主要是修改etc/telegraf/telegraf.conf 这个配置文件 ,增加input和output
数据是写入influxdb,所以先在influxdb建好库,这里库名是telegraf
启动nohup usr/bin/telegraf --config etc/telegraf/telegraf.conf &
第三步配置Grafana
先在grafana配置influxdb数据源
然后导入grafana模板配置,页面显示可以根据需要增删图表
模板下载地址https://grafana.com/grafana/dashboards/10207
参考文档:
Telegraf+Influxdb+Grafana构建监控平台