使用阿里云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条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7,8上快速安装Gitea,搭建Git服务器