Burrow是linkedin开源的一个监控Apache Kafka的工具,burrow可以将消费者滞后检查作为一项服务来对外提供。 它监视所有消费者的承诺偏移量,并根据需要计算消费者的状态,提供HTTP endpoint接口来获取消费者状态,能够监控Consumer消费消息的延迟,从而监控应用的健康状况,并且可以同时监控多个Kafka集群。 通知器可以通过配置电子邮件或HTTP通告进行告警,而无需指定阈值。
搭建流程如下:
1、安装go,将go安装到/opt/soft下:
cd /opt/soft
wget https://dl.google.com/go/go1.10.4.linux-amd64.tar.gz
tar -zxvf go1.8.linux-amd64.tar.gz
在/data下建文件夹go,此为go项目目录,并在go下建立bin(编译完可执行文件),src(源代码),pkg(编译完文件)文件夹,并将go目录添加到环境变量,/etc/profile下:
export GOROOT=/opt/soft/go
export GOPATH=/data/go
export PATH=$PATH:$GOROOT/bin
2、安装burrow
$ go get github.com/linkedin/Burrow
$ cd $GOPATH/src/github.com/linkedin/Burrow
$ go install
3、运行:
在/data/goconfig下建立文件名为burrow.toml,并配置集群相关信息,如下:
[general]
pidfile="/data/goconfig/burrow.pid"
stdout-logfile="/data/goconfig/burrow.out"
[logging]
filename="/data/goconfig/logs/burrow.log"
level="info"
maxsize=100
maxbackups=30
maxage=10
use-localtime=true
use-compression=true
[zookeeper]
servers=[ "xxx.xxx.xxx.xxx:2181" ]
timeout=6
root-path="/burrow"
[cluster.jijin]
class-name="kafka"
servers=[ "xxx.xxx.xxx.xxx:9092" ]
topic-refresh=300
offset-refresh=60
[consumer.jijin]
class-name="kafka"
cluster="jijin"
servers=[ "xxx.xxx.xxx:9092" ]
[httpserver.default]
address=":8000"
[storage.default]
class-name="inmemory"
workers=20
intervals=15
expire-group=604800
min-distance=1
运行命令:
$GOPATH/bin/Burrow --config-dir /data/goconfig
结果为json格式的数据,实例:curl http://127.0.0.1:8000/v3/kafka/(cluster)/consumer
访问接口:
/v3/kafka | 集群列表 |
/v3/kafka/(cluster) | 某集群细节 |
/v3/kafka/(cluster)/consumer | consumer列表 |
/v3/kafka/(cluster)/topic | topic列表 |
/v3/kafka/(cluster)/consumer/(group) | 某消费者细节 |
/v3/kafka/(cluster)/consumer/(group)/lag | 某消费者lag积压值 |
/v3/kafka/(cluster)/topic/(topic) | 某topic细节 |
/v3/config | 获得general配置 |
/v3/config/cluster | 集群配置 |
/v3/admin/loglevel | 获得日志级别 |