0
点赞
收藏
分享

微信扫一扫

简单的监控服务状态并重启脚本

这个是最简单进行匹配程序进程和端口的监控方法

其中例如nginx监控时可能会碰到:8081 :8082的情况,也会匹配到,可以使用grep -w :80 使用-w参数进行详细匹配

#!/bin/bash
. /etc/profile
echo "开始检查 redis nginx nacos jenkins服务 ......"
sleep 5


#监控redis服务,死掉自动重启
F="redis-server"
A=`ps aux | grep redis-server|grep -v grep|awk '{print $2}'`
B=`netstat -tunple | grep 6379|awk -F '[/ ]+' '{print $9}'|uniq`
C=`ps aux | grep redis-server|grep -v grep|awk '{print $2}'|wc -l`
if [[ $C > 0 ]] && [[ $A = $B ]] ;then
echo "[`date "+%Y/%m/%d %H:%M:%S"` $F 服务正常]" >> /root/moni.log
echo -e "\033[32m[`date "+%Y/%m/%d %H:%M:%S"` $F 服务正常]\033[0m"
else
echo -e "\033[31m[`date "+%Y/%m/%d %H:%M:%S"` $F 服务不匹配]\033[0m"
kill -9 $B
sleep 1
/data/redis/bin/redis-server /data/redis/redis.conf
sleep 5
fi

echo "检查 $F 中 ......"
sleep 5

#监控nginx服务,死掉自动重启
F="nginx"
A=`ps aux | grep 'nginx: master process' |grep -v grep|awk '{print $2}'`
B=`netstat -tunple |grep 'nginx: master' |grep :80|awk -F '[/ ]+' '{print $9}'|uniq`
C=`ps aux | grep 'nginx: master process' |grep -v grep|awk '{print $2}'|wc -l`
D=`ps aux | grep 'nginx' |grep -v grep|awk '{print $2}'|xargs`
if [[ $C > 0 ]] && [[ $A = $B ]] ;then
echo "[`date "+%Y/%m/%d %H:%M:%S"` $F 服务正常]" >> /root/moni.log
echo -e "\033[32m[`date "+%Y/%m/%d %H:%M:%S"` $F 服务正常]\033[0m"
else
echo -e "\033[31m[`date "+%Y/%m/%d %H:%M:%S"` $F 服务不匹配]\033[0m"

kill -9 $D
sleep 1
systemctl restart nginx
sleep 5
fi

echo "检查 $F 中 ......"
sleep 5

#监控nacos服务,死掉自动重启
F="nacos"
A=`ps aux | grep 'nacos-server.jar' |grep -v grep|awk '{print $2}'`
B=`netstat -tunple | grep :8848|awk -F '[/ ]+' '{print $9}'|uniq`
C=`ps aux | grep 'nacos-server.jar' |grep -v grep|awk '{print $2}'|wc -l`
D=`ps aux | grep 'nacos-server.jar' |grep -v grep|awk '{print $2}'|xargs`
if [[ $C > 0 ]] && [[ $A = $B ]] ;then
echo "[`date "+%Y/%m/%d %H:%M:%S"` $F 服务正常]" >> /root/moni.log
echo -e "\033[32m[`date "+%Y/%m/%d %H:%M:%S"` $F 服务正常]\033[0m"
else
echo -e "\033[31m[`date "+%Y/%m/%d %H:%M:%S"` $F 服务不匹配]\033[0m"
kill -9 $D
sleep 1
/data/nacos/bin/startup.sh
echo $(echo -e "\n")
sleep 5
echo $(echo -e "\n")
fi

echo "检查 $F 中 ......"
sleep 5

#监控jenkins服务,死掉自动重启

F="jenkins"
A=`ps aux | grep 'jenkins.war' |grep -v grep|awk '{print $2}'`
B=`netstat -tunple | grep :8081|awk -F '[/ ]+' '{print $9}'|uniq`
C=`ps aux | grep 'jenkins.war' |grep -v grep|awk '{print $2}'|wc -l`
D=`ps aux | grep 'jenkins.war' |grep -v grep|awk '{print $2}'|xargs`
if [[ $C > 0 ]] && [[ $A = $B ]] ;then
echo "[`date "+%Y/%m/%d %H:%M:%S"` $F 服务正常]" >> /root/moni.log
echo -e "\033[32m[`date "+%Y/%m/%d %H:%M:%S"` $F 服务正常]\033[0m"
else
echo -e "\033[31m[`date "+%Y/%m/%d %H:%M:%S"` $F 服务不匹配]\033[0m"
kill -9 $D
sleep 1
nohup java -Xms2024m -Xmx4048m -XX:PermSize=512M -XX:PermSize=1024M -jar /data/jenkins/jenkins.war --httpPort=8081 &
sleep 5
echo $(echo -e "\n")
fi

举报

相关推荐

重启脚本

0 条评论