Kafka 安装与 Zabbix JMX 集成
Source: Dev.to
第 1 部分:Kafka 服务器安装与配置(主机端)
1. Java 安装与准备
Kafka 运行需要 Java。
sudo apt update
sudo apt install openjdk-17-jdk -y
java -version
2. 下载并安装 Kafka
下载 Kafka 3.6.1 版本,解压后移动到 /opt 目录。
cd /tmp
wget https://archive.apache.org/dist/kafka/3.6.1/kafka_2.13-3.6.1.tgz
# 解压
tar -xvzf kafka_2.13-3.6.1.tgz
# 移动
sudo mv kafka_2.13-3.6.1 /opt/kafka
# 进入目录
cd /opt/kafka
3. 启动服务(启用 JMX)
先启动 Zookeeper,然后在定义 JMX 端口(9999)后启动 Kafka。
# 启动 Zookeeper
bin/zookeeper-server-start.sh -daemon config/zookeeper.properties
# 定义 JMX 端口并启动 Kafka
export JMX_PORT=9999
bin/kafka-server-start.sh -daemon config/server.properties
4. 检查
验证服务和端口是否正常运行。
# 查看进程(应看到 Kafka 和 QuorumPeerMain)
jps
# 9999 端口是否在监听?(输出不应为空)
ss -tpln | grep 9999
第 2 部分:Zabbix 服务器端配置
1. 安装 Java Gateway
sudo apt update
sudo apt install zabbix-java-gateway -y
sudo systemctl enable --now zabbix-java-gateway
2. 配置 Zabbix Server
编辑配置文件以指明 Java Gateway。
sudo nano /etc/zabbix/zabbix_server.conf
在文件中找到并修改(或添加)以下行:
# Gateway 所在位置(与服务器在同一台机器,使用 127.0.0.1)
JavaGateway=127.0.0.1
# Gateway 监听的端口(默认 10052)
JavaGatewayPort=10052
# Java 轮询器数量(若为 0 则不工作,建议至少设为 5)
StartJavaPollers=5
3. 重启服务
sudo systemctl restart zabbix-server
第 3 部分:Zabbix Web 界面配置
在 Zabbix 中添加 Kafka 主机的步骤:
- 进入菜单: Data Collection(或 Configuration)→ Hosts → 点击右上角的 Create host 按钮。
- 填写主机信息:
- Host name:
emine-kafka(或自定义名称)。 - Templates: Apache Kafka by JMX(提供关键数据的模板)。
- Host groups: Applications 或 Linux servers。
- Host name:
- 配置接口(Interface):
- 在 Interfaces 行点击 Add,选择 JMX。
- IP Address:
192.168.100.1(Kafka 主机的 IP)。 - Port:
9999

- 保存并监控:
- 点击 Add。
- 在列表的 Availability 列中,JMX 图标应从灰色变为 绿色(可能需要 1‑2 分钟)。
第 4 部分:故障排除(SSL/Auth 错误)
如果图标未变绿且出现以下错误:
错误: SSL peer shut down incorrectly: service:jmx:rmi:///jndi/rmi://192.168.100.1:9999/jmxrmi
解决步骤
停止 Kafka,关闭 SSL/身份验证并固定 IP 地址。
cd /opt/kafka
bin/kafka-server-stop.sh
# 关闭 SSL 与 Auth,固定 Hostname(根据实际网络自行修改 IP)
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.100.1"
export JMX_PORT=9999
bin/kafka-server-start.sh -daemon config/server.properties
第 5 部分:数据验证(JmxTool 测试)
使用 JmxTool 在 Kafka 服务器上验证 Zabbix 接收到的数据是否正确。将 Zabbix 中的值与终端输出对比。
场景
- Item: Produce request total time, mean
- Key:
jmx["kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce","Mean"] - Zabbix 中显示的值:
0

验证命令(在 Kafka 服务器上执行)
cd /opt/kafka
JMX_PORT="" bin/kafka-run-class.sh kafka.tools.JmxTool \
--jmx-url service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi \
--object-name "kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce" \
--attributes Mean \
--date-format "YYYY-MM-dd HH:mm:ss"
示例输出
WARNING: The 'kafka.tools' package is deprecated...
Trying to connect to JMX url: service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi
"time","kafka.network:type=RequestMetrics,name=TotalTimeMs,request=Produce:Mean"
2025-12-08 07:21:43,0.0
2025-12-08 07:21:45,0.0
2025-12-08 07:21:47,0.0
结论: 终端输出同样为 0.0,说明 Zabbix 接收到的数据是正确的。