美文网首页
如何快速完成对批量URL的监控

如何快速完成对批量URL的监控

作者: 夜境 | 来源:发表于2017-07-26 22:39 被阅读37次

    本文章转载于搜狗测试

    需求场景

    很多项目中都会有存在大量的URL(包含头像、图片、页面链接等)的情况,这批URL有时候会是合作类的项目,为合作方提供,有时候如果更新不及时,会存在因合作方的服务不可用导致项目应用/服务不可用的问题,影响口碑。

    那么,我们需要对这批URL进行监控,监控其是否可达。

    方案分析

    首先想到的是监控平台。将这些URL一个个添加到监控平台中进行监控即可。

    但是,存在几个问题:

    这批URL数量庞大,逐个添加到监控平台中,会耗费大量时间;

    这批URL会随着不同的服务接入或配置文件版本而发生变化(增,删,改),后续监控平台的维护也是成本。

    那么有每一种快速完成任务,且简易可行的方案呢?

    分析这两个问题,我们其实可以通过脚本读取文件的方式来进行URL的批量访问。URL可以存放到文件中,然后通过for循环去逐个访问。根据返回的状态码,来判断服务是否可达。

    然后,定时的去完成上面的任务,并将结果发送到邮箱中即可。

    方案实现

    选定了上面的方案(使用脚本实现),我们就需要分析一下实现上面的方案需要什么。

    读取文件,循环访问URL,可以通过Linux Shell脚本完成(若干行代码);

    定时执行,可以通过Linux 服务器的Crontab完成(1行代码);

    邮件发送,可以使用Linux系统中的mail命令完成(代码≥1行)。

    代码实现如下:

    #!/bin/sh# FILENAME: start.sh

    set-e

    # fail_case.txt文件用来存放执行的结果日志

    echo`date` > /root/Supervisory/fail_case.txt

    # mail_content文件用来记录失败的URL,并作为邮件正文发出

    echo-n > /root/Supervisory/mail_content

    if[-e/root/Supervisory/urls.info ];then# 使用一个FOR循环逐个URL请求,如果返回的状态码为200,301,302则认为正确forurlin$(cat /root/Supervisory/urls.info)dost_code=$(curl -I -X"GET"--connect-timeout5-m10"$url"| head -n1| cut-d" "-f2)

    if[${st_code}-ne200];thenif[${st_code}-ne302] && [${st_code}-ne301];thenobject="Fail"# 记录日志,以及邮件正文内容echo-e"[*]${st_code}Fail\t"$url>> /root/Supervisory/fail_case.txt

    echo-e"[*]${st_code}Fail\t"$url>> /root/Supervisory/mail_content

    elseecho-e"[ ]${st_code}Success\t"$url>> /root/Supervisory/fail_case.txt

    fi

    elseecho-e"[ ]${st_code}Success\t"$url>> /root/Supervisory/fail_case.txt

    fidone

    fi

    # 如果存在失败的现象,则发送邮件,附件是日志文件

    if["$object"=="Fail"];thenmail-s"Test Failed"-a/root/Supervisory/fail_case.txt xxxxxx@qq.com < /root/Supervisory/mail_contentfi

    以上完成了分析中的1和3,使用代码行数24行(不含空行和注释)。耗时0.5h。

    接下来完成Crontab的编写,完成定时发送。格式如下:

    */30* * * * /root/Supervisory/start.sh

    以上配置完成了每30分钟的监控频率。配置代码行数1行,编写以及调试耗时5分钟。

    到此为止,完成了对批量URL进行监控的需求。

    注意事项

    由于是第三方合作页面,因此要确认是否需要进行监控;

    确认监控的频率,是否会带来合作上的影响;

    邮件的接收人若是公司邮箱,有可能会被当做垃圾邮件(联系公司IT部门咨询);

    脚本仅仅带状态码进行了验证,需要确认仅仅这些是否满足需求;

    脚本并不完善,属于快速解决问题类型。


    相关文章

      网友评论

          本文标题:如何快速完成对批量URL的监控

          本文链接:https://www.haomeiwen.com/subject/fyqjkxtx.html