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

  • 相关阅读:
    浅谈SQL优化入门:1、SQL查询语句的执行顺序
    RabbitMQ 第三课 Exchange交换机详解
    RabbitMQ 第二课 快速入门
    RabbitMQ 第一课 RabbitMQ基本概念
    別人的JVM博客总结
    MySQL面试题 数据库MySQL经典面试题之SQL语句
    Swagger介绍及使用
    hcjk_SQL_FinReport_ismealFlag_Version
    hcjk_SQL 退费干掉,组套全展开,但0元被删掉了,退费的打印待沟通
    hcjk_fr 查询SQL,支持组套
  • 原文地址:https://www.cnblogs.com/fxjwind/p/3816845.html
Copyright © 2011-2022 走看看