使用阿里云Serverless函数计算实现HTTP健康检查+故障短信通知
使用阿里云Serverless函数计算实现HTTP健康检查+故障短信通知
应用场景
定时对网站/API进行请求,根据请求响应判断服务是否可用,网站是否存在宕机,当发生宕机时,发送短信通知管理员.
技术使用
运行平台:阿里云函数计算
开发语言:Python3(小功能,精简,开发快,可在阿里云上在线编辑代码)
其它:阿里云短信接口
为何选用函数计算?
- 无需关注运维,仅需要编写核心代码,一个python脚本就够了(阿里云上可在线编辑代码,本地开发环境都无需搭建)
- 定时进行检测,只需要选用函数计算的“定时触发器”即可
- 根据代码的调用次数和运行时间计费(相对价格应该是非常低的)
结构图
过程
- 阿里云上开通函数计算服务
- 创建服务:函数计算-创建服务:
httpchk
- 创建函数:语言Python-空白函数
- 创建函数:触发器-定时触发器:
httpchk-trigger
-时间间隔1分钟 - 创建函数:函数名称:httpchk-fc,
- 创建函数:代码方式:在线编辑
- 创建函数:函数执行内存:128MB(足足够用)
函数代码:
# -*- coding: utf-8 -*- import logging import requests from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest # 待检测的网址,仅支持GET请求 urls = ["https://www.baidu.com","http://www.mtain.top"] # 接收短信通知的手机号码 phone = "180000000" # 阿里云短信接口相关信息 accessKeyId = 'xxxx' accessSecret = 'xxxx' signName = 'xxxxx' templateCode = 'SMS_xxxx' logger = logging.getLogger() def handler(event, context): for url in urls: do_httpchk(url) def do_httpchk(url): logger.info('检测网站:{}'.format(url)) try: req=requests.get(url) logger.info('网站:{}响应正常,返回数据长度:{}'.format(url,len(req.text))) except Exception as e: logger.error('网站:{}服务异常,{}'.format(url,e)) send_sms(url) def send_sms(url): client = AcsClient(accessKeyId, accessSecret, 'default') request = CommonRequest() request.set_accept_format('json') request.set_domain('dysmsapi.aliyuncs.com') request.set_method('POST') request.set_protocol_type('https') # https | http request.set_version('2017-05-25') request.set_action_name('SendSms') request.add_query_param('PhoneNumbers', phone) request.add_query_param('SignName', signName) request.add_query_param('TemplateCode', templateCode) # 阿里云短信变量 [a-zA-Z0-9] 且 长度小于20 web_name = url.replace('https://','').replace('http://','').replace('.','-')[0:18] request.add_query_param('TemplateParam', '{"code":"'+web_name+'"}') response = client.do_action(request) logger.info('Send SMS Response:'+str(response, encoding = 'utf-8'))

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
函数计算的正确使用姿势——OSS 触发器
前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动只需编写代码并上传。函数计算准备计算资源,以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考。 Fun: 是一个用于支持 Serverless 部署工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考。 通过本文的示例,你将了解:Fun 如何使用 OSS 触发器连接 OSS 和函数计算。 事件源服务 事件源服务是可以触发函数的服务的集合,例如对象存储 OSS,日志服务,API 网关,定时器(Timer)和 HTTP 请求等。事件发生时,承载触发器的事件源服务
- 下一篇
使用lombok编写优雅的Bean对象
使用java编写代码,十之八九都是在写java类,从而构建java对象。lombok之前也说了不少,但使用了这么多年,感觉还是有很多技巧可以使用的。 毫无疑问,使用lombok,编写的java代码很优雅,而使用起来和普通的java编码方式创建的类毫无二致。 不过,这样就满足了吗?实际上lombok很多注解,让这个java类在使用的时候,也可以更优雅。 本文就从ORM实体类、Builder模式工具类、Wither工具类以及Accessors工具类几个层面对比一下。 首先说明,不同的方式本质上没有优劣之分,不过在不同的应用场景就会变得很奇妙了。 ORM实体类 当一个java Bean类作为ORM实体类,或者xml、json的映射类时,需要这个类有这几个特征: 拥有无参构造器 拥有setter方法,用以反序列化; 拥有getter方法,用以序列化。 那么最简单的情况就是: @Data public class UserBean{ private Integer id; private String userName; } 复习一下,Data 注解相当于装配了 @Getter @Setter ...
相关文章
文章评论
共有0条评论来说两句吧...