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还是比较好用的,有如下几种类型的度量,Gauges, Counters, Histograms, Meters,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的多样性

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

 

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

kafka监控系统的更多相关文章

  1. Kafka监控系统Kafka Eagle:支持kerberos认证

    在线文档:https://ke.smartloli.org/ 作者博客:https://www.cnblogs.com/smartloli/p/9371904.html 源码地址:https://gi ...

  2. Kafka监控系统Kafka Eagle剖析

    1.概述 最近有同学留言反馈了使用Kafka监控工具Kafka Eagle的一些问题,这里笔者特意整理了这些问题.并且希望通过这篇博客来解答这些同学的在使用Kafka Eagle的时候遇到的一些困惑, ...

  3. Kafka 集群消息监控系统:Kafka Eagle

    Kafka Eagle 1.概述 在开发工作当中,消费 Kafka 集群中的消息时,数据的变动是我们所关心的,当业务并不复杂的前提下,我们可以使用 Kafka 提供的命令工具,配合 Zookeeper ...

  4. 【转载】Apache Kafka监控之Kafka Web Console

    http://www.iteblog.com/archives/1084 Kafka Web Console是一款开源的系统,源码的地址在https://github.com/claudemamo/k ...

  5. kafka监控

    做kafka相关项目,需要用到监控的东东,找到了两个方法 第一个: http://quantifind.com/KafkaOffsetMonitor/ 非常容易上手,效果也直观,可以显示各个topic ...

  6. 关于Kafka监控方案的讨论

    之前在知乎上尝试过回答这个问题,后来问的人挺多,干脆在博客里面保存一下. 目前Kafka监控方案看似很多,然而并没有一个"大而全"的通用解决方案.各家框架也是各有千秋,以下是我了解 ...

  7. DataPipeline |《Apache Kafka实战》作者胡夕:Apache Kafka监控与调优

    胡夕 <Apache Kafka实战>作者,北航计算机硕士毕业,现任某互金公司计算平台总监,曾就职于IBM.搜狗.微博等公司.国内活跃的Kafka代码贡献者. 前言 虽然目前Apache ...

  8. HBase实践案例:车联网监控系统

    项目背景 本项目为车联网监控系统,系统由车载硬件设备.云服务端构成.车载硬件设备会定时采集车辆的各种状态信息,并通过移动网络上传到服务器端.服务器端接收到硬件设备发送的数据首先需要将数据进行解析,校验 ...

  9. Kafka监控KafkaOffsetMonitor【转】

    1.概述 前面给大家介绍了Kafka的背景以及一些应用场景,并附带上演示了Kafka的简单示例.然后,在开发的过程当中,我们会发现一些问题,那就是消息的监控情况.虽然,在启动Kafka的相关服务后,我 ...

随机推荐

  1. phpcms-v9中建立wap手机站点

    web网站用的是phpcms v9搭建的,为了方便手机用户浏览网站,于是用phpcms v9自带的手机门户模块搭建了个wap站(http:.org换成你的wap网站域名----------- 到这一步 ...

  2. Android_就像小朋友“搭积木”一样。

    就像小朋友“搭积木”一样.感觉这句话很有意思.完整的话是这样的: Android提供了大量功能丰富的UI组件,开发者只要按一定规律把这些UI组件组合起来 --就像小朋友“搭积木”一样,把这些UI组件搭 ...

  3. Hark的数据结构与算法练习之图书馆排序

    算法说明 图书馆排序是插入排序的变种,典型的以空间换时间的一种方法.我个人感觉这种思路可以学习借鉴,但直接使用的场景应该不大. 我们知道,真正的插入排序通常往前边插入元素后,我们要把后边所有的元素后移 ...

  4. parseFloat

    parseFloat会把输入完整的数进行比较,不会比较中间数字.

  5. [LintCode] Interleaving Positive and Negative Numbers

    Given an array with positive and negative integers. Re-range it to interleaving with positive and ne ...

  6. 启动TOMCAT报错 java.util.zip.ZipException: invalid LOC header (bad signature)

    报错信息大致如下所示: at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect. ...

  7. Half Sync And Half Async 半同步半异步模式

    如题,这是一个典型的CS结构的模式,至少曾经在CS结构中用过,只是没用好.当年用UDP死活都处理不过来网络命令,用此模式轻松解决. 此模式是典型的三层架构,同步层在一个线程内处理业务逻辑:异步层接受并 ...

  8. extjs 选项卡

    yufenghou extjs 选项卡 <%@ page language="java" import="java.util.*" pageEncodin ...

  9. BZOJ2093 : [Poi2010]Frog

    从左往右维护两个指针l,r表示离i最近的k个点的区间,预处理出每个点出发的后继,然后倍增. #include<cstdio> typedef long long ll; const int ...

  10. 转:Web前端,高性能优化

    高性能HTML 一.避免使用iframe iframe也叫内联frame,可将一个HTML文档嵌入另一个HTML文档中. iframe的好处是,嵌入的文档独立于父文档,通常也借此使浏览器模拟多线程.缺 ...