全球主机交流论坛

标题: 我的监控脚本,写的垃圾请大家不要笑我~~~ [打印本页]

作者: webproxy    时间: 2011-12-27 22:25
标题: 我的监控脚本,写的垃圾请大家不要笑我~~~
最好不要用于监控有同名子进程的程序,侦测的值会比实际的值大~~~
  1. #!/bin/sh

  2. PROCESS_NAME=$1
  3. CPU_MAX_USERATE=$2
  4. MEM_MAX=$3
  5. #MEM_MAX_USERATE=$3
  6. CYCLE=$4
  7. MAX_EXCEED_SET_NUMBER=$5
  8. MAX_RESTART_NUMBER=$6

  9. CPU_MAX_USERATE_I=0
  10. MEM_MAX_USERATE_I=0
  11. MEM_MAX_I=0
  12. MAX_RESTART_NUMBER_I=0
  13. while true; do
  14.         MEM_USERATE=`ps -C $PROCESS_NAME -o %mem | awk 'BEGIN{a=0.0;}/[0-9]/{a+=$1;}END{print a;}'`
  15.         CPU_USERATE=`ps -C $PROCESS_NAME -o %cpu | awk 'BEGIN{a=0.0;}/[0-9]/{a+=$1;}END{print a;}'`
  16.         MEM=`ps -C $PROCESS_NAME -o rss | awk 'BEGIN{a=0.0;}/[0-9]/{a+=$1;}END{print a;}'`
  17.         ((MEM=MEM/1024))
  18.         if (echo $MEM 0.1 $MAX_RESTART_NUMBER_I | awk '!(($1 >= $2) && ($3 >= 1)){exit 1}') then
  19.                 MAX_RESTART_NUMBER_I=0
  20.                 #echo $(date) $PROCESS_NAME' already strat' >> /log/$PROCESS_NAME.log
  21.         fi
  22.         if (echo $CPU_USERATE $MEM_USERATE $MEM | awk '!(($1 == 0) || ($2 == 0) || ($3 == 0)){exit 1}') then
  23.                 # Program is not start or already shut down
  24.                 # restart or start code
  25.                 echo 'restart '$PROCESS_NAME
  26.                 /sbin/service $PROCESS_NAME restart
  27.                 #echo $(date) $PROCESS_NAME' restart' >> /log/$PROCESS_NAME.log
  28.                 CPU_MAX_USERATE_I=0; MEM_MAX_USERATE_I=0; MEM_MAX_I=0;
  29.                 ((MAX_RESTART_NUMBER_I=MAX_RESTART_NUMBER_I+1))
  30.                 sleep 10
  31.         fi
  32.         if (echo $CPU_USERATE $CPU_MAX_USERATE | awk '!($1 >= $2){exit 1}') then
  33.                 ((CPU_MAX_USERATE_I=CPU_MAX_USERATE_I+1))
  34.                 echo 'CPU_MAX_USERATE_I='$CPU_MAX_USERATE_I 'CPU_USERATE='$CPU_USERATE
  35.         fi
  36. #       if (echo $MEM_USERATE $MEM_MAX_USERATE | awk '!($1 >= $2){exit 1}') then
  37. #               ((MEM_MAX_USERATE_I=MEM_MAX_USERATE_I+1))
  38. #                echo 'MEM_MAX_USERATE_I='$MEM_MAX_USERATE_I 'MEM_USERATE='$MEM_USERATE
  39. #       fi
  40.         if (echo $MEM $MEM_MAX | awk '!($1 >= $2){exit 1}') then
  41.                 ((MEM_MAX_I=MEM_MAX_I+1))
  42.                 echo 'MEM_MAX_I='$MEM_MAX_I 'MEM='$MEM'MB'
  43.         fi
  44.         if (echo $CPU_MAX_USERATE_I $MEM_MAX_USERATE_I $MEM_MAX_I $MAX_EXCEED_SET_NUMBER | awk '!(($1 >= $4) || ($2 >= $4) || ($3 >= $4)){exit 1}') then
  45.                 echo 'restart '$PROCESS_NAME
  46.                 /sbin/service $PROCESS_NAME restart
  47.                 #echo $(date) $PROCESS_NAME' restart' >> /log/$PROCESS_NAME.log
  48.                 CPU_MAX_USERATE_I=0; MEM_MAX_USERATE_I=0; MEM_MAX_I=0;
  49.                 ((MAX_RESTART_NUMBER_I=MAX_RESTART_NUMBER_I+1))
  50.                 sleep 10
  51.         fi
  52.         if (echo $MAX_RESTART_NUMBER_I $MAX_RESTART_NUMBER | awk '!($1 >= $2){exit 1}') then
  53.                 # Send mail code
  54.                 #echo $(date) $PROCESS_NAME' gua le!!!' | /usr/sbin/sendmail -v your @xxx.com > /dev/null
  55.                 #echo $(date) $PROCESS_NAME' gua le!!!' >> /log/$PROCESS_NAME.log
  56.                 break 1
  57.         fi
  58.         sleep $CYCLE
  59. done

  60. exit

  61. # ./test.sh lighttpd 30 900 5 5 5
  62. # ./test.sh 进程名 最大使用CPU百分比 最大使用内存数(MB) 侦测周期(秒) 超过设置多少个周期后重起服务 尝试重起服务失败多少次后发邮件
复制代码

作者: zzzu    时间: 2011-12-27 22:26
支持
作者: xiaoota    时间: 2011-12-27 22:27
看不懂的表示路过~~~~~~~~
作者: 小陈    时间: 2011-12-27 22:27
虽然看不懂,不过贵在贴够长
作者: wusir    时间: 2011-12-27 22:37
慢慢看
作者: 哈P哥    时间: 2011-12-27 22:38
楼主不可妄自菲薄,只要是技术贴,大家都支持你
作者: 店小二    时间: 2011-12-27 22:38
不懂 顶字多
作者: webproxy    时间: 2011-12-27 22:39
哪位老大测试下,看看好用不???
作者: 小夜    时间: 2011-12-27 22:41
技术贴,一定要支持。
作者: 完美    时间: 2011-12-28 00:43

赞一个
作者: 西崽猪猪    时间: 2011-12-28 00:46
比我强。。。。。我还不会写
作者: atrong    时间: 2011-12-28 02:03
看不懂
作者: fsd1    时间: 2011-12-28 10:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: ali727    时间: 2011-12-28 10:17
我是来笑楼主的。
作者: 悟雨    时间: 2011-12-28 10:49
mark
作者: 恢复自我    时间: 2011-12-28 10:58
不懂技术的路过
作者: zyzit    时间: 2011-12-28 10:59
都是技术类人才啊
作者: 小懒猪    时间: 2011-12-28 11:02
看不懂的依然在路过




欢迎光临 全球主机交流论坛 (https://lilynana.eu.org/) Powered by Discuz! X3.4