Flume http监控浅析

Flume自带监控,并且有GangliaJXM)、HttpJSON)、自定义三种监控方式。本文讨论Http监控方式^^

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

如果您需要了解更多内容,可以
加入QQ群:570982169、486207500
直接询问:010-68438880-8669

Spread the word. Share this post!

Meet The Author

Leave Comment