本文介绍:
当Azure Functions执行失败时发送报警。
视频介绍:
图文介绍:
1.准备一个可以执行出错的Azure Functions并部署:
(这部分内容讲过很多次了,可参照本博客中其他的文章,本文不再赘述)。
本例子中使用了默认的http 触发的 python Functions,修改functions中的代码,当http触发传递的参数不包含“name”时,执行1/0操作,故而报错异常。
代码如下:
import logging
import azure.functions as func
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
name = req.params.get('name')
if not name:
try:
req_body = req.get_json()
except ValueError:
pass
else:
name = req_body.get('name')
if name:
return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
else:
result=1/0
return func.HttpResponse(
"This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
status_code=200
)
2. 执行云端的Azure Functions令其执行出错:
(详细步骤参见本文视频)
3. 在Application Insights中通过自定义查询配置报警:
点击上图1位置,进入Application Insights 页面,在位置1查询中加入 and success=='False' 的查询条件,只关注执行失败的记录。
点击位置2处的新建报警规则按钮:
点击下图1处,在右侧“配置信号逻辑”页面中进行设置:
图2.处默认的ago(30d)表示查询过去30天的日志,可以根据实际情况,修改为查询过去30分钟,比如 ago(30m);
图3.处的阈值表示查询到多少次执行错误的记录才报警;
图4.处的期限,也是一个时间范围,最终结果取 4处期限和2处ago(30d)的交集,实际上2处的ago(30d)可以删掉。
图5.处的频率表示每几分钟执行一次这个报警检查。
选择或创建新的操作组:
点击按钮1 可以在弹窗中选择新建操作组2或者选择已有操作组3,
本例子中创建新的操作组:
输入一个操作组的名字,点击下一步 通知:
下一页面中可以设置 操作组要执行的多个操作,可以是发送邮件,短信报警,Azure App等多种方式:
在报警规则中输入报警规则的名称,即可完成设置:
也可以在2处设置取消报警的配置。
创建好的报警规则,可以在Application Insights中进行修改:
4.等待一段时间,触发几个错误的Functions执行,等待报警邮件和APP通知: