一、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=100maxbackups=30maxage=10use-localtime=falseuse-compression=true[zookeeper]servers=[ “10.102..:2181”,“10.102..:2181”,“10.102..: 2181” ]timeout=6root-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=120offset-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=20intervals=15expire-group=604800min-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=60timeout=5keepalive=30extras={ 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=truethreshold=2请输入代码2、启动 配置完成后,输入命令启动:./burrow –config-dir ./config & 3、接收通知notifier.default 的配置中,class-name 为http,提供一个接受notice的接口:接口格式大概为:@RequestMapping("/api”)@ResponseBodypublic String event(@RequestBody String json){ …….. return “success”;}三、附录burrow http 模块提供的接口requestmethodurl formatHealthcheckGET/burrow/adminList ClustersGET/v3/kafkaKafka Cluster DetailGET/v3/kafka/(cluster)List ConsumersGET/v3/kafka/(cluster)/consumerList Cluster TopicsGET/v3/kafka/(cluster)/topicGet Consumer DetailGET/v3/kafka/(cluster)/consumer/(group)Consumer Group StatusGET/v3/kafka/(cluster)/consumer/(group)/status /v3/kafka/(cluster)/consumer/(group)/lagRemove Consumer GroupDELETE/v3/kafka/(cluster)/consumer/(group)Get Topic DetailGET/v3/kafka/(cluster)/topic/(topic)Get General ConfigGET/v3/configList Cluster ModulesGET/v3/config/clusterGet Cluster Module ConfigGET/v3/config/cluster/(name)List Consumer ModulesGET/v3/config/consumerGet Consumer Module ConfigGET/v3/config/consumer/(name)List Notifier ModulesGET/v3/config/notifierGet Notifier Module ConfigGET/v3/config/notifier/(name)List Evaluator ModulesGET/v3/config/evaluatorGet Evaluator Module ConfigGET/v3/config/evaluator/(name)List Storage ModulesGET/v3/config/storageGet Storage Module ConfigGET/v3/config/storage/(name)Get Log LevelGET/v3/admin/loglevelSet Log LevelPOST/v3/admin/loglevel