本文以kafka2.1.1版本为例
1.简介
1.1.官网地址
http://kafka.apache.org/21/documentation.html#monitoring
Kafka使用Yammer Metrics来上报broker端的Metrics。Java客户端使用Kafka Metrics上报,这是一个内置的Metrics注册表,它最小化了客户端应用程序的依赖关系。两者都可以通过JMX方式获取,并且是可插拨的连接到你的监控系统。
所有Kafka rate都有一个对应的带后缀 -total
的累积计数指标,例如:records-consumed-rate
有一个对应的累积计数指标 records-consumed-total
1.2.常见开源监控工具
- Kafka Manager(https://github.com/yahoo/kafka-manager)
- Kafka Eagle(http://download.kafka-eagle.org/)
- Kafka Monitor(https://github.com/linkedin/kafka-monitor)
- KafkaOffsetMonitor
1.3.GitHub源码地址
服务端及客户端监控实现请参考GitHub地址:https://github.com/yyijun/kafka.git
2.指标介绍
2.1.服务端指标
指标名称 | 指标描述 |
---|---|
kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec | 每秒流入记录数 |
kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec | 每秒流入数据量,单位:字节 |
kafka.server:type=BrokerTopicMetrics,name=ReplicationBytesInPerSec | |
kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec | |
kafka.network:type=RequestMetrics,name=RequestsPerSec,request={Produce/FetchConsumer/FetchFollower} | |
kafka.network:type=RequestMetrics,name=ErrorsPerSec,request=([-.\w]+),error=([-.\w]+) | |
kafka.network:type=RequestMetrics,name=TemporaryMemoryBytes,request={Produce/Fetch} | |
kafka.network:type=RequestMetrics,name=MessageConversionsTimeMs,request={Produce/Fetch} | |
kafka.server:type=BrokerTopicMetrics,name={Produce/Fetch}MessageConversionsPerSec,topic=([-.\w]+) | |
kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec | |
kafka.server:type=BrokerTopicMetrics,name=ReplicationBytesOutPerSec | |
kafka.log:type=LogFlushStats,name=LogFlushRateAndTimeMs | |
kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions | |
kafka.server:type=ReplicaManager,name=UnderMinIsrPartitionCount | |
kafka.log:type=LogManager,name=OfflineLogDirectoryCount | |
kafka.controller:type=KafkaController,name=ActiveControllerCount | |
kafka.controller:type=ControllerStats,name=LeaderElectionRateAndTimeMs | |
kafka.controller:type=ControllerStats,name=UncleanLeaderElectionsPerSec | |
kafka.server:type=ReplicaManager,name=PartitionCount | |
kafka.server:type=ReplicaManager,name=LeaderCount | |
kafka.server:type=ReplicaManager,name=IsrShrinksPerSec | |
kafka.server:type=ReplicaManager,name=IsrExpandsPerSec | |
kafka.server:type=ReplicaFetcherManager,name=MaxLag,clientId=Replica | |
kafka.server:type=FetcherLagMetrics,name=ConsumerLag,clientId=([-.\w]+),topic=([-.\w]+),partition=([0-9]+) | |
kafka.server:type=DelayedOperationPurgatory,name=PurgatorySize,delayedOperation=Produce | |
kafka.server:type=DelayedOperationPurgatory,name=PurgatorySize,delayedOperation=Fetch | |
kafka.network:type=RequestMetrics,name=TotalTimeMs,request={Produce/FetchConsumer/FetchFollower} | |
kafka.network:type=RequestMetrics,name=RequestQueueTimeMs,request={Produce/FetchConsumer/FetchFollower} |
2.2.客户端指标
2.2.1. 生产者、消费者、connect、streams公共指标
kafka.[producer|consumer|connect]:type=[producer|consumer|connect]-metrics,client-id=([-.\w]+)
指标名称 | 指标描述 |
---|---|
connection-close-rate | 每秒被关闭连接数 |
connection-close-total | 从客户端本次启动截止当前被关闭连接总数 |
connection-creation-rate | 每次创建新连接数 |
connection-creation-total | 从客户端本次启动截止当前新创建连接总数 |
connection-count | 当前活跃连接数 |
network-io-rate | 每秒网络读写次数 |
network-io-total | 从客户端本次启动截止当前网络读写总次数 |
outgoing-byte-rate | 每秒输出字节 |
outgoing-byte-total | 从客户端本次启动截止当前输出总字节 |
request-rate | 每秒请求次数 |
request-total | 从客户端本次启动截止当前请求总次数 |
request-size-avg | 平均请求大小,单位:字节 |
request-size-max | 最大请求大小,单位:字节 |
incoming-byte-rate | 每秒输入字节 |
incoming-byte-total | 从客户端本次启动截止当前输入总字节 |
response-rate | 每秒响应次数 |
response-total | 从客户端本次启动截止当前响应总次数 |
io-wait-ratio | IO线程等待时间 |
io-ratio | IO线程执行时间 |
2.2.2.生产者、消费者、connect、streams的broker节点指标
kafka.producer:type=[consumer|producer|connect]-node-metrics,client-id=([-.\w]+),node-id=([0-9]+)
指标名称 | 指标描述 |
---|---|
outgoing-byte-rate | 每秒输出字节 |
outgoing-byte-total | 从客户端本次启动截止当前输出总字节 |
incoming-byte-rate | 每秒输入字节 |
incoming-byte-total | 从客户端本次启动截止当前输入总字节 |
request-rate | 每秒请求次数 |
request-total | 从客户端本次启动截止当前请求总次数 |
request-size-avg | 平均请求大小,单位:字节 |
request-size-max | 最大请求大小,单位:字节 |
response-rate | 每秒响应次数 |
response-total | 从客户端本次启动截止当前响应总次数 |
request-latency-avg | 平均请求延迟 ,单位:毫秒 |
request-latency-max | 最大请求延迟,单位:毫秒 |
2.2.3.生产者指标
kafka.producer:type=producer-metrics,client-id="{client-id}"
指标名称 | 指标描述 |
---|---|
record-size-avg | 平均记录大小,单位:字节 |
record-size-max | 最大记录大小,单位:字节 |
2.2.4.生产者topic指标
kafka.producer:type=producer-topic-metrics,client-id="{client-id}",topic="{topic}"
指标名称 | 指标描述 |
---|---|
byte-rate | topic每秒生产字节 |
byte-total | 从客户端本次启动截止当前topic生产总字节 |
record-error-rate | topic每秒错误记录数 |
record-error-total | 从客户端本次启动截止当前topic生产错误记录总数 |
record-retry-rate | topic每秒生产重试记录数 |
record-retry-total | 从客户端本次启动截止当前topic生产重试记录总数 |
record-send-rate | topic每秒生产记录数 |
record-send-total | 从客户端本次启动截止当前topic生产记录总数 |
2.2.5.消费者coordinator指标
kafka.consumer:type=consumer-coordinator-metrics,client-id=([-.\w]+)
指标名称 | 指标描述 |
---|---|
commit-latency-avg | 平均请求延迟,单位:毫秒 |
commit-latency-max | 最大请求延迟,单位:毫秒 |
commit-rate | 每秒提交次数 |
commit-total | 提交总次数 |
2.2.6.消费者fetch manager指标
kafka.consumer:type=consumer-fetch-manager-metrics,client-id="{client-id}"
指标名称 | 指标描述 |
---|---|
bytes-consumed-rate | 每秒消费字节 |
bytes-consumed-total | 消费总字节 |
records-consumed-rate | 每秒消费记录 |
records-consumed-total | 消费总记录 |
fetch-latency-avg | 平均抓取延迟,单位:毫秒 |
fetch-latency-max | 最大抓取请求延迟,单位:毫秒 |
fetch-size-avg | 平均抓取请求大小,单位:字节 |
fetch-size-max | 最大抓取请求大小,单位:字节 |
fetch-rate | 每秒抓取请求数 |
fetch-total | 抓取请求总数 |
2.2.7.消费者topic指标
kafka.consumer:type=consumer-fetch-manager-metrics,client-id="{client-id}",topic="{topic}"
指标名称 | 指标描述 |
---|---|
bytes-consumed-rate | topic每秒消费字节 |
bytes-consumed-total | topic消费总字节 |
records-consumed-rate | topic每秒消费记录 |
records-consumed-total | topic消费总记录 |
fetch-size-avg | 平均抓取请求大小,单位:字节 |
fetch-size-max | 最大抓取请求大小,单位:字节 |
2.2.8.消费者partition指标
kafka.consumer:type=consumer-fetch-manager-metrics,partition="{partition}",topic="{topic}",client-id="{client-id}"
指标名称 | 指标描述 |
---|---|
records-lag | 分区当前消费延迟记录 |
records-lag-avg | 分区平均消费延迟记录 |
records-lag-max | 分区最大消费延迟记录 |