Ubuntu Kafka监控设置指南
在Ubuntu环境下,监控Kafka集群的性能与状态可通过命令行工具(快速排查)、第三方监控方案(全面可视化与告警)实现。以下是具体设置步骤:
通过Kafka自带的脚本可快速查看集群基础状态,适合日常运维排查:
kafka-topics.sh --list --bootstrap-server localhost:9092(替换为实际Broker地址),列出集群中所有Topic。kafka-consumer-groups.sh --list --bootstrap-server localhost:9092,获取所有消费者组ID。kafka-consumer-groups.sh --describe --bootstrap-server localhost:9092 --group <group_id>,查看指定消费者组的消费偏移量、lag(消息堆积)等信息。kafka-console-producer.sh --broker-list localhost:9092 --topic <topic_name>(输入消息后按Ctrl+D发送)。kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic <topic_name> --from-beginning(从最早消息开始消费)。Kafka通过JMX(Java Management Extensions)暴露内部指标(如吞吐量、延迟、请求队列长度),需配置JMX端口并通过客户端查看:
kafka-server-start.sh(位于config/目录),添加以下参数:export JMX_PORT="9999" # 设置JMX端口(如9999) export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=<broker_ip>" # 允许远程访问(替换<broker_ip>为实际IP) 保存后重启Kafka集群使配置生效。jconsole(需安装JDK),选择“远程进程”,输入<broker_ip>:9999,点击“连接”(不安全连接可选),进入后可查看Kafka的线程、内存、GC、请求等指标。适用场景:需要实时监控、历史数据存储、自定义仪表板及告警的规模化集群。
docker-compose.yml文件:version: '3' services: kafka_exporter: image: danielqsj/kafka_exporter ports: - "9308:9308" # Prometheus抓取端口 environment: - KAFKA_BROKERS=<broker1_ip>:9092,<broker2_ip>:9092 # 多个Broker用逗号分隔 - KAFKA_VERSION=<your_kafka_version> # 如2.8.1 docker-compose up -d。prometheus.yml,添加Kafka Exporter的job:scrape_configs: - job_name: 'kafka' static_configs: - targets: ['localhost:9308'] # Kafka Exporter地址 重启Prometheus使配置生效。http://localhost:3000,账号admin/admin),添加Prometheus为数据源。3086,官方Kafka Exporter看板),选择Prometheus数据源,即可查看集群状态、Topic分区、消费者组lag等可视化图表。groups: - name: kafka_alerts rules: - alert: HighCPUUsage expr: process_cpu_seconds_total > 80 for: 5m labels: severity: warning annotations: summary: "Kafka CPU usage is high (instance {{ $labels.instance }})" - alert: HighConsumerLag expr: kafka_consumer_lag > 1000 for: 10m labels: severity: critical annotations: summary: "High consumer lag detected (instance {{ $labels.instance }})" 在Grafana中配置Alertmanager通知渠道(如邮件、Slack、企业微信),实现告警推送。kafdrop/kafdrop镜像,配置Kafka broker地址:docker run -d -p 9000:9000 -e KAFKA_BROKERCONNECT=<broker_ip>:9092 kafdrop/kafdrop http://localhost:9000,即可查看集群状态。cmak-3.0.0.5.zip),解压后修改conf/application.conf中的cmak.zkhosts(Zookeeper地址),启动bin/cmak(默认端口9000)。http://localhost:9000,添加Kafka集群即可管理。kafka-offset-monitor jar包,执行:java -cp kafka-offset-monitor-assembly-0.4.6.jar \ com.quantifind.kafka.offsetapp.OffsetGetterWeb \ --zk <zookeeper_address> --port 8080 http://localhost:8080,查看Topic与消费者组的offset关系。以上方案覆盖了从基础到高级的Kafka监控需求,可根据集群规模、技术栈选择合适的工具组合。例如,小型集群可使用命令行+Kafdrop快速查看状态;大型集群建议采用Prometheus+Grafana实现自动化监控与告警。