前言

本节将介绍一些关于Kafka相关指标,包括主题、分区、生产者、消费者等(并不是全部的度量指标)。
环境:
Kafka-2.1.1 + Kafka 集群

GitHub Kafka代码

1. 使用JMX 监控集群

JMX的全称为Java Management Extensions。可以管理、监控正在运行中的Java程序。常用于管理线程,内存,日志Level,服务重启,系统环境等。

  1. 开启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集群。
  1. 连接到JMX
    在控制台执行 jconsole (博主的master节点为Ubuntu):

    连接后可以看到Kafka相关信息:

    下面简单介绍一些指标。

2. broker的度量指标

博主使用 jconsole 连接 slave1:9999

  1. 非同步分区
  2. kafka JMX 过滤规则 kafka开启jmx_JMX

  3. 查看值,可以发现slave1的非同步分区数为0:
  4. kafka JMX 过滤规则 kafka开启jmx_监控Kafka_02


  5. 活跃控制器数量度量指标
  6. kafka JMX 过滤规则 kafka开启jmx_kafka JMX 过滤规则_03

  7. 值(不清楚为什么值是0,按理说成功启动的集群应该为1):
评论区有老哥指出:0表示当前broker不是集群控制器,1说明是集群控制器。所以,salve1不是当前集群控制器

kafka JMX 过滤规则 kafka开启jmx_监控Kafka_04


3. 请求处理器空闲率

kafka JMX 过滤规则 kafka开启jmx_kafka JMX 过滤规则_05


kafka JMX 过滤规则 kafka开启jmx_监控Kafka_06


值越低,表示broker的负载越高。

  1. 主题流入字节数
    博主首先启动了一个Producer程序,并控制了延时,循环向主题写入消息(代码可参考博主GitHub):
    可以看到下面第一个BytesinPerSec 的MeanRate有值,写入的主题CustomerCountry也有值,并且两者相差不大(因为只启动了一个Producer),但是其他主题如AvroData值为0。因此可以推断BytesinPerSec表示该broker所有主题的一个值的统计,而CustomerCountry表示特定的主题。
  2. kafka JMX 过滤规则 kafka开启jmx_监控Kafka_07

  3. 主题流出字节
    这里并没有启动额外的消费者读取CustomerCountry主题,但却值却不为0。原因就是,该主题存在分区副本,分区副本从分区首领复制消息使用的就是与消费者相同的机制。
  4. kafka JMX 过滤规则 kafka开启jmx_Java_08

  5. 主题消息流入度量指标
  6. kafka JMX 过滤规则 kafka开启jmx_kafka JMX 过滤规则_09

  7. 可以看到,经过限制后,该主题每秒写入月16.7个消息。
  8. kafka JMX 过滤规则 kafka开启jmx_监控Kafka_10

  9. 主题分区数量
  10. kafka JMX 过滤规则 kafka开启jmx_kafka JMX 过滤规则_11

  11. 可以看到该broker存在共存在75个分区:
  12. kafka JMX 过滤规则 kafka开启jmx_监控Kafka_12

  13. 首领数量度量指标
  14. kafka JMX 过滤规则 kafka开启jmx_kafka_13

  15. 该broker拥有66个首领分区:
  16. kafka JMX 过滤规则 kafka开启jmx_监控Kafka_14

  17. 离线分区数量度量指标
  18. kafka JMX 过滤规则 kafka开启jmx_JMX_15


  19. kafka JMX 过滤规则 kafka开启jmx_JMX_16

  20. 主题实例度量指标
  21. kafka JMX 过滤规则 kafka开启jmx_JMX_17

  22. 如:
  23. kafka JMX 过滤规则 kafka开启jmx_kafka JMX 过滤规则_18

  24. 分区实例度量指标
  25. kafka JMX 过滤规则 kafka开启jmx_Java_19

  26. 如:
  27. kafka JMX 过滤规则 kafka开启jmx_Java_20

Java虚拟机监控
  1. G1垃圾回收器度量指标
  2. kafka JMX 过滤规则 kafka开启jmx_监控Kafka_21


3. 客户端监控

生产者度量指标

下图连接到slave1:9999,可以发现没有kafka.producer,因为在slave1并没有开启Producer进程:

kafka JMX 过滤规则 kafka开启jmx_kafka_22


所以,要查看相关指标需要开启Producer进程,博主在master节点(Ubuntu系统),启动了一个Producer进程(代码可参考GitHub),连接这个进程:

kafka JMX 过滤规则 kafka开启jmx_Java_23


得到kafka.producer 的MBean:

kafka JMX 过滤规则 kafka开启jmx_监控Kafka_24

  1. kafka生产者度量指标
  2. kafka JMX 过滤规则 kafka开启jmx_kafka_25

  3. 比如:
  4. kafka JMX 过滤规则 kafka开启jmx_JMX_26


消费者度量指标

同理,需要开启一个消费者进程:

kafka JMX 过滤规则 kafka开启jmx_监控Kafka_27

  1. 消费者度量指标
  2. kafka JMX 过滤规则 kafka开启jmx_Java_28

  3. 如:
  4. kafka JMX 过滤规则 kafka开启jmx_JMX_29


到这里就介绍完了,还有很多的指标需要查阅相关文档。

完!