# Kafka_深入探秘者(10):kafka 监控

Kafka_深入探秘者(10):kafka 监控

一、kafka JMX

1、JMX :全称 Java Managent Extension

  • 在实现 Kafka 监控系统的过程中,首先我们要知道监控的数据从哪来,Kafka 自身提供的监控指标(包括 broker 和主题的指标,集群层面的指标通过各个 broker 的指标累加来获取)都可以通过 JMX(Java Managent Extension) 来进行获取。

  • 在使用 JMX 之前首先要确保 Kafka 开启了 JMX 的功能(默认是关闭的)。

  • kafka 官网中 http://kafka.apache.org/082/documentation.html#monitoring 解释。

2、添加 JMX_PORT=9999 参数,启动 kafka, 确保 kafka 开启了 Jmx 监控


# 切换到 kafka-01 安装目录:
cd /usr/local/kafka/kafka-01/# 添加 JMX_PORT=9999 参数,启动 kafka, 确保 kafka 开启了 Jmx 监控
JMX PORT-9999 bin/kafka-server-start.sh config/server.properties# 切换到 kafka-02 安装目录:
cd /usr/local/kafka/kafka-02/# 添加 JMX_PORT=9988 参数,启动 kafka, 确保 kafka 开启了 Jmx 监控
JMX PORT-9999 bin/kafka-server-start.sh config/server.properties# 切换到 kafka-03 安装目录:
cd /usr/local/kafka/kafka-03/# 添加 JMX_PORT=9977 参数,启动 kafka, 确保 kafka 开启了 Jmx 监控
JMX PORT-9999 bin/kafka-server-start.sh config/server.properties

3、打开 ZooInspector 可视化工具,进行查看监控。

开启 JMX 之后会在 Zookeeper 的 /brokers/ids/ 节点中有对应的呈现 (jmx_port字段对应的值)。

ZooInspector.png

二、kafka 编程获取指标

1、jConsole 工具的使用

在开启 JMX 之后最简单的监控指标的方式就是使用 JDK 套件下面的 JConsole 工具,可以通过 jconsole 连接 service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi 或者 localhost:9999 来查看相应的数据值。

jconsole.png
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、在 kafka_learn 工程模块中,创建 kafka 通过编程获取 kafka 监控指标 类 JmxConnection.java

/***  kafka_learn\src\main\java\djh\it\kafka\learn\chapter10\JmxConnection.java**  2024-6-27 创建 kafka 通过编程获取 kafka 监控指标 类 JmxConnection.java*/
package djh.it.kafka.learn.chapter10;import javax.management.MBeanServerConnection;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;public class JmxConnection {private String ipAndPort;private String jmxURL;MBeanServerConnection conn = null;public JmxConnection(String ipAndPort){this.ipAndPort = ipAndPort;}public boolean init(){jmxURL = "service:jmx:rmi:///jndi/rmi://" + ipAndPort + "/jmxrmi";try {JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);JMXConnector connector = JMXConnectorFactory.connect(serviceURL,null);conn = connector.getMBeanServerConnection();if(conn == null){return false;}}catch (Exception e){e.printStackTrace();}return true;}public double getMsgInPerSec(){String objectName = "kafka.server:type=BrokerTopicMetrics, name=MessagesInPerSec";try {ObjectName objectName1 = new ObjectName(objectName);Object val = conn.getAttribute(objectName1, "OneMinuteRate");if(val != null){return (double)(Double) val;}}catch (MalformedObjectNameException e){e.printStackTrace();}return 0.0;}public static void main(String[] args) {//你的虚拟机IP地址JmxConnection jmxConnection = new JmxConnection("172.18.30.110:9999");jmxConnection.init();System.out.println(jmxConnection.getMsgInPerSec());}
}

3、启动 JmxConnection.java 类,进行测试。

三、kafka 监控指标了解

1、kafka 当中关键监控指标: broker 监控指标

1.1 活跃控制器

该指标表示 broker 是否就是当前的集群控制器,其值可以是0或!。如果是1,表示 broker 就是当前的控制器任何时候,都应该只有一个 broker 是控制器,而且这个 broker 必须一直是集群控制器。如果出现了两个控制器,说明有一个本该退出的控制器线程被阻 塞了,这会导致管理任务无陆正常执行,比如移动分区。为了解决这个问题,需要将这两 个 broker 重启,而且不能通过正常的方式重启,因为此时它们无陆被正常关闭。

# 值区间:01
kafka.controller:type=KafkaController,name=ActiveControllerCount
1.2 请求处理器空闲率

Kafka 使用了两个线程地来处理客户端的请求:网络处理器线程池和请求处理器线程池。 网络处理器线程地负责通过网络读入和写出数据。这里没有太多的工作要做,也就是说,不用太过担心这些线程会出现问题。请求处理器线程地负责处理来自客户端的请求,包括从磁盘读取消息和往磁盘写入消息。因此,broker 负载的增长对这个线程池有很大的影响。

kafka.server:type=KafkaRequestHandlerPool,name=RequestHandlerAvgIdlePercent
1.3 主题流入字节

主题流入字节速率使用 bis 来表示,在对 broker 接收的生产者客户端悄息流量进行度量时,这个度量指标很有用。该指标可以用于确定何时该对集群进行扩展或开展其他与规模增长 相关的工作。它也可以用于评估一个 broker 是否比集群里的其他 broker 接收了更多的流 量,如果出现了这种情况,就需要对分区进行再均衡。

kafka.server:type-BrokerTopicMetrics,name-BytesInPerSec
  • RateUni.t这是速率的时间段,在这里是“秒\这两个属性表明,速率是通过 bis 来表示的,不管它的值是基于多长的时间段算出的平均 值。速率还有其他 4个不同粒度的属性。
  • OneMi.nuteRate 前1分钟的平均值。
  • Fi.ve问i.nuteRate 前5分钟的平均值。
  • Fi.fteenMi.nuteRate 前 15 分钟的平均值。
  • MeanRate 从 broker启动到目前为止的平均值。
1.4 主题流出字节

主题流出字节速率与流入字节速率类似,是另一个与规模增长有关的度量指标。流出字节速 率显示的是悄费者从broker读取消,息的速率。流出速率与流入速率的伸缩方式是不一样的,这要归功于 Kafka 对多消费者客户端的支持。

kafka.server:type=BrokerTopicMetrics,name=BytesOutPersec
1.5 主题流入的消息

之前介绍的字节速率以字节的方式来表示 broker 的流量, 而消息速率则以每秒生成消息个 数的方式来表示流量,而且不考虑消息的大小。这也是一个很有用的生产者流量增长规模 度量指标。它也可以与字节速率一起用于

1.6分区数量

broker 的分区数量一般不会经常发生改变,它是指分配给 broker 的分区总数。它包括 broker 的每一个分区副本,不管是首领还是跟随者

kafka.server:type.ReplicaManager,name PartitionCount
1.7 首领数量

该度量指标表示 broker 拥有的首领分区数量。与 broker 的其他度量一样,该度量指标也应 该在整个集群的 broker 上保持均等。我们需要对该指析|进行周期性地检查,井适时地发出 告警,即使在副本的数量和大小看起来都很完美的时候,它仍然能够显示出集群的不均衡 问题。因为 broker 有可能出于各种原因释放掉一个分区的首领身份,比如 Zookeeper 会话 过期,而在会话恢复之后,这个分区并不会自动拿回首领身份(除非启用了自动首领再均 衡功能)。在这些情况下,该度量指标会显示较少的首领分区数,或者直接显示为零。这 个时候需要运行一个默认的副本选举,重新均衡集群的首领。

kafka.server:type=ReplicaManager,name-LeaderCount

2、kafka 主题分区监控指标

broker 的度量指标描述了 broker 的一般行为,除此之外,还有很多主题实例和分区实例的度盘指标。

2.1 主题实例的度量指标

主题实例的度量指标与之前描述的 broker 度量指标非常相似。事实上,它们之间唯一的区 别在于这里指定了主题名称,也就是说,这些度量指标属于某个指定的主题。主题实例的 度量指标数量取决于集群主题的数量,而且用户极有可能不会监控这些度量指标或设置告 警。它们一般提供给客户端使用,客户端依此评估它们对 Kafka 的使用情况,并进行问题 调试。

2.2 分区实例的度量指标

分区实例的度量指标不如主题实例的度量指标那样有用。另外,它们的数量会更加庞大,因为几百个主题就可能包含数千个分区。不过不管怎样,在某些情况下,它们还是有一定用处的。 Partition size 度量指标表示分区当前在磁盘上保留的数据量。

如果把它们组合在一起,就可以表示单个主题保留的数据量,作为客户端配额的依据。同一 个主题的两个不同分区之间的数据量如果存在差异,说明消,息并没有按照生产消息的键 进行均句分布。 LOgsegment count 指标表示保存在磁盘上的日志片段的文件数量,可以与 Partition size 指标结合起来,用于跟踪资糠的使用情况。

3、生产者监控指标

新版本 Kafka 生产者客户端的度量指标经过调整变得更加简洁,只用了少量的 MBean。相 反,之前版本的客户端(不再受支持的版本)使用了大量的 MBean,而且度量指标包含了 大量的细节(提供了大量的百分位和各种移动平均数)。这些度量指标提供了很大的覆盖 面,但这样会让跟踪异常情况变得更加困难。生产者度盐指标的 MBean 名字里都包含了生产者的客户端ID。在下面的示例里,客户端 ID 使用 CLIENTID 表示,brokerID 使用 BROKERID 表示,主题的名字使用 TOPICNAME 表示,

kafka.server:type=BrokerTopicMetrics,name=ProduceMessageConversionsPerSec
kafka.server:type=BrokerTopicMetrics,name=TotalProduceRequestsPerSec
4、消费者监控指标

与新版本的生产者客户端类似,新版本的消费者客户端将大量的度量指标属性塞进了少数 的几个 MBean 里

kafka. consumer:type=consumer-metrics,client-id=CLIENTID

kafka. consumer:type=consumer-metrics,client-id-CLIENTIDkafka, consumer:type=consumer-fetch-manager-metrics,client-id-CLIENTID

5、集群消息监控系统: Kafka Eagle

在开发工作当中,消费 Kafka 集群中的消息时,数据的变动是我们所关心的,当业务并不复杂的前提下,我们可以使用 Kafka 提供的命令工具,配合 Zookeeper 客户端工具,可以很方便的完成我们的工作。随着业务的复杂化,Group 和 Topic 的增加,此时我们使用 Kafka 提供的命令工具,已预感到力不从心,这时候 Kafka 的监控系统此刻便尤为显得重要,我们需要观察消费应用的详情。监控系统业界有很多杰出的开源监控系统。我们在早期,有使用 KafkaMonitor 和 Kafka Manager 等,不过随着业务的快速发展,以及互联网公司特有的一些需求,现有的开源的监控系统在性能、扩展性、和 DEVS 的使用效率方面,已经无法满足了。因此,我们在过去的时间里,从互联网公司的一些需求出发,从各位 DEVS 的使用经验和反馈出发,结合业界的一些开源的 Kafka 消息监控,用监控的一些思考出发,设计开发了现在 Kafka 集群消息监控系统: Kafka Eagle。

四、kafka 小结:

第1章 初识 kafka

第2章 kafka 生产者

第3章 kafka 消费者

第4章 kafka 主题 topic

第5章 kafka 分区

第6章 kafka 物理存储

第7章 kafka 稳定性

第8章 kafka 高级应用

第9章 kafka 集群管理

第10章 kafka 监控

上一节关联链接请点击
# Kafka_深入探秘者(9):kafka 集群管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/862428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue中批量下载图片只能下载一张的解决方案

使用iframe下载 let addressList [https:1,https:2];// 使用iframefor (let i 0; i < addressList.length; i) {const iframe document.createElement("iframe");iframe.style.display "none"; // 防止影响页面iframe.style.height 0; // 防止影…

管理的核心是管人,管人的核心就是这3条,看懂的是高手

管理的核心是管人&#xff0c;管人的核心就是这3条&#xff0c;看懂的是高手 一&#xff1a;管欲 每个人都有欲望&#xff0c;无可厚非。管理者的任务就是利用欲望&#xff0c;管理欲望&#xff0c;通过欲望来达到管人的目的。 最需要管理的就是以下两种&#xff1a; 1、金…

普乐蛙景区9d电影体验馆商场影院娱乐设备旋转飞行影院

今天与大家聊聊VR娱乐新潮流&#xff0c;我们普乐蛙的新品——旋转飞行影院&#xff01;裸眼7D环幕影院&#xff0c;话不多说上产品&#xff01;我们通过亲身体验来给大家讲讲这款高性价比新品的亮点。 想象一下走上电动伸缩梯&#xff0c;坐进动感舱&#xff0c;舱门缓缓合上&…

点击获取2024SIAL西雅国际食品展上海展后报告

随着2024年SIAL 西雅展&#xff08;上海&#xff09;的圆满落幕&#xff0c;我们不仅见证了一场食品与饮料行业的国际盛会&#xff0c;更是感受到了上海这座城市独有的魅力与活力。在这里&#xff0c;我们回顾了上海展的辉煌成就&#xff0c;同时&#xff0c;我们也满怀期待地展…

pytorch-模型训练

目录 1. 模型训练的基本步骤1.1 train、test数据下载1.2 train、test数据加载1.3 Lenet5实例化、初始化loss函数、初始化优化器1.4 开始train和test 2. 完整代码 1. 模型训练的基本步骤 以cifar10和Lenet5为例 1.1 train、test数据下载 使用torchvision中的datasets可以方便…

如何在Postman中模拟表单数据

在Postman中模拟表单数据主要涉及到在发送HTTP请求时&#xff0c;正确地设置请求的Body部分以模拟表单的提交。以下是在Postman中模拟表单数据的步骤&#xff0c;按照清晰的格式进行分点表示和归纳&#xff1a; 一、创建新的POST请求 打开Postman工具&#xff0c;点击左上角的…

Kubernetes面试整理-不同CNI插件的作用和区别

容器网络接口(Container Network Interface,CNI)插件在 Kubernetes 中负责管理 Pod 的网络连接。CNI 插件提供了 Pod 之间以及 Pod 与外部世界之间的网络通信能力。以下是一些常见的 CNI 插件及其作用和区别: 1. Flannel 作用: ● Flannel 是一种简单的网络层实现,专注于…

第4章 客户端-客户端管理

1. 客户端API 1.1client list client list命令能列出与Redis服务端相连的所有客户端连接信息。 127.0.0.1:6379> client list id254487 addr10.2.xx.234:60240 fd1311 name age8888581 idle8888581 flagsN db0 sub0 psub0 multi-1 qbuf0 qbuf-free0 obl0 oll0 omem0 events…

MySQL数据库基础练习系列——教务管理系统

项目名称与项目简介 教务管理系统是一个旨在帮助学校或教育机构管理教务活动的软件系统。它涵盖了学生信息管理、教师信息管理、课程管理、成绩管理以及相关的报表生成等功能。通过该系统&#xff0c;学校可以更加高效地处理教务数据&#xff0c;提升教学质量和管理水平。 1.…

5款提高工作效率的免费工具推荐

SimpleTex SimpleTex是一款用于创建和编辑LaTeX公式的简单工具。它能够识别图片中的复杂公式并将其转换为可编辑的数据格式。该软件提供了一个直观的界面&#xff0c;用户可以在编辑LaTeX代码的同时实时预览公式的效果&#xff0c;无需额外的编译步骤。此外&#xff0c;SimpleT…

生命在于学习——Python人工智能原理(2.5.1)

五、Python的类与继承 5.1 Python面向对象编程 在现实世界中存在各种不同形态的事物&#xff0c;这些事物之间存在各种各样的联系。在程序中使用对象来映射现实中的事物&#xff0c;使用对象之间的关系描述事物之间的联系&#xff0c;这种思想用在编程中就是面向对象编程。 …

C++笔记:实现一个字符串类(构造函数、拷贝构造函数、拷贝赋值函数)

实现一个字符串类String&#xff0c;为其提供可接受C风格字符串的构造函数、析构函数、拷贝构造函数和拷贝赋值函数。 声明依赖文件 其中ostream库用于打印标准输入输出&#xff0c;cstring库为C风格的字符串库 #include <iostream> #include <cstring> 声明命…

关于代购系统带来的便利性的研究报告

摘要&#xff1a; 本研究报告旨在深入探讨代购系统为消费者带来的显著便利性。通过对相关数据的分析、用户体验的调查以及行业发展的研究&#xff0c;详细阐述了代购系统在商品获取、价格优势、服务质量等方面的突出表现&#xff0c;以及其对现代消费模式的积极影响。 一、引言…

【python】OpenCV—Color Correction

文章目录 cv2.aruco 介绍imutils.perspective.four_point_transform 介绍skimage.exposure.match_histograms 介绍牛刀小试遇到的问题 参考学习来自 OpenCV基础&#xff08;18&#xff09;使用 OpenCV 和 Python 进行自动色彩校正 cv2.aruco 介绍 一、cv2.aruco模块概述 cv2.…

kubeadm 部署k8s集群[单master]

kubeadm 部署k8s集群 主机名地址角色配置kub-k8s-master192.168.75.100主节点2核2G 50Gkub-k8s-node1192.168.75.103工作节点1核2G 50Gkub-k8s-node2192.168.75.104工作节点/haproxy1核2G 50G 一、安装docker[集群] # 一键安装docker脚本 curl -L https://gitea.beyourself.…

语言模型之LLaMA

LLaMA&#xff08;Large Language Model Meta AI&#xff09;是由 Meta&#xff08;前 Facebook&#xff09;开发的大型语言模型&#xff0c;它是一种基于深度学习的自然语言处理&#xff08;NLP&#xff09;模型&#xff0c;旨在在多个语言理解和生成任务中达到高水平的性能。…

骨传导耳机哪个牌子值得入手?精选热销榜TOP5推荐!

短短数年&#xff0c;骨传导耳机的市场规模迅速扩大&#xff0c;其受欢迎程度可见一斑。但身为拥有十二年经验的音频专家&#xff0c;我在此有义务提醒大家&#xff0c;在选择骨传导耳机时一定要谨慎。面对市面上的众多品牌&#xff0c;一定不要盲目入手&#xff0c;不然很容易…

leetcode提速小技巧

据我所知&#xff0c;leetcode可能是按最难那个用例给你打分的&#xff0c;非难题的用时好坏不完全看复杂度&#xff0c;因为可能都差不多&#xff0c;O(n/2)和O(n)虽然都是O(n)&#xff0c;但是反应到成绩上是不同的&#xff0c;所以&#xff0c;尽可能的在条件足够的情况下提…

CVE-2018-8120漏洞提权:Windows 7的安全剖析与实战应用

CVE-2018-8120漏洞提权&#xff1a;Windows 7的安全剖析与实战应用 在网络安全的世界里&#xff0c;漏洞利用常常是攻击者用来获取系统控制权的捷径。2018年发现的CVE-2018-8120漏洞&#xff0c;针对Windows 7操作系统&#xff0c;提供了一个这样的途径。本文将深入分析这一漏…

Java鲜花下单预约系统源码小程序源码

让美好触手可及 &#x1f338;一、开启鲜花新篇章 在繁忙的都市生活中&#xff0c;我们总是渴望那一抹清新与美好。鲜花&#xff0c;作为大自然的馈赠&#xff0c;总能给我们带来无尽的惊喜与愉悦。但你是否曾因为工作繁忙、时间紧张而错过了亲自挑选鲜花的机会&#xff1f;今…