Kafka系列 —— Kafka监控

Kafka系列文章:
Kafka系列 —— 入门及应用场景 & 部署 & 简单测试
Kafka系列 —— Kafka核心概念
Kafka系列 —— Kafka常用命令

常见Kafka监控工具介绍

1 Kafka-web-console
地址:https://github.com/claudemamo/kafka-web-console
在这里插入图片描述
我们可以看到,对于该项目已经不再支持了,使用KafkaManager替代了

2 Kafkaoffsetmonitor
地址:https://github.com/quantifind/KafkaOffsetMonitor
该组件时间也比较久远了

3 KafkaManager
地址:https://github.com/yahoo/kafka-manager
公司目前也使用的这款监控工具

  • 不足点:没有实时显示的曲线图表
  • 优点:很多Kafka的命令直接可以通过界面化的操作,点点就能够完成了

4 Kafka-egale
地址:https://github.com/smartloli/kafka-eagle

5 AnotherKafkaMonitor
地址:https://github.com/triffic-tang/AnotherKafkaMonitor

6 Kafka-monitor
地址:https://github.com/linkedin/kafka-monitor

7 Availability-Monitor-for-Kafka
地址:https://github.com/Microsoft/Availability-Monitor-for-Kafka

8 chaperone
地址:https://github.com/uber/chaperone

9 JMXtrans + InfluxDB + Grafana实现Kafka性能指标监控
文章地址:http://www.tuicool.com/articles/ieUbaaN

10 metricbeat + Elasticsearch + Kibana
地址:https://www.elastic.co/products/beats/metricbeat

KafkaManger使用(sbt安装与编译)

1.下载sbt
地址:http://www.scala-sbt.org/download.html

[root@hadoopnn-01 app]# rz
rz waiting to receive.
Starting zmodem transfer.  Press Ctrl+C to cancel.
Transferring sbt-0.13.13.tgz...
  100%    1025 KB    1025 KB/sec    00:00:01       0 Errors  

2.解压

[root@hadoopnn-01 app]# tar -zxvf sbt-0.13.13.tgz
[root@hadoopnn-01 app]# mv sbt-launcher-packaging-0.13.13 sbt 

3.添加脚本文件

[root@hadoopnn-01 bin]# vi sbt
#!/usr/bin/env bash 

BT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar /root/learnproject/app/sbt/bin/sbt-launch.jar "$@" 

4.修改权限和环境变量

[root@hadoopnn-01 bin]# chmod u+x sbt 
[root@hadoopnn-01 bin]# vi /etc/profile 
export SBT_HOME=/root/learnproject/app/sbt 
export PATH=$SBT_HOME/bin:$SPARK_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$MAVEN_HOME/bin:$JAVA_HOME/bin:$PATH
"/etc/profile" 94L, 2265C written
[root@hadoopnn-01 bin]# source /etc/profile 

5.测试
第一次执行时,会下载一些文件包

[root@hadoopnn-01 bin]# sbt sbt-version
[root@hadoopnn-01 bin]# 

6.安装jdk1.8并配置环境变量

7.下载kafka-manager,使用sbt编绎

[root@hadoopnn-01 ~]# cd /root/learnproject/compilesoft
[root@hadoopnn-01 compilesoft]# git clone https://github.com/yahoo/kafka-manager.git
[root@hadoopnn-01 compilesoft]# cd kafka-manager/ 
[root@hadoopnn-01 kafka-manager]# sbt clean dist

8.解压

[root@hadoopnn-01 kafka-manager]# mv /root/learnproject/compilesoft/kafka-manager/target/universal/kafka-manager-1.3.2.1.zip /root/learnproject/app/
[root@hadoopnn-01 kafka-manager]# cd ../ 
[root@hadoopnn-01 app]# unzip kafka-manager-1.3.2.1.zip 
[root@hadoopnn-01 app]# cd kafka-manager-1.3.2.1/conf
[root@hadoopnn-01 conf]# vi application.conf
kafka-manager.zkhosts="192.168.1.58:2181,192.168.1.59:2181,192.168.1.60:2181/kafka" 

9.后台运行

[root@hadoopnn-01 kafka-manager-1.3.2.1]# nohup ./bin/kafka-manager -Dconfig.file=./conf/application.conf -Dhttp.port=9999 -java-home /usr/java/jdk1.8.0_102 >kafka-manager.log 2>&1 & 

web ui:http://192.168.1.55:9999/

Kafka Egal使用

[root@hadoop001 kafka]# kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
[root@hadoop001 software]# tar -xzvf kafka-eagle-bin-1.2.1.tar.gz
[root@hadoop001 software]# cd kafka-eagle-bin-1.2.1
[root@hadoop001 kafka-eagle-bin-1.2.1]# tar -xzvf kafka-eagle-web-1.2.1-bin.tar.gz
[root@hadoop001 kafka-eagle-web-1.2.1-bin]# vi conf/system-config.properties 
######################################
# multi zookeeper&kafka cluster list
######################################
kafka.eagle.zk.cluster.alias=ruozedata_cluster
ruozedata_cluster.zk.list=192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181

#kafka.eagle.zk.cluster.alias=cluster1,cluster2
#cluster1.zk.list=tdn1:2181,tdn2:2181,tdn3:2181
#cluster2.zk.list=xdn10:2181,xdn11:2181,xdn12:2181
[root@hadoop001 kafka-eagle-web-1.2.1-bin]# mkdir -p  /hadoop/kafka-egale/db/


[root@hadoop001 kafka-eagle-web-1.2.1-bin]# cd ../bin
[root@hadoop001 bin]# pwd
/opt/software/kafka-eagle-bin-1.2.1/kafka-eagle-web-1.2.1/bin

[root@hadoop001 bin]# export KE_HOME=/opt/software/kafka-eagle-bin-1.2.1/kafka-eagle-web-1.2.1
[root@hadoop001 bin]# chmod +x ke.sh
[root@hadoop001 bin]# ./ke.sh start

Status Code[0]
[Job done!]
Welcome to
    __ __    ___     ____    __ __    ___            ______    ___    ______    __     ______
   / //_/   /   |   / __/   / //_/   /   |          / ____/   /   |  / ____/   / /    / ____/
  / ,<     / /| |  / /_    / ,<     / /| |         / __/     / /| | / / __    / /    / __/   
 / /| |   / ___ | / __/   / /| |   / ___ |        / /___    / ___ |/ /_/ /   / /___ / /___   
/_/ |_|  /_/  |_|/_/     /_/ |_|  /_/  |_|       /_____/   /_/  |_|\____/   /_____//_____/   
                                                                                             

Version 1.2.1
*******************************************************************
* Kafka Eagle Service has started success!
* Welcome, Now you can visit 'http://<your_host_or_ip>:port/ke'
* Account:admin ,Password:123456
*******************************************************************
* <Usage> ke.sh [start|status|stop|restart|stats] </Usage>
* <Usage> http://ke.smartloli.org/ </Usage>
*******************************************************************

[root@hadoop001 kafka-eagle-web-1.2.1]# netstat -nlp|grep 14687
tcp        0      0 :::8048                     :::*                        LISTEN      14687/java          
tcp        0      0 ::ffff:127.0.0.1:8065       :::*                        LISTEN      14687/java          
tcp        0      0 :::8069                     :::*                        LISTEN      14687/java          
[root@hadoop001 kafka-eagle-web-1.2.1]# 

web ui:http://192.168.1.102:8048/

JMXtrans + InfluxDB + Grafana实现Kafka性能指标监控

1.kafka集群搭建

2.在Kafka上打开JMX
2.1 修改kafka-serverstart.sh文件
#修改上面的内容变成,KAFKA_HEAP_OPTS这个根据自己的主机进行配置,测试机器是4核8G,所以采用下面的配置
#这个配置成本机的IP –Djava.rmiserver.hostname
#开启jvm的rmi配置可以让kafka-manager提供更详细的kafka操作统计数据
#增加一个JMX_PORT的配置,指定一个端口用于接受外部连接,注意如部署、运行在非root用户下,必须指定1024以上端口
在这里插入图片描述

2.2 重启Kafka生效

bin/kafka-server-stop.sh
bin/kafka-server-start.sh config/server.properties &

2.3 重启后观察可以发现JMX已经启动了

ps -ef | grep kafka
netstat -an | grep 9999

3.JMXtrans部署
JMXtrans:收集来自已经启动jmx的Kafka服务的数据

[root@hadoopdn-01 app]# mkdir jmxtrans
[root@hadoopdn-01 app]# cd jmxtrans/
[root@hadoopdn-01 jmxtrans]# wget http://central.maven.org/maven2/org/jmxtrans/jmxtrans/263/jmxtrans-263-all.jar
[root@hadoopdn-01 jmxtrans]# vi kafka.json
# 见kafka.json文件,后续上传

[root@hadoopdn-01 jmxtrans]#  wget https://raw.githubusercontent.com/jmxtrans/jmxtrans/master/jmxtrans/jmxtrans.sh --no-check-certificate
[root@hadoopdn-01 jmxtrans]# chmod +x jmxtrans.sh
[root@hadoopdn-01 app]# scp -r jmxtrans root@hadoopdn-02:/root/learnproject/app/
[root@hadoopdn-01 app]# scp -r jmxtrans root@hadoopdn-03:/root/learnproject/app/  

4.jconsole相关设置与查看
打开jconsole.exe,路径:$JAVA_HOME/bin/
输入Remote Process,具体信息在kafka-server-start.sh修改的时候,加上的KAFKA_JMX_OPTS中有配置,如下进行连接:
在这里插入图片描述
弹出警告,选择Insecure即可:
在这里插入图片描述

选择Mbeans,进入到页面之后可以看见很多的指标,选择kafka.network–>RequestMetrics
–> RequestsPerSec–> FetchConsumer
选择项:kafka.network:type=RequestMetrics,name=RequestsPerSec,request=FetchConsumer:
在这里插入图片描述

查看Attributes:
在这里插入图片描述

5.模板文件test.json介绍
模板文件见test.json,里面有对应的内容,后续会上传
在这里插入图片描述
port:jmx进程的端口,这里是9999;在kafka-server-start.sh修改的时候,加上的KAFKA_JMX_OPTS中,jmx_port的端口号
host:kafka的ip
alias:别名

在这里插入图片描述
目标端写在哪里,写到时序数据库,对应的配置

在这里插入图片描述
attr就是前面的属性,Attributes values中的内容

6.InfluxDB:时序数据库
地址:https://docs.influxdata.com/influxdb/v1.2/
每一行数据都会有一个时间字段的值,如下:
2017-03-03 11:00:00.456 1 xiaoming boy 18
2017-03-03 11:00:10.356 2 xiaowang boy 45
6.1 安装

cat <<EOF | sudo tee /etc/yum.repos.d/influxdb.repo
[influxdb]
name = InfluxDB Repository - RHEL \$releasever
baseurl = https://repos.influxdata.com/rhel/\$releasever/\$basearch/stable
enabled = 1
gpgcheck = 1
gpgkey = https://repos.influxdata.com/influxdb.key
EOF

sudo yum install influxdb
sudo service influxdb start

启动服务之后,直接进入influx:
在这里插入图片描述

6.2 常用命令
未使用rfc3339:
在这里插入图片描述
在这里插入图片描述
注意:不能使用show tables命令,取而代之的是show measurements命令

对比,使用rfc3339之后:
在这里插入图片描述

7. Grafana:可视化
7.1 安装
文档:http://docs.grafana.org/installation/rpm/

7.2 web ui
open web http://ip:3000

8. 启动采集服务(需要test.json)
8.1 启动命令&test.json相关配置项解读
一般会有2种收集方式:

  • 只部署1台,配置多台去采集
  • 每台Kafka节点都部署一个(优先选择)

JMXtrans默认启动是60s秒采集一次,使用参数SECONDS_BETWEEN_RUNS=5进行控制修改时间多久采集一次

启动采集服务:

JMXTRANS_OPTS="-Dport1=9999 -Dhost1=hadoopdn-01 -Dalias1=kafka1 \
-DinfluxUrl=http://hadoopdn-04:8086/ -DinfluxDb=kafka -DinfluxUser=admin -DinfluxPwd=admin" \
SECONDS_BETWEEN_RUNS=5 \
JAR_FILE=jmxtrans-263-all.jar \
./jmxtrans.sh start test.json

启动的时候需要指定test.json文件

查看状态:

JMXTRANS_OPTS="-Dport1=9999 -Dhost1=hadoopdn-01 -Dalias1=kafka1 \
-DinfluxUrl=http://hadoopdn-04:8086/ -DinfluxDb=kafka -DinfluxUser=admin -DinfluxPwd=admin" \
SECONDS_BETWEEN_RUNS=5 \
JAR_FILE=jmxtrans-263-all.jar \
./jmxtrans.sh status test.json

采集服务启动和状态查看的具体截图:
在这里插入图片描述

test.json中部分内容的解释:
在这里插入图片描述
resultAlias中的内容代表的是采集到InfluxDB中的表名
attr中的内容代表的是采集到InfluxDB中对应表中的各个字段名

8.2 InfluxDB中查看采集到的信息
在这里插入图片描述
在这里插入图片描述
注意:
这里执行delete操作是为了清除原来操作所遗留下的信息
delete之后重新开启采集服务,重新采集入InfluxDB库就OK了

重新开启采集服务之后,发现相应的数据写入到了InfluxDB中:
在这里插入图片描述

9. Dashboards配置
配置完成之后的最终效果图:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值