我正在运行以下简单功能,以检查Function App中的监视工作方式。如果我的函数返回“ 400”状态代码,则在“监视”部分(以及随后的“应用程序洞察”)中,它将执行标记为成功。另外,如果引发并捕获错误,则仍标记为成功。如果它引发了错误但没有捕获到错误,那么它将检测到并计为错误(但这种情况并不常见,因为在实际应用中,总是需要捕获可能的错误)。
这是Azure功能中的监视工作方式吗?因此,将执行标记为错误的唯一方法是抛出未捕获的错误?!?!!
在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"
};
}
};
答案 0 :(得分:2)
这是Azure功能中的监视工作方式吗?所以唯一的方法 将执行标记为错误是抛出未捕获的错误?
是的,是的,有关详细信息,请参阅此issue。
在Application Insight中,仍然可以根据以下内容对请求进行排序 他们的响应状态代码?例如反正有看到 单个功能返回了500个请求?
您可以使用应用程序见解分析来归档目标,并编写如下所示的简单查询:
requests
| where name ="your function app name"
| where resultCode =="500 or other status code"
| count
结果如下:
注意:如果您不知道如何导航应用程序见解分析,请执行以下步骤:
1。在azure门户->概述刀片->顶部栏中导航到您的应用程序见解(与功能应用程序关联),然后单击“分析”选项。