Flume 自定义服务监控
在此可以查看一下flume支持的监控指标https://flume.apache.org/releases/content/1.9.0/FlumeUserGuide.html#available-component-metrics
支持四种监控报告方式:
- JMX Reporting
- Ganglia Reporting
- JSON Reporting
- Custom Reporting
上面三种很简单,对照文档改一下配置或加一下执行参数就可以了
下面介绍一下第4种自定义监控
Custom Reporting
我们可以自定义的方式将监控指标发送到我们指定的服务,如上面flume默认的三种JMX Ganglia HttpServer
实现方式:
-
我们需要新建project创建一个自定义类class
-
这个class必须实现接口org.apache.flume.instrumentation.MonitorService
-
将project打包成jar,并拷贝jar到{flume_home}/lib下
-
启动agent的时候时指定
flume.monitoring.type 监控类型也就是我们自定义的类,如com.learn.flum.FlumeMetrics
flume.monitoring.node 监控要发送到的服务,如我们发送到10.211.55.60:61188
$ bin/flume-ng agent --conf-file example.conf --name a1 \ -Dflume.monitoring.type=com.example.reporting.HTTPReporting \ -Dflume.monitoring.node=com.example:332
下面自定义监控类demo
public class FlumeMetrics implements MonitorService {
private ScheduledExecutorService scheduledExecutorService;
/**
* 一些相关配置可以写在这里面,这个方法会先执行
* 也就是开始监控前的一些操作就可以写到这里面
*/
public void configure(Context arg0) {
// TODO Auto-generated method stub
System.out.println("configure ........");
}
/**
* 监控开始,调用我们自定义的监控任务,比如收集的指标,发送到哪里
* 比如我是20秒收集一次指标,打印到控制台
*/
public void start() {
System.out.println("start ........");
MetricsCollector collector = new MetricsCollector();
if (scheduledExecutorService == null || scheduledExecutorService.isShutdown() || scheduledExecutorService.isTerminated())