参考文档:https://kafka.apache.org/documentation.html#monitoring

Kafka使用Yammer Metrics来报告server和client的众多metric。还可以使用其他的插件来跟你的监控系统连接起来,比如https://cwiki.apache.org/confluence/display/KAFKA/JMX+Reporters中提到的ganglia和Graphite等。默认使用的是JMX,最简单的观察方式是使用jconsole连接你的server或者client,就可以看到所有可用的metric。我自己是使用Zabbix跟JMX对接,监测一些metric,并进行报警,以下metric是值得关注的:

描述:所有的topic的消息速率(消息数/秒)

Mbean名:"kafka.server":name="AllTopicsMessagesInPerSec",type="BrokerTopicMetrics"

正常的值:

描述:所有的topic的流入数据速率(字节/秒)

Mbean名:"kafka.server":name="AllTopicsBytesInPerSec",type="BrokerTopicMetrics"

正常的值:

描述:producer或Fetch-consumer或Fetch-follower的请求速率(请求次数/秒)

Mbean名:"kafka.network":name="{Produce|Fetch-consumer|Fetch-follower}-RequestsPerSec",type="RequestMetrics"

正常的值:

描述:所有的topic的流出数据速率(字节/秒)

Mbean名: "kafka.server":name="AllTopicsBytesOutPerSec",type="BrokerTopicMetrics"

正常的值:

描述:刷日志的速率和耗时

Mbean名: "kafka.log":name="LogFlushRateAndTimeMs",type="LogFlushStats"

正常的值:

描述:正在做复制的partition的数量(|ISR| < |all replicas|)

Mbean名:"kafka.server":name="UnderReplicatedPartitions",type="ReplicaManager"

正常的值:0

描述:当前的broker是否为controller

Mbean名:"kafka.controller":name="ActiveControllerCount",type="KafkaController"

正常的值:在集群中只有一个broker的这个值为1

描述:选举leader的速率

Mbean名:"kafka.controller":name="LeaderElectionRateAndTimeMs",type="ControllerStats"

正常的值:如果有broker挂了,此值非0

描述:Unclean的leader选举速率

Mbean名:"kafka.controller":name="UncleanLeaderElectionsPerSec",type="ControllerStats"

正常的值:0

描述:该broker上的partition的数量

Mbean名: "kafka.server":name="PartitionCount",type="ReplicaManager"

正常的值:应在各个broker中平均分布

描述:Leader的replica的数量

Mbean名: "kafka.server":name="LeaderCount",type="ReplicaManager"

正常的值:应在各个broker中平均分布

描述:ISR的收缩(shrink)速率

Mbean名:"kafka.server":name="ISRShrinksPerSec",type="ReplicaManager"

正常的值:如果一个broker挂掉了,一些partition的ISR会收缩。当那个broker重新起来时,一旦它的replica完全跟上,ISR会扩大(expand)。除此之外,正常情况下,此值和下面的扩大速率都是0。

描述:ISR的扩大(expansion)速率

Mbean名: "kafka.server":name="ISRExpandsPerSec",type="ReplicaManager"

正常的值:参见ISR的收缩(shrink)速率

描述:follower落后leader replica的最大的消息数量

Mbean名:"kafka.server":name="([-.\w]+)-MaxLag",type="ReplicaFetcherManager"

正常的值:小于replica.lag.max.messages

描述:每个follower replica落后的消息速率

Mbean名:"kafka.server":name="([-.\w]+)-ConsumerLag",type="FetcherLagMetrics"

正常的值:小于replica.lag.max.messages

描述:等待producer purgatory的请求数

Mbean名:"kafka.server":name="PurgatorySize",type="ProducerRequestPurgatory"

正常的值:如果ack=-1,应为非0值

描述:等待fetch purgatory的请求数

Mbean名:"kafka.server":name="PurgatorySize",type="FetchRequestPurgatory"

正常的值:依赖于consumer的fetch.wait.max.ms的设置

描述:一个请求(producer,Fetch-Consumer,Fetch-Follower)耗费的所有时间

Mbean名:"kafka.network":name="{Produce|Fetch-Consumer|Fetch-Follower}-TotalTimeMs",type="RequestMetrics"

正常的值:包括了queue, local, remote和response send time

描述:请求(producer,Fetch-Consumer,Fetch-Follower)在请求队列中的等待时间

Mbean名:"kafka.network":name="{Produce|Fetch-Consumer|Fetch-Follower}-QueueTimeMs",type="RequestMetrics"

正常的值:

描述:请求(producer,Fetch-Consumer,Fetch-Follower)在leader处理请求花的时间

Mbean名:"kafka.network":name="{Produce|Fetch-Consumer|Fetch-Follower}-LocalTimeMs",type="RequestMetrics"

正常的值:

描述:请求(producer,Fetch-Consumer,Fetch-Follower)等待follower花费的时间

Mbean名:"kafka.network":name="{Produce|Fetch-Consumer|Fetch-Follower}-RemoteTimeMs",type="RequestMetrics"

正常的值:producer的ack=-1时,非0才正常

描述:发送响应花费的时间

Mbean名:"kafka.network":name="{Produce|Fetch-Consumer|Fetch-Follower}-ResponseSendTimeMs",type="RequestMetrics"

正常的值:

描述:consumer落后producer的消息数量

Mbean名:"kafka.consumer":name="([-.\w]+)-MaxLag",type="ConsumerFetcherManager"

正常的值:

建议对GC耗时和其他参数和诸如系统CPU,I/O时间等等进行监控。在client端,建议对"消息数量/字节数"的速率(全局的和对于每一个topic),请求的"速率/大小/耗时"进行监控。还有consumer端,所有partition的最大的落后情况和最小的fetch请求的速率。consumer为了能跟上,最大落后数量需要少于一个threshold并且最小fetch速率需要大于0.

Kafka学习之监控相关推荐

  1. kafka maven 依赖_SpringBoot入门建站全系列(二十八)整合Kafka做日志监控

    SpringBoot入门建站全系列(二十八)整合Kafka做日志监控 一.概述 Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端 ...

  2. SpringBoot入门建站全系列(二十八)整合Kafka做日志监控

    SpringBoot入门建站全系列(二十八)整合Kafka做日志监控 一.概述 Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端 ...

  3. [Big Data - Kafka] kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余:消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许 ...

  4. kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  5. 大数据 -- kafka学习笔记:知识点整理(部分转载)

    一 为什么需要消息系统 1.解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多 ...

  6. Kafka学习-入门

    在上一篇kafka简介的基础之上,本篇主要介绍如何快速的运行kafka. 在进行如下配置前,首先要启动Zookeeper. 配置单机kafka 1.进入kafka解压目录 2.启动kafka bin\ ...

  7. Kafka学习笔记(3)----Kafka的数据复制(Replica)与Failover

    1. CAP理论 1.1 Cosistency(一致性) 通过某个节点的写操作结果对后面通过其他节点的读操作可见. 如果更新数据后,并发访问的情况下可立即感知该更新,称为强一致性 如果允许之后部分或全 ...

  8. 在 java 的 bin 目录下,jdk 提供了很多使用的工具,下面学习一些监控和故障处理的工具。...

    2019独角兽企业重金招聘Python工程师标准>>> 在 java 的 bin 目录下,jdk 提供了很多使用的工具,下面学习一些监控和故障处理的工具. 名称 作用 jps JVM ...

  9. Kafka学习之四 Kafka常用命令

    2019独角兽企业重金招聘Python工程师标准>>> Kafka学习之四 Kafka常用命令 Kafka常用命令 以下是kafka常用命令行总结: 1.查看topic的详细信息 . ...

最新文章

  1. windows7x64安装小记
  2. 批量更改Windows操作系统文件名
  3. Linux C:管道的实现原理,命名管道
  4. java中 int 比较_java中Integer与int的种种比较你知道多少?
  5. 使用bash echo 输出回车转义
  6. Windows vpn 远程桌面 使用快捷键
  7. java 封装的概念_java封装的概念
  8. Anaconda——Youki常用的conda命令笔记
  9. 为何要搭建大数据分析平台
  10. [转] 病毒、木马进程查询手册
  11. 计算机版音乐教学,EduOffice音乐教学备课软件
  12. 解决office 2010每次启动都出现配置进度的方法
  13. 数据结构-顺序表基本操作-C语言代码
  14. 2018 Multi-University Training Contest 3 hdu多校第三场 Problem A:Ascending Rating(单调队列)
  15. ANN to SNN
  16. 人生经验:热闹还是要看?
  17. 猿圈19年校招笔试题
  18. 传奇人物《周兴和》书连载23 劳燕分飞离故里
  19. 中科大校友一次意外事故,造就了让3000万人摘掉眼镜的手术
  20. 【慧河网络安全组】Web基础题解培训

热门文章

  1. 基于jsp+ssm+springboot的小区物业管理系统【设计+论文+源码】
  2. mq和kafka的不同之处
  3. 从招聘要求,明确一名数据分析师需要掌握的技能!
  4. AMD与CMD区别(玉伯) - 2015
  5. 如何利用Python将PDF转化为图片?
  6. 超分辨率 测试集处理(基于插值下采样)
  7. Rust学习入门(2):Rust通用的编程概念
  8. 第三方登陆插件QQ,微博
  9. 怎么更改苹果账户名称_淘宝账号开店以后想改名字怎么办?哪些信息不能修改...
  10. 易优cms 设置伪静态 Eyoucms快速入门