我们在线上跑的服务,不知道为什么最近有几回运行的进程莫名其妙的就没有了,就特意写了这个监控脚本,让其自动扫描服务,把访问不正常的服务,自动启动或重启服务,并且导出当时的线程使用情况,方便定位问题。
步骤:
1.修改web服务名称和端口
monitorTcp.sh
2.修改扫描时间
monitorServer.sh
3.启动守候进程
/usr/bin/nohup /bin/sh /home/Gzh/shell/monitorServer.sh 2>&1 > /dev/null &
monitorServer.sh
- #!/bin/sh
- ###########################################################
- #desc:后台守候检查服务是否正常
- #author:gaozhonghui
- #mail:toptreegzh@163.com
- #date:20121210
- ###########################################################
- while true
- do
- /bin/sh /home/Gzh/shell/monitorTcp.sh > /dev/null 2>&1
- sleep 10
- done
#!/bin/sh ########################################################### #desc:后台守候检查服务是否正常 #author:gaozhonghui #mail:toptreegzh@163.com #date:20121210 ########################################################### while true do /bin/sh /home/Gzh/shell/monitorTcp.sh > /dev/null 2>&1 sleep 10 done
monitorTcp.sh
- #!/bin/sh
- #####################################################
- #desc:扫描后台服务器的应用服务器,若不能正常访问则重启
- #author:gaozhonghui
- #mail:toptreegzh@163.com
- #date:20121127
- #######################################################
- year=`date -d "today" +"%Y"`
- monthday=`date -d "today" +"%m"`
- date=$(date -d "today" +"%Y%m%d")
- #被监控服务器、端口列表
- #str = web服务文件夹:端口号
- server_all_list=(
- 'www.test2.com:9090'
- 'www.test.com:8090'
- )
- #应用服务器基路径
- serverBasePath="/web/webserver/jboss/"
- #日志路径
- logBasePath="/web/webserver/logs/$year/$monthday/"
- #获得监控服务PID
- function_getPID(){
- local PID=`ps -ef|grep $1|grep java |awk '{print $2}'`
- echo $PID
- }
- #dump 线程详细信息方便定位问题
- function_jstackinfo(){
- PID=`function_getPID $1`
- if [ x$PID != x"" ] ;then
- if [ ! -d ${logBasePath} ];then
- mkdir -p ${logBasePath}
- fi
- jstack -l ${PID} >> ${logBasePath}"jstack_$1_${date}.log"
- fi
- }
- #关闭应用服务
- function_shutdown(){
- local shutdownSh=${serverBasePath}$1"/bin/shutdown.sh"
- if [ -f $shutdownSh ];then
- local PID=`function_getPID $1`
- if [ x$PID != x"" ] ;then
- sh $shutdownSh > /dev/null 2>&1
- sleep 2
- fi
- local PID2=`function_getPID $1`
- if [ x$PID2 != x"" ];then
- kill -9 $PID2
- fi
- fi
- }
- #启动应用服务
- function_startup(){
- local startupSh=${serverBasePath}$1"/bin/startup.sh"
- if [ -f $shutdownSh ];then
- sh $startupSh > /dev/null 2>&1
- fi
- }