kafka maven没有下载_kafka监控管理工具测评

一、Kafka Manager(开发人员爆款)

(1)如何搭建

  • 环境要求
a、jdk1.8 
b、kafka集群10.96.101.194:9092,10.96.84.247:9092,10.96.92.223:9092(测试用的是CDH,CDH离线安装请移至CDH 测试环境使用文档,在线安装https://www.jianshu.com/p/d2c524ec0d1b) 
c、系统:Linux spark-master 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 
  • 下载kafka manager
a、Git地址:https://github.com/yahoo/kafka-manager 
b、如果下载的是源码,需要进行编译,比较懒的可以从下面地址直接下载编译好的kafka-manager-1.3.3.7.zip 
https://pan.baidu.com/s/1qYifoa4 密码:el4o 
  • 解压(略过)
  • 修改配置文件:conf/application.properties
#kafka-manager.zkhosts="localhost:2181"       ##注释这一行,下面添加一行 
kafka-manager.zkhosts="10.96.101.194:2181,10.96.84.247:2181,10.96.92.223:2181" 
  • 启动
./bin/kafka-manager -Dconfig.file=conf/application.conf -Dhttp.port=9001 ##默认端口是9000 
  • 界面配置Kafka集群 http://10.96.98.4:9001/

9e7b1d72df8c87b3fe131c6dc731f8dc.png

(2)它能做什么

  • 监控(对于部分kafka broker和topic监控指标的获取,需要开启JMX轮训)
    • 开启JMX(上图中的三个红色框框)
      • 对消息监控
        a、Enable JMX Polling 影响如下指标的查看

b7d030d6a7e4ce9108ad947b95b90e42.png

a2f5d3999b9a74ce3858469c252ded6a.png

b、Poll consumer informatein影响在消费者页面和topic页面查看消费信息

edbb48289a27a5a132cb3ab6806afc47.png

885cc6b8c1ec86aa0510e5af9d1477c1.png

c、topic层面的监控、统计,包括每个topic分区数、占用的broker、broker覆盖率、副本数、broker倾斜率等

813b7c6fec7482aa0e1d6d64e71f0a73.png

d、brokers层面的的监控、统计,包括每个broker包含的topics、partitions、messages

2cb4479299f7fd5e33a24693ac974237.png

e、cluster层面的监控、统计

de453fefba40116af665bb2c7eab6ad9.png
  • 操作(主要是针对topic)

9d88747ec81e04d41c95a187dbf48c96.png

(3)谈谈一些参数

  • Brokers Skew% (broker 倾斜率):该topic占有的broker中,拥有超过该topic平均分区数的broker所占的比重
比如:我们有3个分区,3个副本的topic,该topic一共有3*3=9个分区,
分布在3个broker上,平均每一个broker应该拥有3个分区。
3个broker并没有哪个拥有超过平均分区数,所以Brokers Skew%为0 

f7cef544fb0569ce4b4d136d60ee15e9.png
  • Brokers Leader Skew% (broker leader 分区倾斜率):该topic占有的broker中,拥有超过该topic平均leader分区数的broker所占的比例
比如:我们有3个分区,3个副本的topic,该topic一共有3个Leader分区,
分布在3个broker上,平均每一个broker应该拥有1个Leader分区。
3个broker并没有哪个拥有超过平均Leader分区数,所以Brokers Leader Skew%为0 

d7fcf46def27bceb5b494afd744079f0.png
  • Under Replicated%:该topic下副本处于失效或者失败的比率
  • 失效或者失败是指副本不处于ISR队列中(如果一个follower在replica.log.max.ms时间内没有发送fetch或者消费leader日志到结束的offser,leader将从ISR中移除这个folloer,并认为这个follower已经挂掉)
  • 小结
    • Broker Skew: 反映broker的I/O压力。如果该指标过高,说明 topic 的分区均不不好,topic 的稳定性弱
    • Broker Leader Skew:数据的生产和消费进程都只于Leader分区打交道。该指标过高,说明 topic 的分流做的不够好
    • Under Replicated: 该指标过高时,表明 topic 的数据容易丢失,数据没有复制到足够的 broker 上

二、KafkaOffsetMonitor(部署方便、主要是对消费情况的监控)

(1)如何搭建

  • 由于官网上的jar所引用的js,css是国外的地址,由于国内网络环境的问题,可能会访问不了,导致KafkaOffsetMonitor页面没有任何数据显示。需要把jar里的js,css替换成本地的。下载地址:
    • https://download.csdn.net/download/guang564610/10371172
    • https://pan.baidu.com/s/1A_Ukh6FlvOYkUws7kUPAqg
  • 下载完之后直接运行命令
nohup java -cp KafkaOffsetMonitor-assembly-0.4.6-SNAPSHOT.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb --offsetStorage kafka --kafkaBrokers 10.96.101.194:9092,10.96.84.247:9092,10.96.92.223:9092 --kafkaSecurityProtocol PLAINTEXT --zk 10.96.98.4:2181,10.96.84.247:2181,10.96.92.223:2181 --port 8089 --refresh 10.seconds --retain 1.days --dbName offsetapp_kafka & 

(2)界面

  • cluster

4c1a3a2524c7895ab668fa3473067831.png

3a17718b68227ca65ce1d0230fe27439.png
  • 消费组消费情况

c493b0f7e8aa8f79c66032f646670ad1.png

5058459a01cc84e6b8b8a495b21e6a08.png

(2)小结

  • KafkaOffsetMonitor0.2及之前的版本已经没人维护更新了,之后的版本由于国内网络环境的问题需要替换jar包里的js和css,也是有点坑~
  • 只支持监控,功能不够全,界面酷炫还算凑合部署搭建是真的方便,运行一个jar包即可

三、JMXtrans+InfluxDB+Grafana实现性能指标监控(监控神器、定制化、混合风~)

(1)架构图(居然还有架构图…)

  • jmxtrans通过jxm收集kafka的监控指标(所以kafka不要忘记开启jmx,参考https://www.jianshu.com/p/de4b4cbb0f3c)写到InfluxDb,Grafana读取InfluxDb绘图并做展示

a175e1ee0a1283a75838a5adfd2c7f98.png

(2)如何搭建

  • 环境要求
a、influxdb-1.5.3:时间序列数据库,内置HTTP API,适合实时响应查询 
b、jmxtrans-266:自动获取jmx对外暴露的jvm内部的一些指标,并按照某种格式输出到其他应用程序(比如influxdb) 
c、grafana-5.4.2-1:灵活丰富的可视化面板,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源(都没听过...) 
d、kafka集群10.96.101.194:9092,10.96.84.247:9092,10.96.92.223:9092(测试用的是CDH,CDH离线安装请移至CDH 测试环境使用文档,在线安装https://www.jianshu.com/p/d2c524ec0d1b) 
c、系统:Linux spark-master 3.10.0-514.16.1.el7.x86_64 #1 SMP Wed Apr 12 15:04:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 
  • 那就开始安装吧
安装influxDb
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.5.3.x86_64.rpm ## 获取下rmp包 
yum localinstall influxdb-1.5.3.x86_64.rpm ## 安装 
    • 安装jmxtrans
wget http://central.maven.org/maven2/org/jmxtrans/jmxtrans/266/jmxtrans-266.rpm ## 获取下rmp包 
rpm -ivh jmxtrans-266.rpm ## 安装 
  • 安装grafana(grafana安装官网https://grafana.com/grafana/download/4.6.3提供了很多安装方式,看自己喜好)
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.0.3-1.x86_64.rpm ## 获取下rmp包  yum localinstall grafana-5.0.3-1.x86_64.rpm ## 安装 
  • 安装完了那就开始启动吧
    • 启动influxDb
// 第一种启动方式 
/etc/init.d/influxdb start  
//第二种启动方式 
service influxdb start  
//这两种启动方式都FAILED...查了半天  
Starting influxdb... 
could not open session 
influxdb process was unable to start [ FAILED ] 
!!!!!!正确的启动姿势(官网说启动的时候不用指定配置文件的额 !!!!!! 
influxd -config /etc/influxdb/influxdb.conf 
    • 启动jmxtrans
//启动 
/etc/init.d/jmxtrans start 
//jmxtrans启动成功之后会默认会去读取/var/lib/jmxtrans下的配置文件然后去采集  
//启动之后查看/var/log/jmxtrans/jmxtrans.log日志:Error parsing json 
//好吧,查看/var/lib/jmxtrans 发现有几个空的json文件(空文件也会解析失败),删了重启ok 
/etc/init.d/jmxtrans restart 
    • 启动grafana
//启动 
service grafana-server start 
/etc/rc.d/init.d/grafana-server start 
//这两种启动方式都FAILED(又来...),而且没有任何日志输出,面向谷歌编程也没查到任何信息(主要没有日志,不知道怎么查...绝望) 
// 被逼无奈 只能在/etc/init.d/grafana-server启动文件中echo日志排查 
//发现在执行action $"Starting $DESC: ..." su -s /bin/sh -c "nohup ${DAEMON} ${DAEMON_OPTS} >> /dev/null 3>&1 &" $GRAFANA_USER 2> /dev/null后就退出了 
// 单独执行下${DAEMON} ${DAEMON_OPTS}即/usr/sbin/grafana-server --pidfile=/var/run/grafana-server.pid --config=/etc/grafana/grafana.ini  
--packaging=rpm cfg:default.paths.provisioning=/etc/grafana/provisioning cfg:default.paths.data=/var/lib/grafana  
cfg:default.paths.logs=/var/log/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins 
//终于报错了!!:Grafana-server Init Failed: Could not find config defaults, make sure homepath command line parameter is set or working directory is homepath 
//找不到默认的配置文件??执行命令时所在的目录难道还有要求?? 
//好吧先cd /usr/share/grafana然后执行/usr/sbin/grafana-server --config=/etc/grafana/grafana.ini 
// 启动成功了...哭... 
  • 需要的组件都成功启动了,应该只剩下(1)配置怎么通过jmxtrans把kafka jmx数据以及其他所需要的jmx数据采集到influxDb(2)Grafana配置influxDb数据源进行展示
    • kafka/thread/gc等jmx数据==>InfluxDb(jmxtrans登场)
      • jmxtrans是默认读取/var/lib/jmxtrans下的配置文件去采集数据的,分为全局指标和topic指标
        • 全局指标是指每个kafka节点的指标
          • 每秒输入的字节流量
"obj" : "kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec" 
"attr" : [ "Count" ] 
"resultAlias":"BytesInPerSec" 
"tags"     : {"application" : "BytesInPerSec"} 
          • 每秒输输出的字节流量
"obj" : "kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec" 
"attr" : [ "Count" ] 
"resultAlias":"BytesOutPerSec" 
"tags"     : {"application" : "BytesOutPerSec"} 
 
          • 每秒拒绝的字节流量
"obj" : "kafka.server:type=BrokerTopicMetrics,name=BytesRejectedPerSec" 
"attr" : [ "Count" ] 
"resultAlias":"BytesRejectedPerSec" 
"tags"     : {"application" : "BytesRejectedPerSec"} 
          • 每秒FetchFollower的请求次数
"obj" : "kafka.network:type=RequestMetrics,name=RequestsPerSec,request=FetchFollower" 
"attr" : [ "Count" ] 
"resultAlias":"RequestsPerSec" 
"tags"     : {"request" : "FetchFollower"} 
          • 每秒FetchConsumer的请求次数
"obj" : "kafka.network:type=RequestMetrics,name=RequestsPerSec,request=FetchConsumer" 
"attr" : [ "Count" ] 
"resultAlias":"RequestsPerSec" 
"tags"     : {"request" : "FetchConsumer"}  
          • 内存使用的使用情况
"obj" : "java.lang:type=Memory" 
"attr" : [ "HeapMemoryUsage", "NonHeapMemoryUsage" ] 
"resultAlias":"MemoryUsage" 
"tags"     : {"application" : "MemoryUsage"} 
          • GC的耗时和次数
"obj" : "java.lang:type=Threading" 
"attr" : [ "PeakThreadCount","ThreadCount" ] 
"resultAlias":"Thread" 
"tags"     : {"application" : "Thread"} 
          • 线程的使用情况
"obj" : "java.lang:type=Threading" 
"attr" : [ "PeakThreadCount","ThreadCount" ] 
"resultAlias":"Thread" 
"tags"     : {"application" : "Thread"} 
          • 还有很多(具体看jvm kafka…)
        • topic指标
          • falcon_monitor_us每秒的写入流量
"kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec,topic=falcon_monitor_us" 
"attr" : [ "Count" ] 
"resultAlias":"falcon_monitor_us" 
"tags"     : {"application" : "BytesInPerSec"} 
          • falcon_monitor_us每秒的输出流量
"kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec,topic=falcon_monitor_us" 
"attr" : [ "Count" ] 
"resultAlias":"falcon_monitor_us" 
"tags"     : {"application" : "BytesOutPerSec"} 
          • falcon_monitor_us每秒写入消息的数量
"obj" : "kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=falcon_monitor_us" 
"attr" : [ "Count" ] 
"resultAlias":"falcon_monitor_us" 
"tags"     : {"application" : "MessagesInPerSec"} 
          • falcon_monitor_us在每个分区最后的Offset
"obj" : "kafka.log:type=Log,name=LogEndOffset,topic=falcon_monitor_us,partition=*" 
"attr" : [ "Value" ] 
"resultAlias":"falcon_monitor_us" 
"tags"     : {"application" : "LogEndOffset"} 
          • 还有很多(具体看jvm kafka…)
      • 来一个完整的配置文件吧 base_10.96.92.223.json8.7 KBfalcon_monitor_us_223.json2 KB
      • 来看看是否采集到了所需的数据(激动~)

c21ee819e66f2751a4a3e92faabeef50.png
    • InfluxDb==>Grafana (纯界面操作!!!最后一步了!!!)
      • 添加数据源

0cc2966a0f06b6f098c455ed3f966127.png

cef76ba02e33a1aa45049070c61c3856.png

54793f07698de1cefe093f1f0fd77bb6.png
      • 定制化图表类型

bf4f06fb3d8a0d44184b606f3fdd6f20.png
      • 定制化指标(Query)

540da2ecf331521b41d02d8ae7cc1d56.png
      • 最终效果

1ca9436b3fd5a5b3bb839c8afc7d87e1.png

(3)感觉怎么样

  • 图表功能把其他两款秒成渣渣,定制化功能灵活到让人“为所欲为”
  • 一劳永逸,以后想展示其他zk数据?hdfs数据?jvm数据?flume数据?你采集就完事了~
  • 只能监控,不能操作
  • 搭建时需要不断踩坑,让人抓狂~学习成本相对较高(有付出才有回报)

四、大佬自己看看喜欢哪款

  • 已部署地址(基于cdh http://10.96.98.4:7180 中的kafka集群)
    • Kafka Manager:http://10.96.98.4:9001
    • KafkaOffsetMonitor:http://10.96.101.194:8089/
    • JMXtrans + InfluxDB + Grafana: http://10.96.92.223:3000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值