一个简单的日志监控脚本

用最小的成本实现的一个日志监控程序,示例如下:

#!/bin/sh
sleep 5m
log=/var/log/php5.log
tail -Fn0 $log | \
while read line; do
echo $line | grep 'Fatal error'
if [ $? = 0 ]
then
pids=$(ps aux | grep $0 | grep -v 'grep' | awk '{print $2}')
php mail_error.php 'PHP Fatal error' "$line" # do what you want to do
sh $0 "$@" &
[ "$pids" != "" ] && kill -9 $pids
fi
done

代码副本:https://gist.github.com/tomheng/7600651

程序会在找到第一个错误的时候后会重新启动自己(先kill 掉自己,然后再启动),此外程序开始的时候会有一个休眠时间。这样做防止同一个错误被不断的报错,特别是访问量大的时候可以会造成问题(如果有报警的话,也会造成干扰)。当然这样同时也产生了一个负面问题,因为有休眠时间,所以有可能会漏掉一部分错误日志,不过这个应该影响不大。

发邮件的话可以用PHPMailer,简单实用,特别是对那些没有安装软件权限的主机。

顺祝周末愉快,亲~

一个简单的日志监控脚本》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注