如果是服务器少还好说。如果管理的服务器多服务器的监控是少不了的,
可以用软件监控也可以用 shell 来做监控
列如 我陪到 好几次 服务器 磁盘空间不够了。。
网速被服务器托管给降下来。。等等
上次写的那个shell 有一点点问题。这次改正了。
还是老样子 有问题发邮件提示。
用Android 做邮件接收的软件还在开发中。。由于空闲时间比较少。。开发进度比较慢。。。
不过我们老板告诉我一个解决的办法了。
用 移动 的 139 邮箱。在邮箱里设置 收到邮件立即发短信通知 ,,大家可以式式。。
# !/bin/bash
# @author : chase or 诺瓦
# date 2010-09-23
########################################################################
# This scripts is checking the network and Cpu and disk and memory , vision 2.1 Bate
# 监控 检查 带宽 、Cpu 、磁盘 、内存
# Write by finddream
# If you have some advise about it ,you can mail : heyuejan@163.com or QQ : 287781459
########################################################################
## variable ## 如果没有设环境变量就必须得加入
# ECHO=/bin/echo
# SED=/bin/sed
# AWK=/bin/awk
# UPTIME=/bin/uptime
# VMSTAT=/usr/bin/vmstat
# FREE=/usr/bin/free
# IPTABLES=/sbin/iptables
# GREP=/bin/grep
# TOP=/usr/bin/top
# HEAD=/usr/bin/head
# DF=/bin/df
# CAT=/bin/cat
typeset inv in_old dif_in
typeset out out_old dif_out
typeset timer
typeset eth
# info and logs main dir 记录信息的主目录
DIR_PATH='/home/logs' ## 信息存放的主目录
DATA_V="`date`" ## 时间
HOSTNAMEL="`hostname`" ## 主机名
eth='eth0' ## 网卡
timer=3 ## 监检多少时间
# 邮件
MAIL_TITLE="warning: server name=>$HOSTNAMEL"
MAIL_ETITLE="error: server name=>$HOSTNAMEL"
MAIL_TO="287781459@qq.com"
MESSAGE="$DIR_PATH/mail_message.log"
#####
# @author : chase or 诺瓦
# cpu
NOW_CPU=`top -n 1 |grep 'Cpu(s)' |awk -F '%' '{print $1}' | awk -F ' ' '{print $2}' | awk -F . '{print $1}'`
echo "Time: $DATA_V ==> CPU : $NOW_CPU">>"$DIR_PATH/cpul.log"
# CPU 超过 98% 发邮件 通知
if [ "$NOW_CPU" -ge "95" ]; then
echo "Time: $DATA_V ==> CPU : $NOW_CPU %">>"$DIR_PATH/cpu_log.log"
echo "Time: $DATA_V , server name : $HOSTNAMEL ==> CPU : $NOW_CPU % ">>$MESSAGE
mail -s "$MAIL_TITLE cpu" "$MAIL_TO" < $MESSAGE
rm -rf $MESSAGE
##################################### web server
# @author : chase or 诺瓦
# 是 apache 就可以重启 apache
if [ "$NOW_CPU" -ge "99" ]; then
/www/servers/httpd-2.2.15/bin/httpd -k stop
sleep 1;
#rm -fr /www/web/iximo/wwwiximo/temp/compiled/*
/www/servers/httpd-2.2.15/bin/httpd -k start
echo "apache restart =>Time:$DATA_V ,Host:$HOSTNAMEL == CPU : $NOW_CPU ">>"$DIR_PATH/httpd_restart.log";
# 判断是否己启动 四次循环
wcount=1
twhile=true
while [ twhile ]
do
# 休息 2 秒
sleep 2;
tinfo_val=`curl `
if [ $tinfo_val == "ok" ]
then # 己启动
twhile=false
break;
else # 没启动成功 重启启动
# rm -fr /www/web/iximo/wwwiximo/temp/compiled/*
/www/servers/httpd-2.2.15/bin/httpd -k start
fi
# 启动四次还没有成功
let "wcount = $wcount + 1"
if [ "$wcount" -gt "4" ]; then
echo "apache start error =>Time:$DATA_V ,Host:$HOSTNAMEL">>"$DIR_PATH/httpd_error.log";
echo "Time: $DATA_V , server name : $HOSTNAMEL ==> apache : restart fail ">>$MESSAGE
mail -s "$MAIL_ETITLE error apache" "$MAIL_TO" < $MESSAGE
rm -rf $MESSAGE
twhile=false
break;
fi
sleep 1;
done
fi
##################################### web server
fi