Kafka Metrics指标监控

本文以kafka2.1.1版本为例

文章目录

  • 1.简介
    • 1.1.官网地址
    • 1.2.常见开源监控工具
    • 1.3.GitHub源码地址
  • 2.指标介绍
    • 2.1.服务端指标
    • 2.2.客户端指标
      • 2.2.1. 生产者、消费者、connect、streams公共指标
      • 2.2.2.生产者、消费者、connect、streams的broker节点指标
      • 2.2.3.生产者指标
      • 2.2.4.生产者topic指标
      • 2.2.5.消费者coordinator指标
      • 2.2.6.消费者fetch manager指标
      • 2.2.7.消费者topic指标
      • 2.2.8.消费者partition指标
  • 3.指标获取
    • 3.1.服务端指标获取
      • 3.1.1.通过JMX获取
    • 3.2.客户端指标获取
      • 3.2.1.通过JMX获取
      • 3.2.2.通过实现MetricsReporter、ClusterResourceListener

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.服务端指标

以下指标全部可以通过jmx获取到

1)分区在同步中的副本数:InSyncReplicasCount

ObjectName kafka.cluster:type=Partition,name=InSyncReplicasCount,topic=test1,partition=0
属性:Value=2

2)分区副本数:ReplicasCount

ObjectName kafka.cluster:type=Partition,name=ReplicasCount,topic=test1,partition=0
属性:Value=2

3)分区缺失副本数:UnderReplicated

ObjectName kafka.cluster:type=Partition,name=UnderReplicated,topic=test1,partition=0
属性:Value=0

4)集群活跃controller个数:ActiveControllerCount

ObjectName kafka.controller:type=KafkaController,name=ActiveControllerCount
属性:Value=0

5)分区LogEndOffset

ObjectName kafka.log:type=Log,name=LogEndOffset,topic=test1,partition=0
属性:Value=0

6)分区LogStartOffset

ObjectName kafka.log:type=Log,name=LogStartOffset,topic=test1,partition=0
属性:Value=0 

7)分区segment个数:NumLogSegments

ObjectName kafka.log:type=Log,name=NumLogSegments,topic=test1,partition=0
属性:Value=25

8)分区存储大小:Size

ObjectName kafka.log:type=Log,name=Size,topic=test1,partition=0
属性:Value=20000000

9)broker网络空闲率:NetworkProcessorAvgIdlePercent

kafka.network:type=SocketServer,name=NetworkProcessorAvgIdlePercent

10)broker一分钟内平均每秒入流量,单位:字节

ObjectName kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec
主要属性:
	EventType=bytes
	OneMinuteRate=102400000
	RateUnit=SECONDS

11)topic在broker一分钟内平均每秒入流量,单位:字节

ObjectName kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec,topic=test1
主要属性:
    EventType=bytes
    OneMinuteRate=102400000
    RateUnit=SECONDS

12)broker一分钟内平均每秒出流量,单位:字节

BytesOutPerSec(一分钟内平均每秒出流量,单位:字节)
ObjectName kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec
主要属性:
    EventType=bytes
    OneMinuteRate=102400000
    RateUnit=SECONDS

13)topic在broker一分钟内平均每秒出流量,单位:字节

ObjectName kafka.server:type=BrokerTopicMetrics,name=BytesOutPerSec,topic=test1
主要属性:
    EventType=bytes
    OneMinuteRate=102400000
    RateUnit=SECONDS

14)broker/topic平均每秒拒绝流量,单位:字节

kafka.server:type=BrokerTopicMetrics,name=BytesRejectedPerSec
kafka.server:type=BrokerTopicMetrics,name=BytesRejectedPerSec,topic=test1

15)broker/topic平均每秒失败抓取请求次数

kafka.server:type=BrokerTopicMetrics,name=FailedFetchRequestsPerSec
kafka.server:type=BrokerTopicMetrics,name=FailedFetchRequestsPerSec,topic=test1

16)broker/topic平均每秒失败生产请求次数

kafka.server:type=BrokerTopicMetrics,name=FailedProduceRequestsPerSec
kafka.server:type=BrokerTopicMetrics,name=FailedProduceRequestsPerSec,topic=test1

17)broker/topic平均每秒抓取请求总次数

kafka.server:type=BrokerTopicMetrics,name=TotalFetchRequestsPerSec
kafka.server:type=BrokerTopicMetrics,name=TotalFetchRequestsPerSec,topic=test1

18)broker/topic平均每秒生产请求总次数

kafka.server:type=BrokerTopicMetrics,name=TotalProduceRequestsPerSec
kafka.server:type=BrokerTopicMetrics,name=TotalProduceRequestsPerSec,topic=test1

19)broker/topic一分钟内平均每秒入流量,单位:记录数

kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec
主要属性:
    EventType=messages
    OneMinuteRate=102400000
    RateUnit=SECONDS

kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec,topic=test1
主要属性:
    EventType=messages
    OneMinuteRate=102400000
    RateUnit=SECONDS

20)用户在broker每秒生产消费字节与被限制流量时间

kafka.server:type=Produce,user=kafkacommon 
属性:
    byte-rate(每秒生产字节)
    throttle-time(1秒内生产被限制时间,单位:毫秒)


kafka.server:type=Fetch,user=kafkacommon 
属性:
    byte-rate(每秒消费字节)
    throttle-time(1秒内消费被限制时间,单位:毫秒)

21)broker请求队列空闲率:RequestHandlerAvgIdlePercent

kafka.server:type=KafkaRequestHandlerPool,name=RequestHandlerAvgIdlePercent

22)Isr每秒扩展或收缩速率

kafka.server:type=ReplicaManager,name=IsrExpandsPerSec 
属性:MeanRate

kafka.server:type=ReplicaManager,name=IsrShrinksPerSec 
属性:MeanRate

23)broker上leader分区个数

kafka.server:type=ReplicaManager,name=LeaderCount
属性:Value

24)broker上分区个数

kafka.server:type=ReplicaManager,name=PartitionCount
属性:Value

25)用户在broker的平均请求时间

kafka.server:type=Request,user=kafkacommon 
属性:request-time

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 分区最大消费延迟记录

3.指标获取

3.1.服务端指标获取

3.1.1.通过JMX获取

3.2.客户端指标获取

3.2.1.通过JMX获取

3.2.2.通过实现MetricsReporter、ClusterResourceListener

你可能感兴趣的:(Kafka,Kafka,metric,Kafka监控,kafka,大数据,监控类,中间件)