Kafka在Linux上的监控指标有哪些
小樊
43
2025-12-30 19:30:06
Kafka在Linux上的监控指标全景
一 主机与操作系统层
- 资源与负载:CPU使用率/Load、内存使用率、磁盘I/O使用率与队列、网络I/O与带宽占用、TCP连接数、打开文件数、inode使用率。这些指标用于判断是否存在资源瓶颈或异常增长,例如网络或磁盘接近饱和时会影响吞吐与延迟。建议结合阈值基线进行持续观测与告警。
二 JVM与Broker线程池
- JVM健康:Full GC次数与停顿时长、GC日志(如 kafkaServer-gc.log)、堆内存使用与活跃对象大小、应用线程总数。Kafka自0.9.0.0起默认使用G1 GC,Full GC为单线程且停顿长,需重点监控与调优。
- 线程池与网络:NetworkProcessorAvgIdlePercent(网络线程池平均空闲率)、RequestHandlerAvgIdlePercent(I/O线程池平均空闲率)。经验上应长期**> 30%**,过低意味着线程池繁忙,需扩容或分流。
三 Broker核心业务指标 JMX
- 吞吐与请求:AllTopicsMessagesInPerSec / AllTopicsBytesInPerSec / AllTopicsBytesOutPerSec(消息/字节速率)、Produce/Fetch-RequestsPerSec(请求速率)、LogFlushRateAndTimeMs(刷盘速率与耗时)。
- 副本与Leader:UnderReplicatedPartitions(未充分同步分区数,期望为0)、LeaderCount / PartitionCount(应在各Broker间均衡)、ISRShrinksPerSec / ISRExpandsPerSec(ISR收缩/扩容频次,异常波动需排查)、LeaderElectionRateAndTimeMs、UncleanLeaderElectionsPerSec(期望为0)。
- 请求时延拆解:Produce/Fetch-TotalTimeMs、QueueTimeMs、LocalTimeMs、RemoteTimeMs、ResponseSendTimeMs,用于定位瓶颈在队列、本地处理、远程等待或响应发送哪个环节。
- 生产与Fetch Purgatory:ProducerRequestPurgatory / FetchRequestPurgatory 的 PurgatorySize,反映因 ack/超时等策略而暂挂的请求数。以上指标均可通过 JMX 获取,是容量与稳定性诊断的关键。
四 消费者与客户端视角
- 消费延迟与速率:消费者组维度的records-lag / records-lead(最大滞后与领先量)、最小fetch请求速率(应**> 0** 才能持续跟上)、以及join rate / sync rate(反映Rebalance频率)。这些指标直接表征消费健康度与再均衡成本。
- Producer视角:关注request-latency(请求延时)与发送线程(如kafka-producer-network-thread)存活,延时升高或线程异常会导致吞吐骤降。
- 客户端主机网络:端到端RTT与丢包率,有助于区分网络问题与应用层瓶颈。
五 主题分区与消费者组 命令行与可视化
- 命令行巡检:kafka-topics.sh(主题与分区、副本状态)、kafka-consumer-groups.sh(消费组、滞后与提交情况),适合日常核查与故障定位。
- 可视化与告警集成:Prometheus + Grafana + Kafka Exporter 构建时序监控与仪表盘;Burrow 专注消费者滞后与消费健康;Confluent Control Center 提供商业化集中监控与告警;Kafdrop / EFAK / Kafka Manager 辅助主题/分区/消费组的可视化管理。