监控网站是否异常的shell脚本

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

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

代码:

#!/bin/bash
# site: www.jquerycn.cn
SITES=("http://web01.example.com" "http://web02.example.com") # 要监控的网站
NOTICE_EMAIL=‘[email protected]‘                                 # 管理员电邮
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 
时间: 2024-10-28 16:15:01

监控网站是否异常的shell脚本的相关文章

监控Oracle数据库的常用shell脚本-转

8个DBA最常用的监控Oracle数据库的常用shell脚本--转 分类: Linux 一.8个重要的脚本来监控Oracle数据库: 1.检查实例的可用性 2.检查监听器的可用性 3.检查alert日志文件中的错误信息 4.在存放log文件的地方满以前清空旧的log文件 5.分析table和index以获得更好的性能 6.检查表空间的使用情况 7.找出无效的对象 8.监控用户和事务 二.DBA需要的Unix基本知识 基本的UNIX命令,以下是一些常用的Unix命令: ps--显示进程 grep-

Zabbix监控之Linux命令行/Shell脚本解析json

本文主要写了在Linux下如何用Shell脚本解析json数据,以便于在Zabbix中添加适合于业务应用的监控项. 为什么要使用json? json作为一种文本化的数据格式(文本化协议),符合UNIX编程的哲学,既符合透明性(透明性:设计可见,便于审查和调试)又符合文本性(文本性:数据应该保存为文本文件).关键在于json对Web程序或者java程序非常友好,对于开发人员来说,他们也喜欢使用json数据.业务逻辑.内部的依赖关系以及状态信息由程序员去做,运维人员只需要调用程序员开放出来的API接

8个DBA最常用的监控Oracle数据库的常用shell脚本

本文介绍了8个常用的监控数据shell脚本.首先回顾了一些DBA常用的Unix命令,以及解释了如何通过Unix Cron来定时执行DBA脚本.网上也有好多类似的文章,但基本上都不能正常运行,花点时间重新整理了下,以后就能直接使用了. 一.同时文章还介绍了8个重要的脚本来监控Oracle数据库: 1.检查实例的可用性 2.检查监听器的可用性 3.检查alert日志文件中的错误信息 4.在存放log文件的地方满以前清空旧的log文件 5.分析table和index以获得更好的性能 6.检查表空间的使

自动监控主从MySQL同步的SHELL脚本

写了一个MySQL的主从复制的监控的脚本,欢迎一起讨论学习,qq1290518248 #!/bin/bash #check MySQL_Slave Status #crontab time 00:10 MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $4}'` MYSQLIP=`ifconfig eth0|grep "inet addr&quo

linux监控某个进程的运行shell脚本

该脚本实现了对指定进程名的进程进行每隔2的扫描监控,一旦发现进程不存在便重新启动. #!/bin/sh a=10; while [[ @a -gt 5 ]]; do if test $(pgrep -f $1|wc -l) -eq 2;then sh stop.sh gnome-terminal -x sh start.sh & fi; sleep 2; done; 总结:(1)&表示当前进程又启动一个进程执行gnome-terminal命令:(2)linux下父进程挂掉,子进程不会挂,而

监控Linux服务器网站状态的SHELL脚本

1,监控httpd状态码的shell脚本代码. #!/bin/sh #site: www.jquerycn.cn # website[0]=www.jquerycn.cn/chuzu/' #网站1 mobile[0]='13141200000' #对应网站1 手机号码 website[1]=www.jquerycn.cn/chushou/' #同上2 mobile[1]='13141200000' #同上2 #当网站较多时,可以考虑以文件来存储,或从数据库中读取 length=${#websit

Linux/Unix shell 脚本监控磁盘可用空间

Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少.下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考. 1.监控磁盘的空闲空间shell脚本 [python] view plain copy print? [email protected]:~/dba_scripts/custom/bin> more ck_fs_space.sh #!/bin/bash # --------------------------------------------

shell脚本规范与变量运用

前言随着Linux系统在企业中应用的越来越多,服务器自动化管理也变得越来越重要.Linux服务器自动化维护工作中,除了计划任务的设置外,shell脚本的应用也是非常重要的一部分.什么是shell脚本Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的.但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令.shell脚本的应用场景:

第三部分shell编程3(shell脚本编写1)

做监控和备份最多 1. shell脚本是什么它是一种脚本语言,并非编程语言可以使用一些逻辑判断.循环等语法可以自定义子函数是系统命令的集合shell脚本可以实现自动化运维,大大增加我们的工作效率 第一个shell脚本:mkdir shellcd shell/vim 1.sh``#! /bin/bash`#This is a test shell script``echo "123456."`touch aming.111`date 2. shell脚本结构以及执行方法开头行指定bash