Flume http监控

作者: 君子月满楼 | 来源:发表于2016-10-29 13:01 被阅读178次

    原创文章,只为记录与交流,未禁允许严禁转载。
    君子月满楼,想成为生活家的0岁女开发。


    导读

    1. http监控方式优点
    2. http监控使用方式一
    3. http监控使用方式二
    4. 实例:使用http监控统计eps(event per second)
    5. 相关文章推荐

    http监控方式优点

    Flume自带监控,并且有Ganglia(JXM)、Http(JSON)、自定义三种监控方式。本文讨论Http监控方式。

    Http监控是三种监控方式中最简便、易于操作的方式,既不需要安装Ganglia组件、也不需要自己编写代码统计监控数据。Http监控主要思路:

    1. 启动命令中通过参数定义监控方式和监控端口
    2. Flume程序启动时,判断监控方式为Http监控,启动jetty服务器。
    3. Flume自带的各监控组件运行时,向Jetty服务器注册监听。
    4. Jetty服务器将各组件中XXXCounter类相关的监控参数显示在web监控界面。

    http监控使用方式一

    Http监控最原始、最简单的方法就是直接使用:启动命令定义,web界面查看。无需任何代码添加或者改动。

    我们来分析一下其原理:
    flume在启动jetty服务端后,会获取所有监控组件及其相关监控参数。所有监控组件都会并且必须使用到XXXCounter类,并在组件代码的方法中为监控参数进行各种值操作(increment、add)。

    这些XXXCounter都继承抽象类MonitoredCounterGroup。Flume自带组件代码中都有XXXCounter类型变量计数,因此Http监控可以直接监控这些组件及其对应XXXCounter变量统计的参数,并从web界面看到。然而对于自定义的组件,如果没有定义与使用XXXCounter类,web界面是无法看到这个组件的监控数据。

    所以,如果网页上看不到flume组件监控数据,请检测:

    1. 该组件是否是flume自带的;
    2. 该组件中是否有XXXCounter类;
    3. XXXCounter类是都正确使用;
      (1) XXXCounter类名字正确,XXX部分可自定义,但Counter几个字母不能写错(网上看到的,待验证)
      (2)使用start()方法进行注册;

    如果监控界面有flume组件监控参数,但数据不更新,请检测:

    1. 该组件是否有数据经过;
    2. 该组件是否使用了XXXCounter类型变量的incrementXXX、addXXX方法。

    http监控使用方式二

    除了直接使用,http监控还有第二种使用方式:利用该监控方式监控参数实现其他功能。

    这种使用方法有两个思路:

    1. 使用http方法获取监控网页中的数据。此思路需要在启动命令中使用定义监控参数。
    2. 在自定义组件中使用XXXCounter类变量的incrementXXX、addXXX等方法。此思路不需要在启动命令中使用定义监控参数。

    实例: 使用http监控监控eps

    监控对象为一个自定义组件pSource的inEps和outEps。

    思路

    1. pSource组件代码中定义并使用flume自带sourceCounter。(其实flume自带的source相关计数器有很多,比如kafkaSourceCounter等)
    2. 在启动组件时使用sourceCounter类型变量的start方法;
    3. 在进入一个数据是使用incrementA方法,在吐出数据是使用incrementB方法。具体方法名自己选取,但要有区别,用于记录组件进入和出去的个数。(此方法不严谨,需要注释两个方法记录的是in数据还是out数据)
    4. 每隔一段时间,读取本次计数器数据,求出与上次计数器数据差,除时间间隔(秒),就得到了event per second。

    推荐阅读

    1. github源码:https://github.com/apache/flume

    相关文章

      网友评论

        本文标题:Flume http监控

        本文链接:https://www.haomeiwen.com/subject/qbxyuttx.html