本文介绍:

当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通知: