CubieBoard中文论坛

 找回密码
 立即注册
搜索
热搜: unable
查看: 5185|回复: 0

用CB监控网站运行情况

[复制链接]
发表于 2013-5-11 17:33:34 | 显示全部楼层 |阅读模式
本帖最后由 4207317 于 2013-5-11 17:36 编辑

用CB监控网站运行情况,只是一个sh脚本,但运行很稳定,已经测试了几天了,一直在工作,没有出过问题。
代码如下:
  1. #!/bin/bash
  2. HOSTS=( \
  3.     "http://www.baidu.com" \
  4.     "http://www.fdyu.com" \
  5.     )

  6. STATUS_FILE="/root/sh/sitemonitor.status"
  7. SLOW_THRESHOLD=10
  8. OK_STATUSES=( "200" )

  9. function contains() {
  10.     local n=$#
  11.     local value=${!n}
  12.     for ((i=1; i < $#; i++)) {
  13.         if [ "${!i}" == "${value}" ]; then
  14.             echo "y"
  15.             return 0
  16.         fi
  17.     }
  18.     echo "n"
  19.     return 1
  20. }

  21. rm -f /tmp/sitemonitor.status.tmp

  22. for HOST in "${HOSTS[@]}"
  23. do

  24. #echo $HOST

  25.         START=$(date +%s)
  26.         RESPONSE=`wget $HOST -4 -S -q -t1 --timeout=20 -O- 2>&1 | awk '/^  HTTP/
  27. {print $2}'`
  28.         END=$(date +%s)
  29.         DIFF=$(( $END - $START ))
  30.         if [ -z "$RESPONSE" ]; then
  31.                 RESPONSE="0"
  32.         fi

  33.         if [ $(contains "${OK_STATUSES[@]}" "$RESPONSE") == "y" ]; then
  34.                 if [ "$DIFF" -lt "$SLOW_THRESHOLD" ]; then
  35.                          STATUS="UP"
  36.                 else
  37.                         STATUS="SLOW"
  38.                 fi
  39.         else
  40.                 STATUS="DOWN"
  41.         fi

  42.         touch $STATUS_FILE
  43.         STATUS_LINE=`grep $HOST $STATUS_FILE`
  44.         STATUS_PARTS=($(echo $STATUS_LINE | tr " " "\n"))
  45.         CHANGED=${STATUS_PARTS[2]}

  46.         if [ "$STATUS" != "${STATUS_PARTS[5]}" ]; then
  47.                 if [ -z "${STATUS_PARTS[5]}" ]; then
  48.                         STATUS_PARTS[5]="No record"
  49.                 fi
  50.                 TIME=`date -d @$END`
  51.                 echo "Time: $TIME" > /tmp/sitemonitor.email.tmp
  52.                 echo "Host: $HOST" >> /tmp/sitemonitor.email.tmp
  53.                 echo "Status: $STATUS" >> /tmp/sitemonitor.email.tmp
  54.                 echo "Latency: $DIFF sec" >> /tmp/sitemonitor.email.tmp
  55.                 echo "Previous status: ${STATUS_PARTS[5]}" >> /tmp/sitemonitor.e
  56. mail.tmp

  57.                 if [ -z "${STATUS_PARTS[2]}" ]; then
  58.                         TIME="No record"
  59.                 else
  60.                         TIME=`date -d @${STATUS_PARTS[2]}`
  61.                 fi

  62.                 echo "Previous change: $TIME" >> /tmp/sitemonitor.email.tmp

  63.                 mail -s "SiteMonitor Notification: $HOST is $STATUS"  4207317@qq
  64. .com < /tmp/sitemonitor.email.tmp

  65.                 rm -f /tmp/sitemonitor.email.tmp

  66.                 CHANGED="$END"
  67.         fi

  68.         echo $HOST $RESPONSE $CHANGED $END $DIFF $STATUS >> /tmp/sitemonitor.sta
  69. tus.tmp


  70. #echo $RESPONSE
  71. #echo $STATUS
  72. #echo $DIFF
  73. done

  74. mv /tmp/sitemonitor.status.tmp $STATUS_FILE
复制代码
一些简单的说明:

想要监控的网站列表在这里修改


HOSTS=( \    "http://www.baidu.com" \    "http://www.fdyu.com" \    )


此监控一共监控两种状态,网站是否慢和是否挂掉了。 如何确定慢呢,就是打开速度超过了一个指定的时间就算慢,挂了不用说了,就是打不开了。

慢的时间指定在这里
SLOW_THRESHOLD=10


如何通知,当系统检测到状态改变时会发邮件通知,注意是状态改变时,也就是说如果一直挂着,或一直慢的话只会发一封邮件通知你。当状态改变时,比如又正常了,才会再发一封邮件给你。这样可以避免一直发邮件的痛苦。
收件人的邮箱在这里更改
mail -s "SiteMonitor Notification: $HOST is $STATUS"  4207317@qq.com < /tmp/sitemonitor.email.tmp


我的邮件是绑定微信的,所以可以立即收到状态是否改变。以便以最快的时间可以处理,也可以监控其它网站的运行是否稳定等等。

如果邮件失败怎么办,多办是你没有配置mail,具体配置在这里


http://www.fdyu.com/a,8.html


如何让他一直工作呢? 加入 /etc/crontab就可以了。比如


*/5 * * * * root /root/sh/sitemonitor.sh > /dev/null 2>&1

具体时间你可以随意,比如这个是每隔5分钟运行一次。
还是不能用,可能你没有给他运行权限
chmod +x sitemonitor.sh
不想复制
http://www.fdyu.com/upfiles/sitemonitor.sh


直接下载就可以
wget http://www.fdyu.com/upfiles/sitemonitor.sh



评分

参与人数 1威望 +10 金钱 +10 贡献 +10 收起 理由
matson + 10 + 10 + 10 赞一个!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|粤ICP备13051116号|cubie.cc---深刻的嵌入式技术讨论社区

GMT+8, 2024-5-9 17:34 , Processed in 0.023351 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc. | Style by Coxxs

返回顶部