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 startStatus 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
EOFsudo 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配置
配置完成之后的最终效果图:

Kafka系列 —— Kafka监控相关推荐

  1. Kafka系列 —— 生产实践分享

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

  2. kafka maven 依赖_SpringBoot入门建站全系列(二十八)整合Kafka做日志监控

    SpringBoot入门建站全系列(二十八)整合Kafka做日志监控 一.概述 Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端 ...

  3. SpringBoot入门建站全系列(二十八)整合Kafka做日志监控

    SpringBoot入门建站全系列(二十八)整合Kafka做日志监控 一.概述 Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端 ...

  4. 【kafka系列教程41】kafka监控

    Monitoring Kafka uses Yammer Metrics for metrics reporting in both the server and the client. This c ...

  5. Kafka系列之-Kafka监控工具KafkaOffsetMonitor配置及使用

    KafkaOffsetMonitor是一个可以用于监控Kafka的Topic及Consumer消费状况的工具,其配置和使用特别的方便.源项目Github地址为:https://github.com/q ...

  6. Kafka系列(五)、开启SASL安全认证以及配置ACL权限控制

    目录 开启SASL 控制台配置用户 ACL授权 Python客户端访问 ACL常用命令 Kafka系列: kafka 2.4.1单机版部署及使用 kafka监控系统kafka eagle安装使用 滴滴 ...

  7. Kafka系列(七)、Kafka套件 Confluent Platform 单机/集群部署

    目录 简介 单机部署 集群部署 尾巴 Kafka系列: kafka 2.4.1单机版部署及使用 kafka监控系统kafka eagle安装使用 滴滴开源的kafka-manager编译及部署使用 k ...

  8. Kafka系列(六)、Kafka开发套件kafka lenses 安装及使用(带WebUI)

    目录 介绍 安装 使用 Kafka系列: kafka 2.4.1单机版部署及使用 kafka监控系统kafka eagle安装使用 滴滴开源的kafka-manager编译及部署使用 kafka管理监 ...

  9. Kafka系列一之架构介绍和安装

    Kafka架构介绍和安装 写在前面 还是那句话,当你学习一个新的东西之前,你总得知道这个东西是什么?这个东西可以用来做什么?然后你才会去学习它,使用它.简单来说,kafka既是一个消息队列,如今,它也 ...

最新文章

  1. 互联网金融乱弹4:讨论金融系统日切处理
  2. c++函数不写return可以吗_Science: 高剂量的维生素C可以抗癌吗?
  3. 一个极好的ALV例子
  4. 2018年全国卷Ⅰ卷理科数学解析版
  5. 读入的字节都写入字节数组中_使用Java将文件读入字节数组的7个示例
  6. 4fsk调制matlab_数字调制解调技术的MATLAB与FPGA实现
  7. 计算机在矿山企业中的应用,计算机在矿山工业中的应用与发展
  8. ubuntu命令行打开vscode-insider_在 Linux 中如何从命令行查找 VirtualBox 版本
  9. 关于Android项目隐藏标题栏的方法总结
  10. 《javascript高级程序设计》核心知识总结
  11. 与英语密切联系的计算机专业,计算机专业英语
  12. JAVA入门万字总结
  13. 执行matlab 部分程序
  14. 来聊聊,今年各互联网大厂的年终奖......
  15. 省市县三级联动JS代码
  16. Git搭建私有服务器
  17. 超级记忆法之110数字编码
  18. 林雨阁读书会《老子》心得
  19. 影响未来的应用ifttt,互联网自主神经系统的又一个有力证据
  20. 停车场收费管理系统/停车场管理系统的设计与实现

热门文章

  1. 计算机科学与技术的未来发展前景
  2. Learning with Noisy Correspondence for Cross-modal Matching 文献翻译 代码简析
  3. 准备Vmware环境
  4. 【Fluent】如何快速地设置wall壁面/zones区域的边界条件boundary condition?例如当存在很多wall壁面时,快速批量地修改材料等边界条件
  5. 修复WIN7系统开机黑屏,只剩下鼠标能动的问题。
  6. 手把手教你白嫖一个服务器并搭建自己的远程Notebook
  7. 黑幕!!!威客网站七宗罪?一个威客的自诉
  8. Unity3D插件之EasyTouch5入门
  9. iOS设备尺寸、像素对照表
  10. 深圳软件测试培训:Selenium断言与验证