kafka监控
Kafka 监控详解:基于 Yammer Metrics 与 JMX 的监控体系
Kafka 内置了完善的监控机制,核心依赖 Yammer Metrics 框架收集和报告集群与客户端的运行指标(metrics),并默认通过 JMX(Java Management Extensions) 暴露这些指标,便于通过工具(如 JConsole、VisualVM)或监控系统(如 Prometheus + Grafana)进行可视化和告警。本文将详细介绍 Kafka 的监控体系、核心指标及常用监控工具。
监控基础:Yammer Metrics 与 JMX
Yammer Metrics 框架
Yammer Metrics 是一个 Java 性能监控库,Kafka 用它来定义和收集各类指标,支持多种指标类型:
- Gauge:瞬时值(如当前连接数)。
- Counter:计数器(如总消息数)。
- Meter:吞吐量(如每秒请求数)。
- Timer:耗时统计(如请求延迟分布)。
- Histogram:分布统计(如消息大小分布)。
这些指标被分类存储在 Kafka 的各个组件中(如 Broker、生产者、消费者),形成层次化的指标体系。
JMX 暴露指标
Kafka 默认通过 JMX 暴露所有指标,无需额外配置。JMX 是 Java 平台的标准监控接口,允许外部工具通过 MBean(Managed Bean)访问指标。
启用 JMX 端口:启动 Kafka 时,通过
JMX_PORT环境变量指定端口(如9010),否则使用随机端口:# 启动 Broker 并指定 JMX 端口 JMX_PORT=9010 ./kafka-server-start.sh ../config/server.propertiesJMX 指标路径:指标以层次化命名,格式为
kafka.<组件>.<指标名>,例如:kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec(每秒入站消息数)。kafka.consumer:type=ConsumerFetcherManager,name=FetchRateAndTimeMs(消费者拉取速率)。
核心监控指标
Kafka 的监控指标可分为 Broker 指标、生产者指标、消费者指标 和 主题 / 分区指标,以下是关键指标:
1. Broker 核心指标
| 指标名 | 类型 | 说明 | 重要性 |
|---|---|---|---|
MessagesInPerSec |
Meter | 每秒接收的消息总数(入站吞吐量) | ⭐⭐⭐⭐⭐ |
BytesInPerSec |
Meter | 每秒接收的字节数(入站流量) | ⭐⭐⭐⭐⭐ |
BytesOutPerSec |
Meter | 每秒发送的字节数(出站流量) | ⭐⭐⭐⭐⭐ |
RequestHandlerAvgIdlePercent |
Gauge | 请求处理器空闲比例(过低表示 Broker 繁忙) | ⭐⭐⭐⭐ |
LeaderCount |
Gauge | 该 Broker 作为 Leader 的分区数(负载均衡关键指标) | ⭐⭐⭐⭐ |
IsrShrinksPerSec |
Meter | 每秒 ISR 收缩次数(频繁收缩可能意味着副本同步异常) | ⭐⭐⭐ |
IsrExpandsPerSec |
Meter | 每秒 ISR 扩张次数 | ⭐⭐⭐ |