在监视功能时,Azure将什么算作错误?

时间:2019-01-25 18:58:51

标签: azure azure-functions azure-application-insights azure-monitoring

我正在运行以下简单功能,以检查Function App中的监视工作方式。如果我的函数返回“ 400”状态代码,则在“监视”部分(以及随后的“应用程序洞察”)中,它将执行标记为成功。另外,如果引发并捕获错误,则仍标记为成功。如果它引发了错误但没有捕获到错误,那么它将检测到并计为错误(但这种情况并不常见,因为在实际应用中,总是需要捕获可能的错误)。

  1. 这是Azure功能中的监视工作方式吗?因此,将执行标记为错误的唯一方法是抛出未捕获的错误?!?!!

  2. 在Application Insight中,是否仍然可以根据请求的响应状态代码对请求进行排序?例如,是否可以查看单个函数返回了500个请求?

module.exports = async function (context, req) {

    if (req.query.name || (req.body && req.body.name)) {
        context.res = {
            body: "Hello " + (req.query.name || req.body.name)
        };
    } else {
        // only if following line is uncommented, it counts the funciton execution as error
        // throw new Error('this is a test error')

        try {
            throw new Error('this is a test error')
        } catch (e) {
            // in this case, it counts the function execution as successfull
            return context.res = {
                status: 500,
                body: "caught the internal error"
            };
        }
        // in this case, counts the function execution as successfull
        return context.res = {
            status: 400,
            body: "didn't catch the error. Please pass a name on the query string or in the request body"
        };

    }
};

1 个答案:

答案 0 :(得分:2)

  

这是Azure功能中的监视工作方式吗?所以唯一的方法   将执行标记为错误是抛出未捕获的错误?

是的,是的,有关详细信息,请参阅此issue

  

在Application Insight中,仍然可以根据以下内容对请求进行排序   他们的响应状态代码?例如反正有看到   单个功能返回了500个请求?

您可以使用应用程序见解分析来归档目标,并编写如下所示的简单查询:

requests 
| where name ="your function app name"
| where resultCode =="500 or other status code"
| count

结果如下:

enter image description here

注意:如果您不知道如何导航应用程序见解分析,请执行以下步骤:

1。在azure门户->概述刀片->顶部栏中导航到您的应用程序见解(与功能应用程序关联),然后单击“分析”选项。

enter image description here