一、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 模块提供的接口
request | method | url format |
---|---|---|
Healthcheck | GET | /burrow/admin |
List Clusters | GET | /v3/kafka |
Kafka Cluster Detail | GET | /v3/kafka/(cluster) |
List Consumers | GET | /v3/kafka/(cluster)/consumer |
List Cluster Topics | GET | /v3/kafka/(cluster)/topic |
Get Consumer Detail | GET | /v3/kafka/(cluster)/consumer/(group) |
Consumer Group Status | GET | /v3/kafka/(cluster)/consumer/(group)/status /v3/kafka/(cluster)/consumer/(group)/lag |
Remove Consumer Group | DELETE | /v3/kafka/(cluster)/consumer/(group) |
Get Topic Detail | GET | /v3/kafka/(cluster)/topic/(topic) |
Get General Config | GET | /v3/config |
List Cluster Modules | GET | /v3/config/cluster |
Get Cluster Module Config | GET | /v3/config/cluster/(name) |
List Consumer Modules | GET | /v3/config/consumer |
Get Consumer Module Config | GET | /v3/config/consumer/(name) |
List Notifier Modules | GET | /v3/config/notifier |
Get Notifier Module Config | GET | /v3/config/notifier/(name) |
List Evaluator Modules | GET | /v3/config/evaluator |
Get Evaluator Module Config | GET | /v3/config/evaluator/(name) |
List Storage Modules | GET | /v3/config/storage |
Get Storage Module Config | GET | /v3/config/storage/(name) |
Get Log Level | GET | /v3/admin/loglevel |
Set Log Level | POST | /v3/admin/loglevel |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。