使用阿里云Serverless函数计算实现HTTP健康检查+故障短信通知

简介: 定时对网站/API进行请求,根据请求响应判断服务是否可用,网站是否存在宕机,当发生宕机时,发送短信通知管理员.

使用阿里云Serverless函数计算实现HTTP健康检查+故障短信通知

应用场景

定时对网站/API进行请求,根据请求响应判断服务是否可用,网站是否存在宕机,当发生宕机时,发送短信通知管理员.

技术使用

运行平台:阿里云函数计算
开发语言:Python3(小功能,精简,开发快,可在阿里云上在线编辑代码)
其它:阿里云短信接口

为何选用函数计算?

  1. 无需关注运维,仅需要编写核心代码,一个python脚本就够了(阿里云上可在线编辑代码,本地开发环境都无需搭建)
  2. 定时进行检测,只需要选用函数计算的“定时触发器”即可
  3. 根据代码的调用次数和运行时间计费(相对价格应该是非常低的)

结构图

20190423103532

过程

  1. 阿里云上开通函数计算服务
  2. 创建服务:函数计算-创建服务:httpchk
  3. 创建函数:语言Python-空白函数
  4. 创建函数:触发器-定时触发器:httpchk-trigger-时间间隔1分钟
  5. 创建函数:函数名称:httpchk-fc,
  6. 创建函数:代码方式:在线编辑
  7. 创建函数:函数执行内存: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'))
相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
安全 API 持续交付
阿里云云效产品使用问题之如何从流水线访问内网平台的HTTP接口
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
弹性计算 关系型数据库 Serverless
告别资源瓶颈,函数计算驱动多媒体文件处理方案:https://www.aliyun.com/solution/tech-solution/fc-drive-file
本文介绍了一种基于阿里云的一键部署解决方案,利用云服务器ECS、RDS MySQL、OSS、函数计算FC及MNS等服务,实现高效的多媒体文件处理。方案通过事件驱动机制,将文件处理任务解耦,并自动弹性扩展,按需付费,简化部署流程,提高处理效率。本文还提供了详细的部署步骤与体验反馈,展示了从配置到文件处理的全过程。
|
运维 Serverless API
Serverless 应用引擎使用问题之如何开发HTTP服务
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
API
使用`System.Net.WebClient`类发送HTTP请求来调用阿里云短信API
使用`System.Net.WebClient`类发送HTTP请求来调用阿里云短信API
323 0
|
存储 运维 Serverless
Serverless 应用引擎产品使用合集之使用http异步任务,怎么能很快的根据任务数进行扩缩容
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
缓存 运维 Serverless
Serverless 应用引擎产品使用之在阿里函数计算中,使用签名认证调用HTTP触发器的步骤如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
468 7
|
运维 Serverless API
Serverless 应用引擎产品使用之阿里函数计算中要关掉http触发器的jwt认证才可以进行性能探测如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
225 1
|
弹性计算 Java Serverless
Serverless 应用引擎操作报错合集之函数实例健康检查失败,一般是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
199 0
|
存储 运维 Serverless
Serverless 使用OOS将http文件转存到对象存储
阿里云OOS提供了一种高效、灵活的解决方案,用于自动化HTTP文件到对象存储的转存。通过OOS,用户可以使用函数计算FC执行Python脚本,直接将文件从HTTP源转移到OSS,无需本地存储或额外ECS实例,降低了成本,提高了效率,并减少了错误。实践步骤包括创建OOS模板并在FC上运行。使用此功能需开通FC服务,创建RAM角色并授权访问OSS。附录中提供了示例模板和Python脚本说明。
使用阿里云语音通知http批量推送模式获取用户回执短信内容
本文使用阿里云语音通知配置http批量推送模式获取用户回执信息,并进行测试
930 0

相关产品

  • 函数计算