Flume自带监控,并且有Ganglia(JXM)、Http(JSON)、自定义三种监控方式。本文讨论Http监控方式^^
http监控方式优点
Flume自带监控,并且有Ganglia(JXM)、Http(JSON)、自定义三种监控方式。本文讨论Http监控方式。
Http监控是三种监控方式中最简便、易于操作的方式,既不需要安装Ganglia组件、也不需要自己编写代码统计监控数据。Http监控主要思路:
- 启动命令中通过参数定义监控方式和监控端口
- Flume程序启动时,判断监控方式为Http监控,启动jetty服务器。
- Flume自带的各监控组件运行时,向Jetty服务器注册监听。
- Jetty服务器将各组件中XXXCounter类相关的监控参数显示在web监控界面。
http监控使用方式一
Http监控最原始、最简单的方法就是直接使用:启动命令定义,web界面查看。无需任何代码添加或者改动。
我们来分析一下其原理: flume在启动jetty服务端后,会获取所有监控组件及其相关监控参数。所有监控组件都会并且必须使用到XXXCounter类,并在组件代码的方法中为监控参数进行各种值操作(increment、add)。
这些XXXCounter都继承抽象类MonitoredCounterGroup。Flume自带组件代码中都有XXXCounter类型变量计数,因此Http监控可以直接监控这些组件及其对应XXXCounter变量统计的参数,并从web界面看到。然而对于自定义的组件,如果没有定义与使用XXXCounter类,web界面是无法看到这个组件的监控数据。
所以,如果网页上看不到flume组件监控数据,请检测:
- 该组件是否是flume自带的;
- 该组件中是否有XXXCounter类;
- XXXCounter类是都正确使用; (1) XXXCounter类名字正确,XXX部分可自定义,但Counter几个字母不能写错(网上看到的,待验证) (2)使用start()方法进行注册;
如果监控界面有flume组件监控参数,但数据不更新,请检测:
- 该组件是否有数据经过;
- 该组件是否使用了XXXCounter类型变量的incrementXXX、addXXX方法。
http监控使用方式二
除了直接使用,http监控还有第二种使用方式:利用该监控方式监控参数实现其他功能。
这种使用方法有两个思路:
- 使用http方法获取监控网页中的数据。此思路需要在启动命令中使用定义监控参数。
- 在自定义组件中使用XXXCounter类变量的incrementXXX、addXXX等方法。此思路不需要在启动命令中使用定义监控参数。
实例: 使用http监控eps
监控对象为一个自定义组件pSource的inEps和outEps。
思路:
- pSource组件代码中定义并使用flume自带sourceCounter。(其实flume自带的source相关计数器有很多,比如kafkaSourceCounter等)
- 在启动组件时使用sourceCounter类型变量的start方法;
- 在进入一个数据是使用incrementA方法,在吐出数据是使用incrementB方法。具体方法名自己选取,但要有区别,用于记录组件进入和出去的个数。(此方法不严谨,需要注释两个方法记录的是in数据还是out数据)
- 每隔一段时间,读取本次计数器数据,求出与上次计数器数据差,除时间间隔(秒),就得到了event per second。
推荐阅读
- github源码:https://github.com/apache/flume
如果您需要了解更多内容,可以
加入QQ群:570982169、486207500
直接询问:010-68438880-8669