storm系统监控脚本

来源:互联网 发布:java无参数函数调用 编辑:程序博客网 时间:2024/06/05 15:29
关于nimbus没有自动重启机制,如何保证系统挂掉后重启的问题。写了个集群免登陆的脚本,及集群ZK操作的脚本。免登陆后再执行zk操作脚本,我们就可以在一台机子上启动集群的ZK、停止ZK及查看ZK状态等等。
nimbus监控脚本,只需要后台让他执行就行了,他会自动检测nimbus是否挂掉,如果挂掉就会重启他,有点像nimbus守护进程类似的东西,顺便还给他写了monitor监控的log,方便查询。

1. sshFreeLogin.sh 该脚本用于ip之间免登陆设置,在storm集群中,往往很多时候只有一个操作界面,需要登录的其他节点进行操作,设置免登陆后,该操作会变的更简单。

sshFreeLogin.sh:
#!/bin/bash
 
#author:  yanshilin
 
function Echo() {
         parameter=$1
         name=$2
         if [ $1 -ne 1 ]; then
                 echo "Usage:  $2  ip.list"
                 echo "        please input ip.list for freelogin and password next"
                 exit 1
         fi      
}
 
function LocalSsh() {
         remote=$1
         echo "------------------------------------------------------------"
         echo "Begin to set Local-Remote free login!"
         ssh-keygen -t rsa -P ''
         scp /root/.ssh/id_rsa.pub  $1:/root/id_rsa.pub
         ssh $1 'cat /root/id_rsa.pub >> /root/.ssh/authorized_keys'
         ssh  $1 'chmod 600  /root/.ssh/authorized_keys'
         echo "Local-Remote free login set Ok!"
         echo "------------------------------------------------------------"
}
 
if [ $# -eq 1 ]; then
         num=`awk 'END{print NR}' $1`
         echo 'Set free login ip.list:'
 
         for ((i=1;i<=$num;i++)); do
                   ip=`cat $1 | sed -n ''$i'p'`
                   echo $ip
                   LocalSsh $ip
         done
else
         Echo $# $0
fi

2. optZk.sh 该脚本主要是ZK集群操作,配合免登陆设置,可以在一台机子上进行ZK集群的启动,停止及查看状态等操作。该脚本稍微改改就可以用于其它集群类型的操作。代码很简单,可以自己看看。
optZk.sh:
#!/bin/bash
 
#author:  yanshilin
 
function Echo() {
         parameter=$1
         name=$2
         if [ $parameter -ne 2 ]; then
                 echo "Usage:  $name ip.list  start/stop/status"
                 echo "        please input ip.list opt"
                 exit 1
         fi      
}
 
function optZk() {
         ip=$1
         opt=$2     
         echo "------------------------------------------------------------"
         echo "Begin to '$opt' '$ip' ZK:"
         ssh $1 '/usr/local/zookeeper/bin/zkServer.sh '$opt''
         echo "------------------------------------------------------------"
}
 
if [ $# -eq 2 ]; then
         num=`awk 'END{print NR}' $1`
 
         for ((i=1;i<=$num;i++)); do
                   ip=`cat $1 | sed -n ''$i'p'`
                   echo $ip
                   optZk $ip $2
         done
else
         Echo $# $0
fi

3. monitorNimbus.sh 该脚本用于nimbus的监控,只需后台执行该脚本,该脚本会自动监控nimbus的运行,当检测到挂掉以后,会自动重启,并且会把监控结果以log的形式保存下来。

MonitorNimbus.sh:
#!/bin/bash
 
#author:  yanshilin
 
function Init() {
         date=`date +%Y%m%d%H%M%S`
         echo ''$date': Begin monitor nimbus.' > monitorNimbus.log
}
 
function MonitorNimbus() {
         for ((;;)); do
                   num=`ps aux | grep nimbus | grep -v grep | wc -l`
                   if [ $num -eq 0 ]; then
                            date1=`date +%Y%m%d%H%M%S`
                            echo ''$date1': nimbus is down, and restarting!' >> monitorNimbus.log
                            storm nimbus&
                   fi
                   sleep 60
         done
          
}
 
Init
MonitorNimbus
exit 1
0 0