1. 启用Kafka JMX监控(基础前提)
Kafka通过JMX(Java Management Extensions)暴露内部指标,是监控的核心数据源。需修改Kafka启动脚本(kafka-server-start.sh
),添加以下JMX配置:
export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<your_kafka_broker_ip>"
此配置允许远程访问JMX端口(默认9999
),若需安全控制,可开启authenticate
和ssl
选项(需额外配置认证文件)。
2. 使用Kafka自带命令行工具(快速排查)
Kafka自带的命令行工具可直接监控集群状态,无需额外安装:
kafka-topics.sh --bootstrap-server <broker_ip>:9092 --describe
(显示Topic的分区、副本、Leader状态);kafka-consumer-groups.sh --bootstrap-server <broker_ip>:9092 --describe --group <group_name>
(显示消费偏移量、滞后量LAG
);kafka-run-class.sh kafka.tools.JmxTool --object-name kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec --jmx-url service:jmx:rmi:///jndi/rmi://<broker_ip>:9999/jmxrmi --reporting-interval 5000
(实时监控每秒消息摄入量)。3. 部署Kafka Exporter + Prometheus + Grafana(可视化监控)
这是Debian上最流行的第三方监控方案,适合大规模集群:
docker-compose.yml
:version: '3.1'
services:
kafka-exporter:
image: bitnami/kafka-exporter:latest
ports:
- "9308:9308"
environment:
KAFKA_BROKERS: "<broker1_ip>:9092,<broker2_ip>:9092"
启动服务:docker-compose up -d
,Kafka Exporter会暴露/metrics
接口(端口9308
)。/etc/prometheus/prometheus.yml
,添加Job:scrape_configs:
- job_name: 'kafka'
static_configs:
- targets: ['<debian_host_ip>:9308']
重启Prometheus:systemctl restart prometheus
。sudo apt install grafana
),添加Prometheus为数据源(http://localhost:9090
),导入Kafka监控面板(如ID21078
,来自starsliao/Prometheus项目),即可查看Broker、Topic、消费者组的实时指标(如吞吐量、延迟、Lag)。4. 使用Kafdrop(Web界面管理)
Kafdrop是基于Web的轻量级监控工具,适合快速查看Topic和消费者组信息:
docker run -d --rm -p 9000:9000 \
-e KAFKA_BROKERCONNECT="<broker_ip>:9092" \
-e SERVER_SERVLET_CONTEXTPATH="/" \
obsidiandynamics/kafdrop
访问http://<debian_host_ip>:9000
,即可查看Topic列表、分区详情、消费者组状态,支持创建/删除Topic等操作。5. 使用Kafka Manager(集群管理)
Kafka Manager是Yahoo开源的集群管理工具,提供图形界面查看集群状态、Broker信息、Topic配置:
wget https://github.com/yahoo/CMAK/archive/v1.3.0.tar.gz && tar xvf v1.3.0.tar.gz
),修改conf/application.conf
中的Kafka集群配置(kafka-clusters
字段),启动:bin/kafka-manager -Dconfig.file=conf/application.conf
;http://<debian_host_ip>:9000
,登录后即可管理集群(需配置管理员账号)。6. 日志监控(故障排查)
Kafka日志包含运行状态、错误信息,可通过以下方式监控:
log4j.properties
(位于config
目录),设置关键日志级别(如log4j.logger.kafka=INFO
);tail -f /var/log/kafka/server.log
(默认日志路径),及时发现ERROR
或WARN
级别的日志(如Broker宕机、磁盘空间不足)。