很多开发者都有自己的博客,或者做过 Web,但是自己关心的 Web 是否健康?当前状态是否可访问?网站挂了谁的锅?这些问题都可以用相关的网站监控脚本进行监测。今天本文将分享如何通过云函数开发一个简单的脚本,进行网站监控。
基本监控脚本
假如说,目前想要监控的网站是 https://www.anycodes.cn ,想知道这个网站是否可用,那么可以通过 Python 语言编写一个脚本,来查看这个网站的状态,获取他的 http_status_code,如果该数值为 200,则说明网站可用,如果非 200,则说明网站不可用。
首先,打开腾讯云登陆并选择云函数业务,创建监控脚本:
Python资源共享群:484031800
写代码:
复制代码
# -*- coding: utf8 -*- importjson importurllib.request defgetStatusCode(url): returnurllib.request.urlopen(url).getcode() defmain_handler(event, context): ifgetStatusCode("https://www.anycodes.cn") ==200: print(" 网站可访问 ")
测试结果:
可以看到,网站是通的,在控制台输出相对应的结果。但如果网站返回的不是 200,应该怎么办呢?可以通过短信或者邮件进行告警,以邮件告警方法为例,再写一个发送邮件的方法并整合进去:
复制代码
# -*- coding: utf8 -*- importssl importjson importsmtplib importurllib.request fromemail.mime.textimportMIMEText fromemail.headerimportHeader ssl._create_default_https_context = ssl._create_unverified_context defsendEmail(content, to_user): sender ='service@anycodes.cn' receivers = [to_user] mail_msg = content message = MIMEText(mail_msg,'html','utf-8') message['From'] = Header(" 网站监控 ",'utf-8') message['To'] = Header(" 站长 ",'utf-8') subject =" 网站监控告警 " message['Subject'] = Header(subject,'utf-8') try: smtpObj = smtplib.SMTP_SSL("smtp.exmail.qq.com",465) smtpObj.login('service@anycodes.cn','密码') smtpObj.sendmail(sender, receivers, message.as_string()) exceptsmtplib.SMTPException: pass defgetStatusCode(url): returnurllib.request.urlopen(url).getcode() defmain_handler(event, context): url ="http://www.anycodes.cn" ifgetStatusCode(url) ==200: sendEmail(" 您的网站 %s 可以访问!"% (url),"service@52exe.cn")
点击测试查看结果:
此时,手机上面接收到了提醒:
为我们是要监控网站不可访问的状态,所以修改一下判断:
修改完成之后,就可以保存了。考虑到这个脚本需要每隔一段时间都要触发一次,因此可以设置一个定时触发。
触发方式里面增加定时触发,并且保存即可,同时点击右上角的发布新版本:
这时,网站状态监控就已经上线。
升级监控脚本
有人说了,这样简单的一个脚本,意义大么?个人感觉意义很大,因为这个脚本,只是抛砖引玉,还有 Plus 版本:单纯根据状态判断靠谱么?我不要做一个访问时间统计?那么,就可以融合一个爬虫进入:
以网站测速网站: http://tool.chinaz.com/speedtest/anycodes.cn 为例,可以看到:
是不是可以获得每个请求查看耗时呢?
通过网页分析,获得了每个测试点的 id 对应关系:
复制代码
62a55a0e-387e-4d87-bf69-5e0c9dd6b983 江苏宿迁 [电信] f403cdf2-27f8-4ccd-8f22-6f5a28a01309 广东佛山 [电信] bcff47de-61bb-4bf7-9fe6-4e456067e540 广东惠州 [电信] 7740099a-6b60-49e0-9913-2f0b416ae63b 广东深圳 [电信] 2bfd90a0-4661-4920-9963-0241cd3fc0db 浙江湖州 [电信] b698f5c4-0c88-4ae4-b123-ef57293ce442 辽宁大连 [电信] 7253644b-58d3-48bb-808a-3c8b9416cfd5 江苏泰州 [电信] d8c0d1d1-9da8-4480-a9df-555731cdd7b8 安徽合肥 [电信] 299f5043-d454-4485-945f-a331d960d86e 江苏镇江 [电信] 38522b83-8893-4ca6-b45f-b6588b034462 云南昆明 [电信] 19705ba7-3816-4b35-976b-c3b8d69e78d2 湖南长沙 [电信] 8081b399-499a-4680-9a5a-723977cfea04 湖南衡阳 [电信] 5713f157-3378-495a-9c55-7172187e9f36 江苏宿迁 [电信] a80cd07e-5508-4be6-8c83-524fe59318b8 江苏泰州 [电信] 4daa81e2-f397-4cde-bf74-b2bee84a4ea5 江苏宿迁 [电信] bdd1ecd4-5516-44f8-8022-d83e4ac102f2 广东佛山 [电信] 6b6f9b1c-6154-4696-96d6-112248f902dc 北京 [电信] 8292e59e-ffde-4988-814f-4fe7fc4ec888 贵州兴义 [电信] be09c5ce-3031-4565-8f6a-3e328e256e16 江苏扬州 [电信] 524906a3-2749-4469-aee3-48885f042a3a 江苏徐州 [电信] fce17d47-07c3-4315-892b-acd76d918ada 广西南宁 [电信] 21cf6110-400c-4c6b-87c8-cada4ec3f6a7 浙江台州 [电信] 0c8ca9bf-fa7a-42a3-9148-f15ead65f45e 广东深圳 [电信] b1499d95-7e3c-472a-9682-e58e1b362633 江西九江 [电信] 4130a733-57c7-432b-ab8d-735ccbefbc0a 山东枣庄 [电信] 066ab75f-0a74-40e8-b717-d17a71eda942 广东惠州 [电信] 1befa95d-cde1-473e-b851-38440d034f1c 江苏泰州 [电信] c5ae6abd-901b-47c7-9018-7eda8b4441c6 陕西西安 [电信] d1e4fc25-16e5-4651-a8d7-b8df50dda396 江苏镇江 [电信] 70a537ed-95b2-4bfd-b6b0-64c3920d9910 重庆 [电信] e6a3a9b7-2088-41be-bf1d-6a25276ab1ed 江西吉安 [电信] 0e34cba2-fe5c-40d2-9ec7-e497f99365b8 广东广州 [电信] 547e8248-6dfb-4f4f-b52d-8a287e89b844 湖北随州 [电信] df8bdd7a-b928-41f8-959f-d0d56fadea64 四川绵阳 [电信] 4e5d43e6-9d6a-4e5a-b495-a78c0921d26d 四川成都 [电信] 36d59519-d4bb-4635-8476-1d6ea27f62b2 江苏镇江 [电信] bc25c8fd-62a1-4c57-a44d-0855b6c67714 四川绵阳 [电信] 0d3fd0b2-1255-4e5d-b94e-717569d2e8bd 江苏扬州 [电信] 47a0f82f-7dbb-48f4-96e0-d7a279ebba11 浙江宁波 [电信] 61d76c8c-b681-4196-b734-7d8e60f1e3ae 浙江绍兴 [电信] da8bc796-4e65-48ef-beaa-d2ee1a7dd4bf 广东佛山 [电信] cd787783-c0f5-486c-ac9f-34a80e386c34 广东佛山 [电信] 0e8d2e22-74db-4b31-9edd-fdda946dcd03 江苏常州 [电信] 5daad9ff-ced5-426a-8216-bf2aad097de0 浙江温州 [电信] 91a304a7-f91b-49ac-abbe-b77442cbc48c 上海 [电信] 12b16bb6-d42d-4296-a394-b96b22bca9c3 陕西咸阳 [电信] bf9f80ef-1ef7-4267-aece-4fb1e5fe45bf 湖北荆门 [电信] cd442c9e-de26-470f-bba2-33a8e71e4639 福建泉州 [电信] 9fef7898-e2d3-4c02-ab2a-5dc780f5a65c 河南新乡 [电信] 65078859-3e99-48eb-b170-7463fc53a98e 辽宁大连 [电信] 0165e09b-aad3-46c2-87e8-160432229f60 贵州兴义 [电信] 817bc339-c6f6-479c-9708-01ca54f2be80 江西新余 [电信] 1edc7af0-68ac-427b-a368-c27610797971 广东佛山 [电信] 9bc90d67-d208-434d-b680-294ae4288571 新疆哈密 [电信] b44faece-c6fe-4cc1-ab9a-ae7dcf37f146 辽宁鞍山 [电信] 7fb11d87-1029-487b-8345-27e12a6acf1e 江苏镇江 [电信] 04d82618-d562-4aa7-9db6-4600dd7f4780 湖南衡阳 [电信] 252167a8-eaeb-491b-a4f3-319d25680f48 江苏宿迁 [电信] 22456bec-ad37-49e8-ba6f-032b3faaa0a0 湖北武汉 [电信] 5802da93-4e05-4932-9bc6-20d5d75b7af5 江苏宿迁 [电信] a083795a-b69f-49fe-a905-cd8838c09553 浙江温州 [电信] 9c3b9aed-4b8a-4258-9b1f-55016211ced9 广东深圳 [电信] 2140cc66-e5ea-4f56-981a-8f044a98c92a 浙江绍兴 [电信] 9a8406ca-8a2d-44b7-a60e-4fe0ff6dd3aa 陕西西安 [电信] 8df24006-5e55-428c-9f29-9a2386480a4d 湖北仙桃 [电信] cb2be8e0-670f-4922-8dd8-a1dd155cbf97 广东深圳 [多线] c5964a0d-c49f-4fac-833d-2348b3b1304b 江苏常州 [多线] 19ef9d71-e0cb-4b79-a416-8fd670f6e7ca 江苏泰州 [多线] 5bea1430-f7c2-4146-88f4-17a7dc73a953 河南新乡 [多线] 1f430ff0-eae9-413a-af2a-1c2a8986cff0 河南新乡 [多线] ea551b59-2609-4ab4-89bc-14b2080f501a 河南新乡 [多线] 4d462057-4581-4ae1-974d-ca7ca019e700 河南新乡 [多线] 9c137190-5a57-4ef5-be4b-b9add998ad52 河南新乡 [多线] 120ec517-1b0f-4b6e-841d-61116f73099a 广东东莞 [多线] cbc3caa1-9faf-438c-abde-fbd5c64c8036 辽宁大连 [多线] ba9e31d2-918a-41ad-9d0b-99175e365583江苏扬州 [多线] 74cb6a5c-b044-49d0-abee-bf42beb6ae05 江苏宿迁 [多线] e0cf79c5-9159-4ea6-a2a7-1bcaf9bfb292 山西运城 [联通] 2805fa9f-