监控调优
原创大约 2 分钟
调优建议
在单节点上启动多个Flume进程时,可以将
conf
目录拷贝多份,然后修改其中的每一个log4j2.xml
,为每一个进程都创建一份单独的日志文件。
进程监控
Flume是一个非分布式的单进程应用,难免会存在单点故障,所以需要有一种机制或方法来监控它的运行状态及可能出现的异常。
Flume是通过配置文件 + 脚本的形式来实现监控的。
配置文件的形式如下。
> cd /home/work/flume-1.11.0/monitor
> vi monitor.conf
# 格式为`key=value`,key是agent名称,value是待执行脚本
# 如果启动多个实例,可以写多个`key=value`
a1=startA1.sh
b1=startB1.sh
c1=startC1.sh
.....
相关的脚本内容如下。
> cd /home/work/flume-1.11.0/monitor
> vi startA1.sh
#!/bin/bash
FLUME_HOME = /home/work/flume-1.11.0
nohup ${FLUME_HOME}/bin/flume-ng agent -n a1 -c ${FLUME_HOME}/conf/ -f ${FLUME_HOME}/conf/flume.conf &
监听Flume进程状态的脚本如下。
> cd /home/work/flume-1.11.0/monitor
> vi monitor.sh
#!/bin/bash
monitor = `cat monitor.conf`
echo "start check..."
for item in ${monitor}
do
# 设置字段分隔符
OLD_IFS = $IFS
IFS = "="
# 切分内容
arr = ($item)
agent = ${arr[0]}
shell = ${arr[1]}
echo "在 "`date +"%Y-%m-%d %H:%M:%S"`" 检查了 "$agent
if [ `jps -m | grep $agent | wc -l` -eq 0 ]
then
# 进程挂掉,可以发出告警通知(邮件或短信)
echo `date +"%Y-%m-%d %H:%M:%S"` $agent " 进程不存在"
# 执行脚本,尝试重启
sh -x ./${shell}
fi
done
比较关键的文件是monitor.conf
,其中的a1
、b1
或c1
,也就是Agent
的名称一定要和后面的配置文件中的名称对应上,否则状态检查时会检查不到。
最后,需要monitor.sh
脚本能够定期执行,以便能够定期检测Flume的状态,所以还需要把monitor.sh
放到定时的任务调度中去执行。
# 增加crontab调度
> sudo crontab -e
*/5 * * * * root /bin/bash /home/work/flume-1.11.0/monitor/monitor.sh
^ ^ ^ ^ ^
| | | | |
| | | | └──── 每周天数(0 - 7,星期天从0开始)
| | | └────── 月份(1 - 12)
| | └──────── 每月的天数(1 - 31)
| └────────── 小时(0 - 23)
└────────────── 分钟(0 - 59)
每隔5分钟执行一次Flume的状态检查任务。
感谢支持
更多内容,请移步《超级个体》。