所有文件已打包网盘
链接:https://pan.baidu.com/s/19wW1-aAEgIpsRzjXGjeq8w
提取码:9rpz
--来自百度网盘超级会员V4的分享
flume启停脚本
脚本名称:flume.sh
#!/bin/bash
source /etc/profile &>/dev/null
#echo "begin start flume..."
#flume的安装根目录(根据自己情况,修改为自己的安装目录)
path=/data/service/apache-flume-1.9.0-bin
echo "flume home is :$path"
#flume的进程名称,固定值(不用修改)
JAR="flume"
#flume的配置文件名称(根据自己的情况,修改为自己的flume配置文件名称)
Flumeconf="bigdata-import-kafka.conf"
#定义的soure名称
agentname="a1"
function start(){
echo "begin start flume process ...."
#查找flume运行的进程数
num=`ps -ef|grep java|grep $JAR|wc -l`
#判断是否有flume进程运行,如果有则运行执行nohup命令
if [ "$num" = "0" ] ;then
nohup $path/bin/flume-ng agent --name $agentname --conf conf -f $path/conf/$Flumeconf -Dflume.root.logger=INFO,console >> $path/conf/logs/flume.log &
echo "start success...."
echo "日志路径: $path/logs/flume.log"
else
echo "进程已经存在,启动失败,请检查....."
exit 0
fi
}
function stop(){
echo "begin stop flume process.."
num=`ps -ef|grep java|grep $JAR|wc -l`
#echo "$num...."
if [ "$num" != "0" ];then
#正常停止flume
ps -ef|grep java|grep $JAR|awk '{print ;}'|xargs kill
echo "进程已经关闭..."
else
echo "服务未启动,无须停止..."
fi
}
function restart(){
#echo "begin stop flume process .."
#执行stop函数
stop
#判断程序是否彻底停止
num='ps -ef|grep java|grep $JAR|wc -l'
#stop完成之后,查找flume的进程数,判断进程数是否为0,如果不为0,则休眠5秒,再次查看,直到进程数为0
while [ $num -gt 0 ];do
sleep 5
num='ps -ef|grep java|grep $JAR|wc -l'
done
echo "flume process stoped,and starting..."
#执行start
start
echo "started...."
}
#case 命令获取输入的参数,如果参数为start,执行start函数,如果参数为stop执行stop函数,如果参数为restart,执行restart函数
case in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo '参数错误'
;;
esac
需要修改的地方一般是
- flume的安装根目录(根据自己情况,修改为自己的安装目录)
path=/data/service/apache-flume-1.9.0-bin
- flume的安装根目录(根据自己情况,修改为自己的安装目录)
- 2.#flume的配置文件名称(根据自己的情况,修改为自己的flume配置文件名称)
Flumeconf="bigdata-import-kafka.conf" - 3.#定义的soure名称
agentname="a1"
使用方法
以上脚本命名成.sh文件,例如我命名为 flume.sh ,存放路径为 /sysware
- 调用start 函数:
sh /sysware/flume.sh start
- 调用 stop命令
sh /sysware/flume.sh stop
- 调用重启命名
sh /sysware/flume.sh restart
以上脚本即可完成flume的start,stop,restart,并且在后台运行的需求。
zabbix自动发现脚本
脚本路径及名称:
/etc/zabbix/scripts/check_FLU_process.sh
#echo
#sum ps -axu|grep -w [S]erver|grep |wc -l
function flume_discovery(){
ps aux|grep -w [f]lume|awk '{print $NF}'|grep conf|sed 's#.conf##g'|sed 's#.*/##g' >/tmp/flume_tmp.txt
server_list=`cat /tmp/flume_tmp.txt`
sum=`cat /tmp/flume_tmp.txt |wc -l`
INDEX=0
printf '{\n'
printf '\t"data":[\n'
for n in $server_list;
do
INDEX=`expr $INDEX + 1`
if [ "$INDEX" -lt "$sum" ]; then
printf '\t {\n'
printf "\t\t\t\"{#TABLENAME}\":\"${n}\"},\n"
else
printf '\t {\n'
printf "\t\t\t\"{#TABLENAME}\":\"${n}\"}\n"
fi
done
printf '\t ]\n'
printf '}\n'
}
function checkServerStatus()
{
status=`ps aux|grep -w [f]lume|awk '{print $NF}'|grep conf|grep -c ""`
if [ "$status" != "1" ];
then
return 0;
else
return 1;
fi
}
if [ ! -n "" ];then
echo "请传递正确的参数!!"
else
case in
discovery)
flume_discovery
;;
*)
checkServerStatus
echo $?
esac
fi
conf文件
文件名及路径:/etc/zabbix/zabbix_agentd.d/flume.conf
UserParameter=flume_process_discovery,/etc/zabbix/scripts/check_FLU_process.sh discovery
UserParameter=check_flume_process[*],/etc/zabbix/scripts/check_FLU_process.sh