zoukankan      html  css  js  c++  java
  • 通过shell监控网页是否正常,然后促发邮件告警

    最近在网上找了下通过shell编写一个脚本来监控网页是否正常,如果不正常则促发邮件告警,修复后有一个修复的通知邮件;但一直没有找到全面的,所以自己研究了下,写了一个linux对接邮箱和通过shell写了一个监控网页的脚本,如果有兴趣的可以参考下,不过我也是一个新手,写的不好,请不要见怪。 

    分两个大步骤:

    步骤一 linux对接邮箱:
    1.首先需要安装mailx
    如果你是最小化安装的centos/redhat 系统,是没有自带mailx的,也就是没有mail 命令。

     yum -y install mailx

    2.编辑配置文件 /etc/mail.rc
    vim /etc/mail.rc | tail -10
    fwdretain subject date from to
    # For Linux and BSD, this should be set.
    set bsdcompat
    set from=test@163.com
    set smtp=smtp.163.com
    set smtp-auth-user=test@163.com
    set smtp-auth-password=123456
    set smtp-auth=login
    3.对配置说明
    from: 对方收到邮件时显示的发件人
    smtp :指定第三方发邮件的smtp服务器地址(如qq,163,也可是公司的邮件服务器)
    set smtp-auth-user: 邮件账号的用户名
    set smtp-auth-password: 邮件账号的密码,有些邮箱填授权码
    smtp-auth: SMTP 的认证方式,默认是login , 也可以改成CRAM-MD5 或 PLAIN 方式。
    4.测试邮箱是否对接成功
    echo "访问OK." | mail -s " 访问已经恢复" test1@163.com
    步骤二shell编写监控的URL:
    vim checkweb.sh
    #!/bin/bash
    #需要接收告警的邮箱
    mail1=test1@163.com
    mail2=test2@163.com
    #网站url地址
    URL="http://www.baidu.com"
    logsize=`ls -l /data/script/checkweb.log| awk '{print $5}'`
    if [ -n $logsize ]
    then
    >/data/script/checkweb.log
    fi
    while true
    date=$(date -d "today" +"%Y-%m-%d-%H:%M:%S")
    do
    sleep 60
    #获取http响应代码
    HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "${URL}"`
    #服务器能正常响应,应该返回200的代码
    if [ $HTTP_CODE = 200 ]
    then
    if [ -f /tmp/checkwebfault.log ]
    then
    `rm -rf /tmp/checkwebfault.log`
    else
    echo "$date $URL 访问OK." >>/data/script/checkweb.log
    [ ! -f "/tmp/checkwebsucceed" ] || continue
    echo "$date $URL 故障已修复." | mail -s "网站故障已经修复" $mail1 $mail2
    `touch /tmp/checkwebsucceed`
    fi
    elif [ $HTTP_CODE != 200 ] && [ ! -f "/tmp/checkwebfault.log" ]
    then
    echo "$date $URL 已无法访问,请尽快处理." | mail -s "网站紧急故障告警" $mail1 $mail2
    `touch /tmp/checkwebfault.log`
    `rm -rf /tmp/checkwebsucceed `
    fi
    done
    脚本思路:
    1.通过CURL访问后判断这个URL里面返回的值是否为200;如果是则页面正常,否则不正常;
    2.如果正常,检查是否有错误的临时文件,有则删除,如果没有临时错误文件,则会发送一个邮件通知是成已经修复,且会生成一个成功的临时文件,后面通过判断这个文件是否存来判断是否还需要发送邮件,避免无休止发送邮件告警;(continue是跳出此次循环)
    3.如果不正常,也会发送一个URL故障的邮件通知,且会生成一个失败的临时文件,后面通过判断这个文件是否存来判断是否还需要发送邮件,避免无休止发送邮件告警,且会把成功的临时文件删除;
    总的来说就是开关原理,通过判断临时文件是否存在来判断是否需要发送邮件,避免无休止发送告警。
    测试查看执行判断的过程
    sh -x checkweb.sh
  • 相关阅读:
    Jenkins自定义变量共享
    HTML中调用JavaScript的几种情况和规范写法
    [Python] 建 Django 项目
    [Django] Window上通过IIS发布Django网站
    [Python] 怎么把HTML的报告转换为图片,利用无头浏览器
    VMware vSphere Client
    mysql优化
    LINUX 内核的优化
    sed强大的固定替换格式
    nfs以及优化
  • 原文地址:https://www.cnblogs.com/--smile/p/11241272.html
Copyright © 2011-2022 走看看