前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Serverless实践系列(四):网站监控脚本的实现

Serverless实践系列(四):网站监控脚本的实现

作者头像
腾讯云serverless团队
发布2019-07-19 16:40:22
8.2K0
发布2019-07-19 16:40:22
举报

很多小伙伴都有自己的博客,或者做过Web,但是自己关心的Web是否健康?当前状态是否可访问?网站挂了谁的锅?这些问题都可以用相关的网站监控脚本进行监测。今天本文将分享如何通过腾讯云云函数开发一个简单的脚本,进行网站监控。

基本监控脚本

假如说,目前想要监控的网站是https://www.anycodes.cn,想知道这个网站是否可用,那么可以通过Python语言编写一个脚本,来查看这个网站的状态,获取他的http_status_code,如果该数值为200,则说明网站可用,如果非200,则说明网站不可用。

首先,打开腾讯云登陆并选择云函数业务,创建监控脚本:

写代码:

代码语言:javascript
复制

测试结果:

可以看到,网站是通的,在控制台输出相对应的结果。但如果网站返回的不是200,应该怎么办呢?可以通过短信或者邮件进行告警,以邮件告警方法为例,再写一个发送邮件的方法并整合进去:

代码语言:javascript
复制

点击测试查看结果:

此时,手机上面接收到了提醒:

为我们是要监控网站不可访问的状态,所以修改一下判断:

修改完成之后,就可以保存了。考虑到这个脚本需要每隔一段时间都要触发一次,因此可以设置一个定时触发。

触发方式里面增加定时触发,并且保存即可,同时点击右上角的发布新版本:

这时,网站状态监控就已经上线了!

升级监控脚本

有人说了,这样简单的一个脚本,意义大么?个人感觉意义很大,因为这个脚本,只是抛砖引玉,还有Plus版本:单纯根据状态判断靠谱么?我不要做一个访问时间统计?那么,就可以融合一个爬虫进入:

以网站测速网站:http://tool.chinaz.com/speedtest/anycodes.cn为例,可以看到:

是不是可以获得每个请求查看耗时呢?

通过网页分析,获得了每个测试点的id对应关系:

代码语言:javascript
复制

然后,可以根据这些关系,在本地测试:

以“62a55a0e-387e-4d87-bf69-5e0c9dd6b983 江苏宿迁[电信]“为例,编写代码:

代码语言:javascript
复制
代码语言:javascript
复制
代码语言:javascript
复制
({state:1,msg:'',result:{ip:'119.28.190.46',httpstate:200,alltime:'212',dnstime:'18',conntime:'116',downtime:'78',filesize:'-',downspeed:'4.72',ipaddress:'新加坡新加坡',headers:'\u0048\u0054\u0054\u0050\u002f\u0031\u002e\u0031\u0020\u0032\u0030\u0030\u0020\u004f\u004b \u0062\u0072\u003e\u0053\u0065\u0072\u0076\u0065\u0072\u003a\u0020\u006e\u0067\u0069\u006e\u0078\u002f\u0031\u002e\u0031\u0030\u002e\u0033\u0020\u0028\u0055\u0062\u0075\u006e\u0074\u0075\u0029 \u0062\u0072\u003e\u0044\u0061\u0074\u0065\u003a\u0020\u0053\u0075\u006e\u002c\u0020\u0032\u0038\u0020\u0041\u0070\u0072\u0020\u0032\u0030\u0031\u0039\u0020\u0030\u0033\u003a\u0032\u0031\u003a\u0033\u0030\u0020\u0047\u004d\u0054 \u0062\u0072\u003e\u0043\u006f\u006e\u0074\u0065\u006e\u0074\u002d\u0054\u0079\u0070\u0065\u003a\u0020\u0074\u0065\u0078\u0074\u002f\u0068\u0074\u006d\u006c \u0062\u0072\u003e\u004c\u0061\u0073\u0074\u002d\u004d\u006f\u0064\u0069\u0066\u0069\u0065\u0064\u003a\u0020\u0054\u0068\u0075\u002c\u0020\u0032\u0035\u0020\u0041\u0070\u0072\u0020\u0032\u0030\u0031\u0039\u0020\u0030\u0037\u003a\u0033\u0033\u003a\u0035\u0035\u0020\u0047\u004d\u0054 \u0062\u0072\u003e\u0054\u0072\u0061\u006e\u0073\u0066\u0065\u0072\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u003a\u0020\u0063\u0068\u0075\u006e\u006b\u0065\u0064 \u0062\u0072\u003e\u0043\u006f\u006e\u006e\u0065\u0063\u0074\u0069\u006f\u006e\u003a\u0020\u0063\u006c\u006f\u0073\u0065 \u0062\u0072\u003e\u0045\u0054\u0061\u0067\u003a\u0020\u0057\u002f\u0022\u0035\u0063\u0063\u0031\u0036\u0032\u0065\u0033\u002d\u0038\u0038\u0061\u0022 \u0062\u0072\u003e\u0043\u006f\u006e\u0074\u0065\u006e\u0074\u002d\u0045\u006e\u0063\u006f\u0064\u0069\u006e\u0067\u003a\u0020\u0067\u007a\u0069\u0070 \u0062\u0072\u003e \u0062\u0072\u003e',pagehtml:''}})
代码语言:javascript
复制
拿到结果之后,就可以知道江苏宿迁[电信]访问anycodes的:
  • 总耗时:alltime:'212'
  • 链接耗时:conntime:'116'
  • 下载耗时:downtime:'78'

整合程序,对每个请求进行处理:

代码语言:javascript
复制

运行结果:

代码语言:javascript
复制

将该部分内容融合之前的脚本中:

代码语言:javascript
复制

由于这个程序,可能运行的时间有点长,所以需要对云函数的timeout进行修改:

修改之后,可以测试和部署一下:

然后,可以部署到线上。

当然,这里可能还有一些小问题,那就是,很可能某些测试节点出问题,导致网站无法访问,所以这个告警机制可以重新编排一下:

当n个节点出现问题,再进行告警:

代码语言:javascript
复制

灵感启发:PPPlus版本

可能有时候不是监控自己的网站,而是要监控别人网站的某些行为,例如某个小说是否更新了,某个视频是否更新了,某个产品是否发布了,某个成绩是否出来... 其实这些情景都可以用腾讯云的函数计算来开发,非常的简单方便。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ServerlessCloudNative 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云函数
云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档