目录
一、系统需求
- 操作系统:Linux
- Python ≥ 2.6
- python-requests
二、逻辑原理
通过 Flume 进程运行时暴露的 Http 接口获取 Flume 组件信息,通过 Python 解析组件信息,将得到的 json 数据格式的结果输出到标准输出。
启动 flume agent 时添加java环境变量:-Dflume.monitoring.type=http -Dflume.monitoring.port=10520
,端口可以自己指定。
举个例子,编辑(Flume NG 之线上实际应用方案) supervise 的 run 文件:
#!/bin/bash
flume-ng agent --conf ${FLUME_HOME}/conf -Dflume.monitoring.type=http -Dflume.monitoring.port=10520 --conf-file /home/flume/flumeng/conf/flume-higo_nginx-hdfs.conf --name higo_nginx
将脚本(60_flume-monitor.py)放置到 falcon-agent 的 plugin/Base_Flume_plugin 目录,在 portal 上将 plugin 目录绑定到相应的 host group,falcon-agent 通过自身的调度器执行该脚本,由 falcon-agent 解析脚本的标准输出,将得到监控项推送到 falcon-judge 进行报警阀值判断判断。
三、汇报字段
Flume metrics页面内的数据分为三部分:
-
SOURCE:Flume 的数据源组件,所有收集日志的第一个到达的地方;
-
CHANNEL:Flume 的通道组件,对数据具有缓存的作用;
-
SINK:数据离开 Flume 前的最后一个组件,负责从 channel 中取走数据,然后发送到缓存系统或者持久化数据库。
除去 StartTime、StopTime、Type 以及 ChannelCapacity(通道容量)之外,所有数据均汇报,上报的数据 metric 会添加对应名称(配置文件中的 source、channel、sink 的名称)前缀,并且在 tag 中上传 Flume 进程的监听端口号:
参考资料(flume官网):http://flume.apache.org/FlumeUserGuide.html#json-reporting
监控集群架构:Flume NG 之线上实际应用方案
配置 | 名称(前缀) | metric | tag | type | note |
---|---|---|---|---|---|
SOURCE |
Agent00、Agent01:
|