Burrow 使用记录

一、Burrow介绍

Burrow是linkedin开源的一个监控Apache Kafka的工具,burrow可以将消费者滞后检查作为一项服务来对外提供。 它监视所有消费者的承诺偏移量,并根据需要计算消费者的状态,提供HTTP endpoint接口来获取消费者状态,能够监控Consumer消费消息的延迟,从而监控应用的健康状况,并且可以同时监控多个Kafka集群。 通知器可以通过配置电子邮件或HTTP通告进行告警,而无需指定阈值。

Burrow的模块:Burrow采用模块化的设计,将所需要的工作分成多个子系统模块。
1、Clusters: clusters运行一个kafka client,client 定期的更新topic 列表以及topic每个partition的 head offset。
2、Consumers: consumers 从存储库里获取consumer group 的相关信息(根据kafka版本的不同,获取的位置不同,可能是zk 、kafka的__consumer_offsets topic 等
)。
3、Storage:storage 负责存储Burrow系统的所有数据内容。
4、Evaluator:evaluator接收storage里的kafka 消费组的数据并计算出kafka consumer group的状态。
5、Notifier:Notifier 通过配置的间隔时间,定期的获取consumer group的状态,并发送相关满足配置的消息提醒。
6、HTTP Server:此模块提供了获取consumer gropu 信息的接口。

二、安装和配置:

Burrow使用GO语言编写,可以下载源码编译打包。也可以直接下载编译完成的安装包,地址为:https://github.com/linkedin/B... 下载完成后,解压 tar –xzvf *.tar.gz 。
1、配置

解压完成进入config 目录,修改burrow.toml 配置文件,我们的配置文件内容为:
[general]
pidfile="burrow.pid"
stdout-logfile="burrow.out"
access-control-allow-origin="mysite.example.com"

[logging]
filename="logs/burrow.log"
level="info"
maxsize=100
maxbackups=30
maxage=10
use-localtime=false
use-compression=true

[zookeeper]
servers=[ "10.102.*.*:2181","10.102.*.*:2181","10.102.*.*: 2181" ]
timeout=6
root-path="/burrow"

[client-profile.financial]
client-id="burrow"
kafka-version="1.1.0"

[cluster.financial]
class-name="kafka"
servers=[ "10.102.*.*:9092","10.102.*.*:9092" ]
topic-refresh=120
offset-refresh=30

[consumer.financial]
class-name="kafka"
cluster="financial"
servers=[ "10.102.*.*:9092","10.102.*.*:9092" ]
client-profile="financial"
group-blacklist="^(console-consumer-|python-kafka-consumer-|quick-).*$"
group-whitelist=""

[consumer.financiali_zk]
class-name="kafka_zk"
cluster="financial"
servers=[ "10.102.*.*:2181","10.102.*.*:2181" ]


[httpserver.default]
address=":8004"

[storage.default]
class-name="inmemory"
workers=20
intervals=15
expire-group=604800
min-distance=1

[evaluator.mystorage]
class-name="caching"
expire-cache=10

[notifier.default]
class-name="http"
url-open="http://10.103.*.*:8006/test/api"
url-close="http://10.103.*.*:8006/test/api"
interval=60
timeout=5
keepalive=30
extras={ api_key="REDACTED", app="burrow", tier="STG", fabric="mydc" }
template-open="config/default-http-post.tmpl"
template-close="config/default-http-delete.tmpl"
method-close="DELETE"
send-close=true
threshold=2
请输入代码

2、启动
配置完成后,输入命令启动:./burrow --config-dir ./config &

3、接收通知

notifier.default 的配置中,class-name 为http,提供一个接受notice的接口:接口格式大概为:

@RequestMapping("/api")
@ResponseBody
public String event(@RequestBody String json){
    ........
    return "success";
}

三、附录

burrow http 模块提供的接口

requestmethodurl format
HealthcheckGET/burrow/admin
List ClustersGET/v3/kafka
Kafka Cluster DetailGET/v3/kafka/(cluster)
List ConsumersGET/v3/kafka/(cluster)/consumer
List Cluster TopicsGET/v3/kafka/(cluster)/topic
Get Consumer DetailGET/v3/kafka/(cluster)/consumer/(group)
Consumer Group StatusGET/v3/kafka/(cluster)/consumer/(group)/status /v3/kafka/(cluster)/consumer/(group)/lag
Remove Consumer GroupDELETE/v3/kafka/(cluster)/consumer/(group)
Get Topic DetailGET/v3/kafka/(cluster)/topic/(topic)
Get General ConfigGET/v3/config
List Cluster ModulesGET/v3/config/cluster
Get Cluster Module ConfigGET/v3/config/cluster/(name)
List Consumer ModulesGET/v3/config/consumer
Get Consumer Module ConfigGET/v3/config/consumer/(name)
List Notifier ModulesGET/v3/config/notifier
Get Notifier Module ConfigGET/v3/config/notifier/(name)
List Evaluator ModulesGET/v3/config/evaluator
Get Evaluator Module ConfigGET/v3/config/evaluator/(name)
List Storage ModulesGET/v3/config/storage
Get Storage Module ConfigGET/v3/config/storage/(name)
Get Log LevelGET/v3/admin/loglevel
Set Log LevelPOST/v3/admin/loglevel

相关推荐