前言
本节将介绍一些关于Kafka相关指标,包括主题、分区、生产者、消费者等(并不是全部的度量指标)。
环境:
Kafka-2.1.1 + Kafka 集群
1. 使用JMX 监控集群
JMX的全称为Java Management Extensions。可以管理、监控正在运行中的Java程序。常用于管理线程,内存,日志Level,服务重启,系统环境等。
- 开启JMX 端口
开启端口有如下两种方式:
- 在执行启动Kafka命令使用如下步骤:
export JMX_PORT=9999
kafka-server-start.sh -daemon /home/hadoop/kafka-2.1.1/config/server.properties
- 在脚本 kafka-run-class.sh 中加入:JMX_PORT=9999 (每个节点都需要,博主使用这种方式)
然后重启Kafka集群。
- 连接到JMX
在控制台执行 jconsole (博主的master节点为Ubuntu):
连接后可以看到Kafka相关信息:
下面简单介绍一些指标。
2. broker的度量指标
博主使用 jconsole 连接 slave2:9999
-
非同步分区
查看值,可以发现博主的集群非同步分区数为0: -
活跃控制器数量度量指标
值(不清楚为什么值是0,按理说成功启动的集群应该为1): -
请求处理器空闲率
值越低,表示broker的负载越高。 -
主题流入字节数
博主首先启动了一个Producer程序,并控制了延时,循环向主题写入消息(代码可参考博主GitHub):
可以看到下面第一个BytesinPerSec 的MeanRate有值,写入的主题CustomerCountry也有值,并且两者相差不大(因为只启动了一个Producer),但是其他主题如AvroData值为0。因此可以推断BytesinPerSec表示该broker所有主题的一个值的统计,而CustomerCountry表示特定的主题。 -
主题流出字节
这里并没有启动额外的消费者读取CustomerCountry主题,但却值却不为0。原因就是,该主题存在分区副本,分区副本从分区首领复制消息使用的就是与消费者相同的机制。 -
主题消息流入度量指标
可以看到,经过限制后,该主题每秒写入月16.7个消息。 -
主题分区数量
可以看到该broker存在共存在75个分区: -
首领数量度量指标
该broker拥有66个首领分区: -
离线分区数量度量指标
-
主题实例度量指标
如: -
分区实例度量指标
如:
Java虚拟机监控
- G1垃圾回收器度量指标
3. 客户端监控
生产者度量指标
下图连接到slave2:9999,可以发现没有kafka.producer,因为在slave2并没有开启Producer进程:
所以,要查看相关指标需要开启Producer进程,博主在master节点(Ubuntu系统),启动了一个Producer进程(代码可参考GitHub),连接这个进程:
得到kafka.producer 的MBean:
- kafka生产者度量指标
比如:
消费者度量指标
同理,需要开启一个消费者进程:
- 消费者度量指标
如:
到这里就介绍完了,还有很多的指标需要查阅相关文档。
参考:https://blog.csdn.net/u013256816/article/details/53524884