Shell 写的 Linux 服务器 几个监控点

如果是服务器少还好说。如果管理的服务器多服务器的监控是少不了的,
可以用软件监控也可以用 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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wygsfs.html