Shell监控系统脚本

(1)监控服务进程的端口,当服务进程的端口不通时,自动重启服务进程。这个需要该服务进程始终监听某一特殊端口,并当服务停止或不能正常提供服务时。

脚本样例,监控jboss服务器的8080端口,当该端口不通时,自动重启jboss服务器。

#!/bin/sh<br />
netstat -an|grep -q 8080<br />
if [ $? -ne 1 ]; then exit; fi<br />
cd /home/jboss-3.2.6/bin<br />
echo “Jboss Service restart at” &gt;&gt;WatchDog.log<br />
date &gt;&gt;IntfWatchDog.log<br />
/home/jboss-3.2.6/bin/jboss restart

(2)监控服务进程的日志,比较日志的最后修改时间与系统当前时间(对比到分钟数而已),若两时间差超过某一值时,说明服务进程不能正常提供服务了,对服务进程进行重启。这个监控方法使用于服务进程会定期记录日志的情况。

样例脚本,当服务日志最后修改时间与系统时间相差超过5分钟时,自动重启服务进程。

#!/bin/sh<br />
file=/home/log/xxx.log<br />
#t1 is current minute ,t2 is file’s last modify minute<br />
t1=<code>date |awk ‘{ print $4 }’|cut -d: -f 2</code><br />
t2=<code>ls -l $file|awk ‘{print$8}’|cut -d: -f2</code></p>
<p>#compare the differ minute of the two<br />
diff=<code>expr $t1 – $t2</code><br />
#echo $diff<br />
if [ $diff -lt "0" -o $diff -gt "5" ]; then #当$diff小于0 或者 $diff大于5<br />
echo “service restart at <code>date</code>” &gt;&gt;/home/log/Watch.log;

【这里需要输入该进程服务启动的脚本】
fi;

(3)监控服务进程的日志,比较日志与日志临时文件的md5值(日志每改变一次md5值马上也会改变所以比第二种对比时间更准确),若两md5值相同(也就是日志已经没有在打印),说明服务进程不能正常提供服务了,对服务进程进行重启。这个监控方法使用于服务进程会定期记录日志的情况。

#/bin/bash<br />
SHELLDIR=/usr/local/shell #此脚本的路径<br />
CHECKDIR=/home/pd/log/timer_log #被监控日志的路径<br />
PRGDIR=/home/pd/prg #程序路径<br />
TMPFILE=$SHELLDIR/pd_timer_log.tmp #要生成被对比的临时文件的路径<br />
CURTS=<code>/usr/bin/md5sum $CHECKDIR/pd_timer_log.log</code> #显示此log的md5值<br />
LASTTS=<code>cat $TMPFILE</code> #查看生成的临时文件(临时文件在脚本最后一行)</p>
<p>if [ "$CURTS" = "$LASTTS" ] #如果原log文件的md5值等于临时文件的md5值<br />
then<br />
echo “coupon app stops running, restart it now at <code>date +’%F %T’</code>” &gt;&gt; /var/logs/monitor_timer_log.log<br />
cd $PRGDIR<br />
/bin/bash $PRGDIR/couponTimer.sh<br />
fi<br />
/usr/bin/md5sum $CHECKDIR/pd_timer_log.log &gt; $TMPFILE #生成临时文件,此文件是为下次作对比用的
标签: 无
返回文章列表 文章二维码
本页链接的二维码
打赏二维码