Flume作为一个强大的日志收集工具,在数据收集方面非常强大。它的SOURCE、SINK、CHANNEL3大组件这类模式,完成数据的接收、传输、发送这个进程。不过flume的监控也随之产生。
1、Flume监控的必要性
Flume尽管功能非常强大,但是需要看到FLume收集的数据信息的时候却没有一个界面能够展现出来,所以需要一个能展现flume实时收集数据动态信息的界面,包括flume成功收集的日志数量、成功发送的体质数量、flume启动时间、停止时间等等。监控能做到这些,有了这些数据,在遇到数据搜集瓶颈和数据丢失的情况下,可以通过分析监控数据来解决问题。
2、Flume的监控方式
(1) Http监控
使用这类监控方式,只需要在启动flume的时候在启动参数上面加上监控配置:
flume-ng agent --conf conf --conf-file conf/server.properties --name collect -Dflume.monitoring.type=http -Dflume.monitoring.port=1111
其中-Dflume.monitoring.type=http表示使用http方式来监控,后面的-Dflume.monitoring.port=1111表示我们需要启动的监控服务器的端口为1111,这个端口号可以自己随便配置。然后通过
http://ip:1111/metrics
就可以得到flume的1个json格式的监控数据。
(2) ganglia监控
这类监控方式需要先安装ganglia然后启动ganglia,然后再启动flume的时候加上监控配置,例如:
flume-ng agent --conf conf --conf-file conf/server.properties --name collect -Dflume.monitoring.type=ganglia -Dflume.monitoring.hosts=ip:port
其中,-Dflume.monitoring.type=ganglia表示使用ganglia方式来监控,而
-Dflume.monitoring.hosts=ip:port表示ganglia安装的ip和启动的端口号。
flume监控还可以使用zabbix,但是这类方式需要在flume源码中添加监控模块,相对比较麻烦,这里flume自带的监控方式其实就是http、ganglia两种,http监控只能通过1个http地址访问得到1个json格式的监控数据,而ganglia监控是拿到这个数据后用界面的形式展现出来。
3、Flume监控的组件,得到的信息
(1)SOURCE
source作为flume的数据源组件,所有搜集日志的第1个到达的地方,它的监控信息非常重要。通过监控我们能够的监控数据:
OpenConnectionCount(打开的连接数)、Type(组件类型)、AppendBatchAcceptedCount(追加到channel中的批数量)、AppendBatchReceivedCount(source端刚刚追加的批数量)、EventAcceptedCount(成功放入channel的event数量)、AppendReceivedCount(source追加目前收到的数量)、StartTime(组件开始时间)、StopTime(组件停止时间)、EventReceivedCount(source端成功收到的event数量)、AppendAcceptedCount(放入channel的event数量)等
(2)CHANNEL
channel是flume的1个通道,对数据有缓存的作用。得到的信息:
EventPutSuccessCount(成功放入channel的event数量)、ChannelFillPercentage(通道使用比例)、Type(组件类型)、EventPutAttemptCount(尝试放入将event放入channel的次数)、ChannelSize(目前在channel中的event数量)、StartTime(组件开始时间)、StopTime(组件停止时间)、EventTakeSuccessCount(从channel中成功取走的event数量)、ChannelCapacity(通道容量)、EventTakeAttemptCount(尝试从channel中取走event的次数)等。
(3)SINK
BatchCompleteCount(完成的批数量)、ConnectionFailedCount(连接失败数)、EventDrainAttemptCount(尝试提交的event数量)、ConnectionCreatedCount(创建连接数)、Type(组件类型)、BatchEmptyCount(批量取空的数量)、ConnectionClosedCount(关闭连接数量)、EventDrainSuccessCount(成功发送event的数量)、StartTime(组件开始时间)、StopTime(组件停止时间)、BatchUnderflowCount(正处于批量处理的batch数)等。