前言
本节将介绍一些关于Kafka相关指标,包括主题、分区、生产者、消费者等(并不是全部的度量指标)。
环境:
Kafka-2.1.1 + Kafka 集群
GitHub 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 连接 slave1:9999
- 非同步分区
- 查看值,可以发现slave1的非同步分区数为0:
- 活跃控制器数量度量指标
- 值(不清楚为什么值是0,按理说成功启动的集群应该为1):
评论区有老哥指出:0表示当前broker不是集群控制器,1说明是集群控制器。所以,salve1不是当前集群控制器
3. 请求处理器空闲率
值越低,表示broker的负载越高。
- 主题流入字节数
博主首先启动了一个Producer程序,并控制了延时,循环向主题写入消息(代码可参考博主GitHub):
可以看到下面第一个BytesinPerSec 的MeanRate有值,写入的主题CustomerCountry也有值,并且两者相差不大(因为只启动了一个Producer),但是其他主题如AvroData值为0。因此可以推断BytesinPerSec表示该broker所有主题的一个值的统计,而CustomerCountry表示特定的主题。 - 主题流出字节
这里并没有启动额外的消费者读取CustomerCountry主题,但却值却不为0。原因就是,该主题存在分区副本,分区副本从分区首领复制消息使用的就是与消费者相同的机制。 - 主题消息流入度量指标
- 可以看到,经过限制后,该主题每秒写入月16.7个消息。
- 主题分区数量
- 可以看到该broker存在共存在75个分区:
- 首领数量度量指标
- 该broker拥有66个首领分区:
- 离线分区数量度量指标
- 主题实例度量指标
- 如:
- 分区实例度量指标
- 如:
Java虚拟机监控
- G1垃圾回收器度量指标
3. 客户端监控
生产者度量指标
下图连接到slave1:9999,可以发现没有kafka.producer,因为在slave1并没有开启Producer进程:
所以,要查看相关指标需要开启Producer进程,博主在master节点(Ubuntu系统),启动了一个Producer进程(代码可参考GitHub),连接这个进程:
得到kafka.producer 的MBean:
- kafka生产者度量指标
- 比如:
消费者度量指标
同理,需要开启一个消费者进程:
- 消费者度量指标
- 如:
到这里就介绍完了,还有很多的指标需要查阅相关文档。
完!