zoukankan      html  css  js  c++  java
  • 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还是比较好用的,有如下几种类型的度量,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的多样性

    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

  • 相关阅读:
    一些业内有名的网站收集
    WCF重载
    FCKEditor fckconfig.js配置,添加字体和大小 附:中文字体乱码问题解决
    查询第几条到第几条的数据的SQL语句
    SPOJ 9939 Eliminate the Conflict
    UVA 10534 Wavio Sequence
    HDU 3474 Necklace
    POJ 2823 Sliding Window
    UVA 437 The Tower of Babylon
    UVA 825 Walking on the Safe Side
  • 原文地址:https://www.cnblogs.com/fxjwind/p/3816845.html
Copyright © 2011-2022 走看看