10-监控Kafka(JMX)

前言

本节将介绍一些关于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. 非同步分区
    在这里插入图片描述
    查看值,可以发现slave1的非同步分区数为0:
    在这里插入图片描述
  2. 活跃控制器数量度量指标
    在这里插入图片描述
    值(不清楚为什么值是0,按理说成功启动的集群应该为1):
评论区有老哥指出:0表示当前broker不是集群控制器,1说明是集群控制器。所以,salve1不是当前集群控制器

在这里插入图片描述
3. 请求处理器空闲率
在这里插入图片描述
在这里插入图片描述
值越低,表示broker的负载越高。

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

  2. 主题流出字节
    这里并没有启动额外的消费者读取CustomerCountry主题,但却值却不为0。原因就是,该主题存在分区副本,分区副本从分区首领复制消息使用的就是与消费者相同的机制。
    在这里插入图片描述

  3. 主题消息流入度量指标
    在这里插入图片描述
    可以看到,经过限制后,该主题每秒写入月16.7个消息。
    在这里插入图片描述

  4. 主题分区数量
    在这里插入图片描述
    可以看到该broker存在共存在75个分区:
    在这里插入图片描述

  5. 首领数量度量指标
    在这里插入图片描述
    该broker拥有66个首领分区:
    在这里插入图片描述

  6. 离线分区数量度量指标
    在这里插入图片描述
    在这里插入图片描述

  7. 主题实例度量指标
    在这里插入图片描述
    如:
    在这里插入图片描述

  8. 分区实例度量指标
    在这里插入图片描述
    如:在这里插入图片描述

Java虚拟机监控
  1. G1垃圾回收器度量指标
    在这里插入图片描述

3. 客户端监控

生产者度量指标

下图连接到slave1:9999,可以发现没有kafka.producer,因为在slave1并没有开启Producer进程:
在这里插入图片描述
所以,要查看相关指标需要开启Producer进程,博主在master节点(Ubuntu系统),启动了一个Producer进程(代码可参考GitHub),连接这个进程:
在这里插入图片描述
得到kafka.producer 的MBean:
在这里插入图片描述

  1. kafka生产者度量指标
    在这里插入图片描述
    比如:
    在这里插入图片描述
消费者度量指标

同理,需要开启一个消费者进程:
在这里插入图片描述

  1. 消费者度量指标
    在这里插入图片描述
    如:
    在这里插入图片描述
到这里就介绍完了,还有很多的指标需要查阅相关文档。

参考:https://blog.csdn.net/u013256816/article/details/53524884

完!

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是使用 Zabbix 进行 Kafka 监控的详细步骤: 1. 在 Zabbix 服务器上安装 Zabbix Java Gateway,该网关将充当 Zabbix 服务器和 Kafka Broker 之间的中间件。在 Ubuntu 上,可以使用以下命令进行安装: ``` sudo apt-get update sudo apt-get install zabbix-java-gateway ``` 2. 安装 Zabbix Java Gateway 后,需要编辑其配置文件 zabbix_java_gateway.conf,以便将其配置为监听 Kafka Broker。在该文件中,需要将“LISTEN_IP”和“LISTEN_PORT”设置为 Kafka Broker 的 IP 地址和端口。例如: ``` LISTEN_IP=192.168.1.100 LISTEN_PORT=10052 ``` 3. 接下来,需要在 Kafka Broker 上安装 JMX 暴露器。该暴露器将允许 Zabbix Java Gateway 访问 Kafka Broker 的 JMX 指标。可以按照以下步骤进行安装: - 编辑 Kafka Broker 的配置文件 server.properties,将以下行添加到该文件末尾: ``` # Enabling JMX exporter kafka.metrics.reporters=com.salesforce.kafka.test.KafkaJmxReporter kafka.jmx.rmi.host=127.0.0.1 kafka.jmx.rmi.port=9999 ``` - 下载 Kafka JMX 暴露器,并将其复制到 Kafka Broker 的 libs 目录中: ``` wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.12.0/jmx_prometheus_javaagent-0.12.0.jar sudo cp jmx_prometheus_javaagent-0.12.0.jar /usr/local/kafka/libs/ ``` - 创建一个配置文件,用于指定要监视的 JMX 指标: ``` # kafka-0-8-2.yml - pattern : kafka.server<type=BrokerTopicMetrics, name=BytesInPerSec, topic=*, brokerId=*><>OneMinuteRate name: kafka_broker_topic_in_bytes_per_sec{topic="$1", broker="$2"} help: "The incoming byte rate of the given topic/partition in bytes/sec." type: GAUGE ``` - 启动 Kafka Broker,并将 JMX 暴露器添加到其 JVM 参数中: ``` /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties -javaagent:/usr/local/kafka/libs/jmx_prometheus_javaagent-0.12.0.jar=9999:/usr/local/kafka/config/kafka-0-8-2.yml ``` 4. 在 Zabbix 服务器上创建一个新的主机,并将其配置为监视 Kafka Broker。在主机配置中,需要指定主机名称、可用性和性能监视器类型以及主机的 IP 地址。 5. 接下来,需要在主机配置中添加一个新的 JMX 监视器。在监视器配置中,需要指定以下参数: - 监视器类型:JMX 监视器 - 监视器名称:任何有意义的名称 - JMX 主机:Kafka Broker 的 IP

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值