参考文档: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集群,有两个重要的工具被广泛使用,即`KafkaOffsetMonitor`和`Kafka-Manager`,它们恰好在你提供的压缩包文件中。 `KafkaOffsetMonitor`是一个非常实用的工具,它能够帮助我们监控Kafka...
10. 代码实践《kafka学习代码》中可能包含了一些示例,涵盖了producer、consumer的创建、消息发送与接收、配置调整等内容,是深入理解Kafka工作原理和使用技巧的重要参考资料。 总结,Kafka作为一个分布式流处理...
在单机环境中,Kafka主要用于学习和测试。以下是搭建步骤: 1. **下载安装**:首先,你需要从Apache官方网站下载Kafka的最新稳定版本,并解压到本地目录。 2. **配置环境变量**:将Kafka的安装路径添加到系统环境...
总结来说,Kafka是构建现代数据平台不可或缺的工具,它提供的实时数据流处理能力对大数据分析、实时监控和日志管理等领域有着深远影响。通过深入学习和实践,你将能够充分利用Kafka的优势,解决复杂的数据处理挑战。
### Kafka学习详细文档笔记 #### 一、入门 **1、简介** Kafka是由LinkedIn开源的一款分布式的流处理平台,其核心功能在于消息传递。它能够处理大量的实时数据流,并且具备高性能、高吞吐量的特点。Kafka采用发布...
【Kafka学习笔记】 Kafka是一款高性能的分布式消息中间件,广泛应用于大数据实时处理和流处理领域。它具有高吞吐量、低延迟、可扩展性以及容错性等特点,常用于日志收集、监控数据聚合、用户行为追踪等多个场景。 ...
kafka是最初由Linkedin公司开发,使用Scala语言编写,Kafka是一个分布式、分区的、多副本的、多订阅者的日志系统(分布 式MQ系统),可以用于web/nginx日志,搜索日志,监控日志,访问日志等等。 Kafka是一种分布式的...
在本文中,我们将深入探讨如何使用Java进行Kafka开发,主要基于提供的" kafka-study "压缩包中的学习代码。Kafka是由Apache开发的分布式流处理平台,它被广泛用于构建实时数据管道和流应用程序。Java是Kafka客户端库...
1. Kafka可视化监控与告警系统,项目基于一些开源kafka监控软件做的二次开发。 2. 此平台可以介入多个不同版本的kafka集群进行监控 #### 项目背景 - 在实时数据处理中,经常遇到数据延迟问题,对kafka数据堆积量的...
这本书可能会详细解释Kafka如何处理网络通信、存储和内存管理,以及如何进行扩展和监控。你将学习到如何通过调整参数来提高Kafka的性能,以及如何设计和实施可靠的流处理系统。 在深入学习Kafka的过程中,理解源码...
【Kafka学习专栏的软件】提供了全面学习Apache Kafka所需的基础环境,包括Zookeeper、Java Development Kit(JDK)8、Kafka 2.8.0和Scala的Linux x64版本。Kafka是一个分布式流处理平台,广泛应用于大数据实时处理、...
本课程主要涵盖了Apache Kafka的核心概念、安装配置、架构解析、API使用以及监控与面试知识点,旨在帮助学习者全面理解并掌握这一强大的分布式流处理平台。 **第 1 章 Kafka 概述** Apache Kafka是一款高吞吐量的...
《Kafka学习笔记》 Apache Kafka是一款开源的流处理平台,由LinkedIn开发并捐赠给了Apache软件基金会。它最初设计为一个高吞吐量、低延迟的消息队列系统,但现在已经成为大数据领域的重要组件,广泛用于实时数据...
**Kafka学习指南** Kafka是一款高性能、分布式的消息中间件,由LinkedIn开发并开源,后来成为Apache软件基金会的顶级项目。它主要用于构建实时数据管道和流应用,支持高吞吐量、低延迟的数据传输,广泛应用于大数据...
总的来说,《图解 Kafka 之实战指南》全面覆盖了Kafka的基础知识和实践技巧,是学习和掌握这一流行消息中间件的宝贵资源。通过阅读此书,读者不仅可以理解Kafka的工作原理,还能具备实际操作和解决复杂问题的能力。
《Kafka Exporter与Prometheus监控实践》 在现代大数据处理和实时流计算领域,Apache Kafka作为一款强大的分布式消息中间件,广泛应用于日志收集、数据传输和实时数据处理等场景。然而,为了确保Kafka集群的稳定...
《Apache Kafka实战》这本书深入浅出地介绍了...通过阅读《Apache Kafka实战》这本书,你可以深入了解Kafka的工作原理,学习如何设计、部署和维护一个高效、可靠的Kafka集群,并利用其强大的功能构建实时数据处理系统。
7. 实践Kafka在大数据处理、实时监控等领域的应用。 通过深入学习这两本书的内容,无论是初学者还是有经验的开发者,都能提升自己在Kafka领域的专业技能,为应对大数据时代的挑战做好准备。在实际工作中,结合这些...