您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何使用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 from requests.adapters import HTTPAdapter # 出錯時,重試2次,一共執行3次 request = requests.Session() request.mount('http://', HTTPAdapter(max_retries=2)) request.mount('https://', HTTPAdapter(max_retries=2)) # 待檢測的網址,僅支持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 = request.get(url, timeout=5) 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'))
以上就是如何使用Serverless函數計算實現HTTP健康檢查+故障短信通知,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。