资讯专栏INFORMATION COLUMN

Burrow 使用记录

chenatu / 3356人阅读

摘要:它监视所有消费者的承诺偏移量,并根据需要计算消费者的状态,提供接口来获取消费者状态,能够监控消费消息的延迟从而监控应用的健康状况,并且可以同时监控多个集群。通过配置的间隔时间,定期的获取的状态,并发送相关满足配置的消息提醒。

一、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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33999.html

相关文章

  • 15岁的澳洲创业家:为何我要开源失败的创业项目

    摘要:年仅的悉尼少年创业失败,决定将他的创业项目开源,他在自己的博客上解释了这样做的原因不是所有的创业项目会成功。事实上,既然你在读我的博客,那么你多半知道大多数的创业项目会失败。几乎就是我期望的。 年仅15的悉尼少年Nathan Feiglin创业失败,决定将他的创业项目开源, 他在自己的博客上解释了这样做的原因: showImg(http://segmentfault.com/img/...

    buildupchao 评论0 收藏0
  • 开源区块链Tendermint开发详解

    摘要:课程概述本课程适合希望开发自己的专有区块链的语言工程师,课程内容如下第一章课程简介简单介绍的定位特点以及对于开发者而言与以太坊的区别。课程地址区块链开发详解 简介 tendermint是一个开源的完整的区块链实现,可以用于公链或联盟链,其官方定位 是面向开发者的区块链共识引擎: showImg(https://segmentfault.com/img/remote/1460000016...

    wenshi11019 评论0 收藏0
  • DataPipeline |《Apache Kafka实战》作者胡夕:Apache Kafka监控与

    摘要:主机监控个人认为对于主机的监控是最重要的。在实际监控时可以有意识地验证这一点。另外还有两个线程池空闲使用率小关注,最好确保它们的值都不要低于,否则说明已经非常的繁忙。此时需要调整线程池线程数。 showImg(https://segmentfault.com/img/bVbgpkO?w=1280&h=720); 胡夕,《Apache Kafka实战》作者,北航计算机硕士毕业,现任某互金...

    lvzishen 评论0 收藏0
  • DataPipeline |《Apache Kafka实战》作者胡夕:Apache Kafka监控与

    摘要:主机监控个人认为对于主机的监控是最重要的。在实际监控时可以有意识地验证这一点。另外还有两个线程池空闲使用率小关注,最好确保它们的值都不要低于,否则说明已经非常的繁忙。此时需要调整线程池线程数。 showImg(https://segmentfault.com/img/bVbgpkO?w=1280&h=720); 胡夕,《Apache Kafka实战》作者,北航计算机硕士毕业,现任某互金...

    walterrwu 评论0 收藏0
  • Kafka消息系统基础知识索引

    摘要:一些观念的修正从版本开始,的标语已经从一个高吞吐量,分布式的消息系统改为一个分布式流平台。不仅用在吞吐量高的大数据场景,也可以用在有事务要求的业务系统上,但性能较低。消息系统的作用削峰用于承接超出业务系统处理能力的请求,使业务平稳运行。 我们在《360度测试:KAFKA会丢数据么?其高可用是否满足需求?》这篇文章中,详细说明了KAFKA是否适合用在业务系统中。但有些朋友,还不知道KAF...

    cgspine 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<