kafka监控系统

简介:

Metrics-Java版的指标度量工具之一

Metrics-Java版的指标度量工具之二

JAVA Metrics 度量工具使用介绍1

JAVA Metrics度量工具 - Metrics Core 翻译

http://blog.synyx.de/2013/09/yammer-metrics-made-easy-part-i/

 

http://kafka.apache.org/documentation.html#monitoring

https://cwiki.apache.org/confluence/display/KAFKA/JMX+Reporters

kafka监控http://www.tianjiaguo.com/system-architecture/kafka/kafka%E7%9B%91%E6%8E%A7/

如何对Kafka进行监控, http://my.oschina.net/u/218540/blog/263704

apache kafka监控系列-KafkaOffsetMonitor

------------------------------------------------------------------------------------------------------------------------------

JAVA Metrics

Kafka采用的是JAVA Metrics进行内部状态的监控,具体参考上面的blog,说的都比较清楚

JAVA Metrics还是比较好用的,有如下几种类型的度量,GaugesCountersHistogramsMeters,Timers
另外还支持Health Checks

并支持多种report方式,metrics-core支持3种 
默认的方式是JMX,Metrics一直将你的所有指标注册成JMX的MBeans,可以通过Jconsole或VisualVM来直接查看,详细见下面 
console方式,Metrics提供了ConsoleReporter,这个周期性的打印出注册的metric到控制台上 
CSV方式,Metrics提供了CsvReporter,他周期性的提供了一连串的给定目录下.csv文件

还有其他的reporter,比如将数据发给Ganlia或Graphite这样现成的监控平台 
GanliaReporter  将度量指标以流式的方式返回给Ganglia服务器 
GraphiteReporter  将度量指标以流式的方式返回给Graphite服务器

 

JMX,Java Management Extension

Kafka中是通过JMX来report metrics的,所以来看看JMX是什么? 
http://www.ibm.com/developerworks/cn/java/j-lo-jse63/,这篇讲的比较清楚,IBM的blog质量还是值得肯定的呵呵

比如大型的系统中部署了各种各样的Java组件,每个组件的监控和管理接口都是不一样的,那么开发一个统一的监控和管理工具就很麻烦 
JMX就是负责对上层管理系统提供统一的接口,以屏蔽底层resources的多样性

image

具体架构,参考下面的图,

 

image

javax.management.MBeanServer实现了Agent 的功能,以标准的方式给出了管理系统访问 JMX 框架的接口 
javax.management.MBeans实现了SubAgent 的功能,以标准的方式给出了 JMX 框架访问资源的接口

参照下面,打开JConsole,就可以看到代表资源的一个个MBean,在MBean上不仅仅可以看到这些资源的当前状态,还可以动态的更改配置和做些操作 
比如对于java.lang MBean提供了Java 虚拟机的监控和管理接口, 
可以看到虚拟机中的线程数、线程当前的 Stack、内存管理、GC 所占用的时间、虚拟机中的对象和当前虚拟机参数等重要的参数和运行时信息 
还可以对配置信息的检测和再配置,远端查看和修改当前 JVM 的 verbose 参数,甚至我们可以在远端指挥 JVM 做一次 GC

 

如何用JConsole监控kafka的Metrics信息?

首先在执行kafka脚本的时候,加上JMX_PORT,其他JMX相关配置在kafka-run-class.sh的KAFKA_JMX_OPTS已经配上了

JMX_PORT=9999 nohup bin/kafka-server-start.sh config/server.properties &

打开JConsole,

输入,service:jmx:rmi:///jndi/rmi://11.11.11.11:9999/jmxrmi

然后就可以看到,cool!!!

 

从Metrics中可以看到哪些Kafka指标?

参考,http://kafka.apache.org/documentation.html#monitoring

表有点乱,梳理一下,每个metrics的标识分为3层,MBean name,Type,Metrics name 

kafka.server (MBean Name)

    BrokerTopicMetrics (Type) 
        AllTopicsMessagesInPerSec,所有topic每秒messages数 
        AllTopicsBytesInPerSec,所有topic每秒in的字节数 
        AllTopicsBytesOutPerSe,out的字节数,没有out的message数,为啥?呵呵

    ReplicaManager 
        UnderReplicatedPartitions,即有几个partition实际replica数是小于设置数的(|ISR| < |all replicas|) 
        PartitionCount,  partition的个数 
        LeaderCount,  leader partition的个数,如果replica因子为1,即为partition数  
        ISRShrinksPerSec, 只有broker go down的时候ISR才会发生,Shrink和Expand,一般情况下为0 
        ISRExpandsPerSec, 同上

    ReplicaFetcherManager 
        Replica-MaxLag, follower replica和leader replica之间的最大的lag

    ProducerRequestPurgatory 
        PurgatorySize,Requests waiting in the producer purgatory

    FetchRequestPurgatory 
        PurgatorySize,Requests waiting in the fetch purgatory

 

kafka.network

    RequestMetrics 
        {Produce|Fetch-consumer|Fetch-follower}-RequestsPerSec, 每秒producer或consumer请求次数,follower指replica broker
        {Produce|Fetch-Consumer|Fetch-Follower}-TotalTimeMs,Request total time 
        {Produce|Fetch-Consumer|Fetch-Follower}-QueueTimeMs,Time the request waiting in the request queue 
        {Produce|Fetch-Consumer|Fetch-Follower}-LocalTimeMs,Time the request being processed at the leader 
        {Produce|Fetch-Consumer|Fetch-Follower}-RemoteTimeMs,Time the request waits for the follower 
        {Produce|Fetch-Consumer|Fetch-Follower}-ResponseSendTimeMs,Time to send the response

 

kafka.Log

    Log  
        topic-partition-LogEndoffset,每个partition的End Offset 
        topic-partition-NumLogSegments,segements个数 
        topic-partition-Size,partition数据的大小

 

kafka.controller

    KafkaController 
        ActiveControllerCount,有几个active的controller

    ControllerStats 
        LeaderElectionRateAndTimeMs,non-zero when there are broker failures 
        UncleanLeaderElectionsPerSec

 

kafka.consumer

    ConsumerFetcherManager    
         ([-.\w]+)-MaxLag,Number of messages the consumer lags behind the producer by

 

Kafka中支持的JMX reporter

https://cwiki.apache.org/confluence/display/KAFKA/JMX+Reporters


本文章摘自博客园,原文发布日期:2014-06-30 

目录
相关文章
|
6天前
|
消息中间件 安全 Kafka
Apache Kafka安全加固指南:保护你的消息传递系统
【10月更文挑战第24天】在现代企业环境中,数据的安全性和隐私保护至关重要。Apache Kafka作为一款广泛使用的分布式流处理平台,其安全性直接影响着业务的稳定性和用户数据的安全。作为一名资深的Kafka使用者,我深知加强Kafka安全性的重要性。本文将从个人角度出发,分享我在实践中积累的经验,帮助读者了解如何有效地保护Kafka消息传递系统的安全性。
32 7
|
25天前
|
消息中间件 监控 数据可视化
大数据-79 Kafka 集群模式 集群监控方案 JavaAPI获取集群指标 可视化监控集群方案: jconsole、Kafka Eagle
大数据-79 Kafka 集群模式 集群监控方案 JavaAPI获取集群指标 可视化监控集群方案: jconsole、Kafka Eagle
42 2
|
6天前
|
消息中间件 Java Kafka
初识Apache Kafka:搭建你的第一个消息队列系统
【10月更文挑战第24天】在数字化转型的浪潮中,数据成为了企业决策的关键因素之一。而高效的数据处理能力,则成为了企业在竞争中脱颖而出的重要武器。在这个背景下,消息队列作为连接不同系统和服务的桥梁,其重要性日益凸显。Apache Kafka 是一款开源的消息队列系统,以其高吞吐量、可扩展性和持久性等特点受到了广泛欢迎。作为一名技术爱好者,我对 Apache Kafka 产生了浓厚的兴趣,并决定亲手搭建一套属于自己的消息队列系统。
19 2
初识Apache Kafka:搭建你的第一个消息队列系统
|
3天前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
3月前
|
消息中间件 监控 Java
联通实时计算平台问题之监控Kafka集群的断传和积压情况要如何操作
联通实时计算平台问题之监控Kafka集群的断传和积压情况要如何操作
|
3月前
|
分布式计算 搜索推荐 物联网
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
大数据及AI典型场景实践问题之通过KafKa+OTS+MaxCompute完成物联网系统技术重构如何解决
|
3月前
|
消息中间件 存储 Kafka
ZooKeeper助力Kafka:掌握这四大作用,让你的消息队列系统稳如老狗!
【8月更文挑战第24天】Kafka是一款高性能的分布式消息队列系统,其稳定运行很大程度上依赖于ZooKeeper提供的分布式协调服务。ZooKeeper在Kafka中承担了四大关键职责:集群管理(Broker的注册与选举)、主题与分区管理、领导者选举机制以及消费者组管理。通过具体的代码示例展示了这些功能的具体实现方式。
79 2
|
3月前
|
消息中间件 监控 Kafka
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
【8月更文挑战第13天】Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
169 3
|
3月前
|
消息中间件 Java Kafka
【Azure 事件中心】在Windows系统中使用 kafka-consumer-groups.bat 查看Event Hub中kafka的consumer groups信息
【Azure 事件中心】在Windows系统中使用 kafka-consumer-groups.bat 查看Event Hub中kafka的consumer groups信息
|
4月前
|
消息中间件 Kafka 数据处理
Kafka与Flink:构建高性能实时数据处理系统的实践指南
Apache Kafka 和 Apache Flink 的结合为构建高性能的实时数据处理系统提供了坚实的基础。通过合理的架构设计和参数配置,可以实现低延迟、高吞吐量的数据流处理。无论是在电商、金融、物流还是其他行业,这种组合都能为企业带来巨大的价值。