一文聊透如何监控 Kafka 服务

一文聊透如何监控 Kafka 服务

作者:王江华 2023-05-11 08:16:13

云计算

Kafka 今天我们来讲解几款 Kafka 常用可视化监控工具,主要有以下几个 「JConsole」、「Kafka Manager」、「Kafka Offset Explorer」、「KafkaOffsetMonitor」、「LogiKM」。

大家好,我是 华仔, 又跟大家见面了。

对于 Kafka 来说,监控始终是一个难题。目前,没有一款免费监控软件能够满足大部分用户需求,这些监控软件各有特色但都不够全面。

今天我们来讲解几款 Kafka 常用可视化监控工具,主要有以下几个 「JConsole」、「Kafka Manager」、「Kafka Offset Explorer」、「KafkaOffsetMonitor」、「LogiKM」。

这里说明下,第一个「Jconsole」是基于 JMX 的可视化监控管理工具,安装好 JDK 之后,Java 就提供了 JConsole 客户端工具,利用它可以监控 Kafka 的各项指标。其他几个都是专门用来 Kafka 集群管理与监控的。

下面分别介绍下这几款监控工具的使用。

一、JConsole

这里先简单的介绍一下 JMX,全称:Java Manangement Extensions。JMX 可以管理、监控正在运行中的 Java 程序,常用来管理「线程」、「内存」、「日志Level」、「服务重启」、「系统环境」等,由于 kafka 底层也是 基于 Java,所以也可以使用 JMX 标准来管理和监控 Kafka。

JConsole 是一种基于 JMX 的可视化监控和管理工具,从 Java 5 开始被引入, 用来监控 VM,总体来说, 它是社区自带的一个小工具,对于一般简单的监控场景,它还能应付,但是它毕竟功能有限,复杂的监控整体解决方案,还是要依靠监控框架。

  1. 修改 kakfa-server-start.sh 脚本的 JXM_PORT 配置,如下图:
export JMX_PORT="9999"

  1. 这里我们直接在 windows 上启动 JConsole,在 CMD 命令行中输入 JConsole 并回车, 如下图:

此时会调起 JConsole 的启动界面。

当弹出 “安全连接失败” 提示框,选择 “不安全的连接” 按钮, 进入 JConsole 监控的主界面, 如下图所示:

二、KafkaManager

Kafka Manager 是 yahoo 在 2015 年开源的一款 Kafka 监控软件,底层使用 Scala 语言编写,用来管理和监控 Kafka 集群。

这款软件是众多 Kafka 监控软件中的翘楚,无论是界面展示内容的丰富程度,还是管理集群功能的全面性,Kafka Manager 都数一数二。

目前 Kafka Manager 已经支持监控新版本 Consumer,如果用户在使用 Kafka Manager 时无法看到新版本的 Consumer Group  信息,那么就需要检查一下是否使用了过旧版本的 Kafka Manager。

这个管理工具可以很容易地发现分布在集群中的哪些 topic 分布不均匀,或者是分区在整个集群分布不均匀的的情况。

它支持管理多个集群、选择副本、副本重新分配以及创建 Topic。同时,这个管理工具也是一个非常好的可以快速浏览这个集群的工具,有如下功能:

  1. 管理多个kafka集群。
  2. 便捷的检查kafka集群状态(topics,brokers,备份分布情况,分区分布情况)。
  3. 选择你要运行的副本。
  4. 基于当前分区状况进行。
  5. 可以选择topic配置并创建topic(0.8.1.1和0.8.2的配置不同)。
  6. 删除topic(只支持0.8.2以上的版本并且要在broker配置中设置delete.topic.enable=true)。
  7. Topic list会指明哪些topic被删除(在0.8.2以上版本适用)。
  8. 为已存在的topic增加分区。
  9. 为已存在的topic更新配置。
  10. 在多个topic上批量重分区。
  11. 在多个topic上批量重分区(可选partition broker位置)。

kafka-manager 项目地址:https://github.com/yahoo/kafka-manager

本文我们使用版本:kafka-manager-3.0.0.5.zip,项目已改名位 CMAK,其安装和配置非常简单,可以按照下面的步骤配置 Kafka Manager。

1、在启动 Kafka 集群的命令脚本中,增加 JMX 的相关参数,否则无法使用客户端工具管理和监控 Kafka 集群。这里我们以本地虚拟机为例。

2、修改 Kafka-run-class.sh 文件,找到 JMX settings 的配置位置,增加 JMX Server 的配置信息。

#此处可以改为自己的hostname
-Djava.rmi.server.hostname=LAPTOP-3B77RHGG

3、修改 kakfa-server-start.sh 脚本的 JXM_PORT 配置,如下图:

export JMX_PORT="9999"

4、启动 kafka。

bin/kafka-server-start.sh config/server.properties &

5、下载 Kafka Manager,并解压到 /home/wangjianghua/src/ 目录下。

# github地址
https://github.com/yahoo/CMAK
# 下载版本 kafka-manager-3.0.0.5
wget https://github.com/yahoo/CMAK/releases/download/3.0.0.5/cmak-3.0.0.5.zip
# 解压文件
unzip cmak-3.0.0.5.zip

6、修改配置,进入 Kafka Manager 的 conf 目录,修改 application.conf 文件。

# 这里是指定 zookeeper 集群的地址,如果有多个,逗号隔开
cmak.zkhosts="localhost:2181"

7、启动 Kafka Manager 。

# nohup 方式
nohup bin/cmak &
# 指定参数方式启动  默认启动端口 9000
nohup bin/cmak -Dconfig.file=conf/application.conf -Dhttp.port=9000 &

8、启动成功后,输出如下日志信息。

我们使用 bin/cmak 这个命令来启动,会使用默认配置文件和端口号9000。

启动完毕后可以查看端口是否启动,由于启动过程需要一段时间,端口起来的时间可能会延后。

从日志中可以看出, Kafka Manager 将运行在 9000 端口上,使用ip地址:端口访问测试。

可以看到,此时已经启动成功了。

如果报如下错误,请升级jdk版本到11。

1、测试 KafkaManager

(1)新建 Cluster

点击【Cluster】>【Add Cluster】打开如下添加集群的配置界面:

输入集群的名字(如Kafka-Cluster-1)和 Zookeeper 服务器地址(如localhost:2181),选择最接近的Kafka版本(如2.7)

注意:如果没有在 Kafka 中配置过 JMX_PORT,千万不要选择第一个复选框。Enable JMX Polling 如果选择了该复选框,Kafka-manager 可能会无法启动。

其他 broker 相关的配置可以根据自己需要进行配置,默认情况下,点击【保存】时,会提示几个默认值为1的配置错误,需要配置为>=2的值。提示如下:

新建完成后,运行界面如下:

(2)Topic List

(3)Broker

2、管理 KafkaManager

(1)创建 Topic

点击【Topic】>【Create】可以方便的创建并配置主题。如下图所示:

(2)查看 Topic

点击【topic】下面的 topic 名称,即可查看对应 topic 信息。

三、Kafka Offset Explorer

Kafka Tool 是用来管理和使用 Kafka 集群的图形应用程序。提供了一种直观的界面,让用户可以快速查看 Kafka 集群中的对象及集群主题中存储的信息,关键功能如下:

  1. 快速查看所有 Kafka 集群,包括 Broker、主题、消费者等。
  2. 查看分区中消息的内容并添加信息消息。
  3. 查看消费者偏移量。
  4. 支持 JSON 、XML 格式输出。
  5. 添加和删除主题以及其他管理功能。
  6. 支持自定义插件。

从 Kafka Tool 官网直接下载 Kafka Offset Explorer 2.3.2 版本,下载完成后,直接按照启动即可。

添加一个 Kafka Cluster 集群并测试,直接连接测试如下:

单击“”进入 Kafka 集群的首页。

通过上面图示我们可以看到 Kafka 集群的 Broker 信息、 Topics 信息以及 Consumers 信息。

现在我们来创建一个 Topic。

1、 点击  “Browers” 集群中的 “Topics” 节点,并在右边的界面中单击。

按钮,或者右击 “Topics” 节点2、 输入 Topic 名称、分区数、每个分区的副本数,如下图所示:3、 单击 “Add” 按钮,成功创建 Topic,如下图所示:

4、现在我们来用该工具来接收 message2 上的消息数据。,选择刚创建的主题 message2,并在右边的窗口选择 “Data” 选项卡,如下图所示:

5、 启动一个 Kafka Producer 命令行终端,发送一些消息,如下图所示:

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic message2

6、这里的数据格式默认是 “Byte Array”,可以在 Properties 的设置中将其修改为 String,并单击 “Update” 按钮,如下图所示:

7、再次回到 Data 页面,此时数据将按照正确的格式展示,如下图所示:

因为中间在终端打了好多回车,所以出来也是空白值。

四、KafkaOffsetMonitor

KafkaOffsetMonitor 是一款 Kafka 开源社区提供的基于 web 界面的管理平台,可以用来实时监控 Kafka 服务的消费组以及它们所在分区的 Offset,你可以通过浏览当前的消费者组,并且每个 Topic 的所有分区的消费情况都可以进行实时监控。

它让我们很直观的知道,每个 Partition 的 Message 是否消费掉,有没有阻塞情况等等。这个 Web 管理平台保留的Partition、Offset 和它的 Consumer 的相关历史数据,我们可以通过浏览 Web 管理的相关模块,清楚的知道最近一段时间的消费情况。

该Web管理平台有以下功能:

  1. 对 Consumer 的消费监控,并列出每个 Consumer 的 Offset 数据。
  2. 保护消费者组列表信息。
  3. 每个 Topic 的所有 Partition 列表包含:Topic、Pid、Offset、LogSize、Lag 以及 Owner 等等。
  4. 浏览查阅 Topic 的历史消费信息。

它的安装比较简单,下载链接: 链接:https://pan.baidu.com/s/1Vfcfvci0g4YwSuYjcSpf0w?pwd=8484 提取码:8484。

将其放到某个目录下,然后在该目录下执行如下命令:

java -cp KafkaOffsetMonitor-assembly-0.3.0.jar \
com.quantifind.kafka.offsetapp.OffsetGetterWeb \
--offsetStorage kafka \
--zk localhost:2181 \
--port 8080 \
--refresh 10.seconds \
--retain 1.days

这里简单介绍下命令的含义:

  1. com.quantifind.kafka.offsetapp.OffsetGetterWeb 是运行的 web 监控类。
  2. –zk 用来指定 zookeeper 的地址。
  3. –port 用来指定 web 运行的端口。
  4. –refresh 、–retain 用来指定页面数据刷新的时间以及保留数据的时间。

打开浏览器访问 8080 端口,就可以打开 KafkaOffsetMonitor 的首页,如下图所示:

然后选择 “Topic List” 选项卡,就可以监控某个 Topic 中的具体消费者消息,如下图所示:

五、LogiKM

最后给大家推荐一款非常实用牛逼的监控工具, 它是滴滴开源的号称 “东半球最简单易用的一站式云原生实时流数据平台”。

可以点击官方进行学习:https://knowstreaming.com。

开发文档如下:https://doc.knowstreaming.com/product/1-brief-introduction。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/240537.html<

(0)
管理的头像管理
上一篇2025-04-23 22:15
下一篇 2025-04-23 22:16

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注