« 城之忧伤 | Main | 不小心赶了个苹果的时髦-新macbook »

一个用来监视和收集服务器某种异常状态的脚本

作者:virushuo 发表于 2008-09-30 13:09 最后更新于 2008-09-30 13:09
版权声明:按照by-nc-sa的cc协议可转载,拒绝采用“独家” 授权媒介(含网站和平面媒体)转载、引用、链接,除非获得本人许可。转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。


有一台服务器,间歇性出现io急剧升高的状态,一直没找到原因。所以做了这个脚本。一下就找到了。放在这里共享给大家,谁有用自己改改用吧。


monitor.sh

#首先从vmstat中取得需要的数据。vmstat命令的结果如下:我们需要最后一行的数字。本例中是第一个r。(r: The number of processes waiting for run time.)
#procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
# r b swpd free buff cache si so bi bo in cs us sy id wa st
# 0 1 0 6350084 206432 5896400 0 0 0 77 6 8 1 1 91 7 0
#
vmb=$(vmstat | tail -1 | cut -c5-10|cut -d" " -f1)
# r 大于5的时候开始做log
if [ ${vmb} -gt 5 ]
then
date >> /root/all.log
vmstat >> /root/all.log
netstat -anp >> /root/all.log
ps -aux >> /root/all.log
#分别输出 时间,vmstat的全部数据,netstat的连接状态,所有任务状态等。你可以自己加需要的。
logdate=$(date +%Y%m%d)
echo '---------' >> /root/all.log
tail -100 /var/logs/http-access_log.${logdate} >> /root/all.log
#这部分是为了取得异常时候的访问log。因为我的日志是带有日期的,所以先用date命令来生成当前的时间
fi


然后放在crontab里面,每秒运行一次就可以了。很简单的脚本,不过很实用。一下就找到了问题是sendmail发送大量邮件造成的。

钱宏武老师对此亦有贡献。

相关文章:
blog comments powered by Disqus
CC License. Some rights reserved.
署名·非商业用途·保持一致
本站之所有未作特别说明的内容均使用 创作共用协议.
POWERED_BY_MT_3.2