当前位置: 首页>移动开发>正文

flume 启停脚本和zabbix 自动发现

所有文件已打包网盘
链接: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

需要修改的地方一般是

    1. flume的安装根目录(根据自己情况,修改为自己的安装目录)
      path=/data/service/apache-flume-1.9.0-bin
  • 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 

zabbix模板见网盘


https://www.xamrdz.com/mobile/4n91997319.html

相关文章: