在Ubuntu上实现Kafka集群监控的方法
这是目前最灵活、可扩展的监控方案,适合生产环境。
docker-compose.yml文件,配置command参数指定所有Broker地址(如--kafka.server=broker1:9092 --kafka.server=broker2:9092)和Kafka版本(如--kafka.version=3.6.0),并映射端口(如9308:9308)。启动服务后,Kafka Exporter会暴露/metrics接口,包含Broker、Topic、消费者组等指标。prometheus.yml文件,添加kafka-exporter job,设置metrics_path: /metrics、scrape_interval: 15s(采集间隔),并在static_configs中添加Kafka Exporter实例的地址(如targets: ['ubuntu-host:9308']),确保Prometheus能定期拉取指标。3993的官方看板),可展示集群状态、Topic分区分布、消费者组Lag(消息堆积)、Broker磁盘使用率等实时指标。通过Grafana的告警功能,可设置阈值告警(如Lag超过1000条、CPU使用率超过80%),通过邮件、钉钉等方式通知运维人员。Kafdrop是基于Web的Kafka监控工具,适合快速查看集群状态。
docker-compose.yml文件,配置KAFKA_BROKERCONNECT参数为Kafka Broker地址(如broker1:9092,broker2:9092),映射端口(如9000:9000)。启动容器后,访问http://ubuntu-host:9000即可进入Web界面。Kafka自带的命令行工具无需额外安装,适合快速查看集群状态或排查问题。
kafka-topics.sh --list --bootstrap-server localhost:9092(替换为实际Broker地址);kafka-consumer-groups.sh --list --bootstrap-server localhost:9092;kafka-consumer-groups.sh --describe --bootstrap-server localhost:9092 --group consumer-group-name;kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic topic-name。Kafka通过JMX(Java Management Extensions)暴露内部指标,适合需要深度监控的场景。
kafka-server-start.sh)中添加JMX参数,设置JMX端口(如JMX_PORT=9999)和远程访问权限(如-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false,生产环境建议开启认证)。localhost:9999),查看吞吐量(messages-in、bytes-in)、延迟(request-latency-avg)、分区Leader分布等底层指标。JMX Exporter可将JMX指标转换为Prometheus格式,集成到Prometheus+Grafana体系中。kafka.eagle.zk.cluster.alias=cluster1、kafka.eagle.zk.hosts=zk1:2181,zk2:2181),启动后通过Web界面即可监控集群。application.conf文件,设置ZooKeeper地址(kafka-manager.zkhosts="zk1:2181"),启动后即可添加集群并监控。