博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
监控网站是否异常的shell脚本
阅读量:5154 次
发布时间:2019-06-13

本文共 2199 字,大约阅读时间需要 7 分钟。

本节内容:

shell脚本监控网站是否异常,如有异常就自动发邮件通知管理员。

脚本检测流程,如下:

1,检查网站返回的http_code是否等于200,如不是200视为异常。
2,检查网站的访问时间,超过MAXLOADTIME(10秒)视为异常。
3,发送通知电邮后,在/tmp/monitor_load.remark记录发送时间,在一小时内不重复发送,如一小时后则清空/tmp/monitor_load.remark。

代码:

#!/bin/bash  # site: www.jquerycn.cnSITES=("http://web01.example.com" "http://web02.example.com") # 要监控的网站  NOTICE_EMAIL='me@example.com'                                 # 管理员电邮  MAXLOADTIME=10                                                # 访问超时时间设置  REMARKFILE='/tmp/monitor_load.remark'                         # 记录时否发送过通知电邮,如发送过则一小时内不再发送  ISSEND=0                                                      # 是否有发送电邮  EXPIRE=3600                                                   # 每次发送电邮的间隔秒数  NOW=$(date +%s)    if [ -f "$REMARKFILE" ] && [ -s "$REMARKFILE" ]; then      REMARK=$(cat $REMARKFILE)            # 删除过期的电邮发送时间记录文件      if [ $(( $NOW - $REMARK )) -gt "$EXPIRE" ]; then          rm -f ${REMARKFILE}          REMARK=""      fi  else      REMARK=""  fi    # 循环判断每个site  for site in ${SITES[*]}; do        printf "start to load ${site}\n"      site_load_time=$(curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}" "${site}")      site_access=$(curl -o /dev/null -s -w %{http_code} "${site}")      time_total=${site_load_time##*:}        printf "$(date '+%Y-%m-%d %H:%M:%S')\n"      printf "site load time\n${site_load_time}\n"      printf "site access:${site_access}\n\n"        # not send      if [ "$REMARK" = "" ]; then          # check access          if [ "$time_total" = "0.000" ] || [ "$site_access" != "200" ]; then              echo "Subject: ${site} can access $(date +%Y-%m-%d' '%H:%M:%S)" | sendmail ${NOTICE_EMAIL}              ISSEND=1          else              # check load time              if [ "${time_total%%.*}" -ge ${MAXLOADTIME} ]; then                  echo "Subject: ${site} load time total:${time_total} $(date +%Y-%m-%d' '%H:%M:%S)" | sendmail ${NOTICE_EMAIL}                  ISSEND=1              fi          fi      fi    done    # 发送电邮后记录发送时间  if [ "$ISSEND" = "1" ]; then      echo "$(date +%s)" > $REMARKFILE  fi  exit 0

 

转载于:https://www.cnblogs.com/clarke/p/5454435.html

你可能感兴趣的文章
LeetCode Ones and Zeroes
查看>>
基本算法概论
查看>>
jquery动态移除/增加onclick属性详解
查看>>
css important
查看>>
KindEditor图片上传到七牛云
查看>>
JavaScript---Promise
查看>>
暖暖的感动
查看>>
Java中的日期和时间
查看>>
Django基于admin的stark组件创建(一)
查看>>
批处理/DOS命令删除文件夹下某类型的文件
查看>>
模板 - 数学 - 矩阵快速幂
查看>>
优秀的持久层框架Mybatis,连接数据库快人一步
查看>>
PAT L2-016 愿天下有情人都是失散多年的兄妹
查看>>
抛弃IIS,利用FastCGI让Asp.net与Nginx在一起
查看>>
C. Tanya and Toys_模拟
查看>>
使用SwingWork反而阻塞SwingUI
查看>>
Windchill中如何扩展字段长度?
查看>>
pytorch中的forward前向传播机制
查看>>
课后作业-阅读任务-阅读提问-4
查看>>
Delphi 深入浅出VCL(2)-TObject所有对象的根
查看>>