监视 Azure 函数的成功计数

Monitor success count for Azure function

我们将 Azure Functions 与 Node.js 结合使用。

在 Azure 门户 UI 中,在每个函数调用日志的列表旁边(在 Monitor 选项卡中)我们看到两个计数器:"Recent success count" 和 "Recent errors count",是否有以编程方式(或 API)监视这些计数器?

此外,我无法找到配置函数调用成功或失败警报的方法。

如有任何帮助,我将不胜感激。

如果您愿意使用不受支持的 API,您可以从以下位置获取此数据: <sitename>.scm.azurewebsites.net/azurejobs/api/functions/definitions?host=<sitename>&limit=11

这是“监控”选项卡为检索数据所做的调用: https://github.com/projectkudu/AzureFunctionsPortal/blob/1bfec15511a55df1599fcb839b989b8760985d4f/AzureFunctions.Client/app/services/function-monitor.service.ts#L41

目前没有办法在调用成功或失败时发出警报,最好的方法是通过函数代码本身(在退出函数之前以某种方式记录状态)。 Functions 正在努力添加 Application Insights 集成,这应该会改进可用的监控数据,并且可能还会添加 before/after 调用挂钩。

欢迎在 https://github.com/Azure/azure-webjobs-sdk-script/issues

添加任何功能请求

通过连接到与您的 Function App 关联的存储帐户以编程方式访问原始日志记录数据的选项。

连接到该帐户后,您将看到名为 "AzureWebJobsHostLogYYYMM" 的存储表,其中包含所有日志数据。

关于警报,目前,该功能在 Azure Functions 中不可用,需要自定义解决方案,例如 Application Insights 之上的解决方案。你可以看一个例子 here.

要监视 Azure Function 的成功计数,可以选择以下之一

  1. 来自调用日志
  2. 指标api

2 种获取调用日志的方法:

方法一:Azure Function的调用日志可以从Azure Function应用关联的存储账户中获取。每个月的调用日志将在单独的 table 存储中提供。我面临的挑战是无法对记录应用过滤器,在大量日志的情况下响应很慢。这个 link 可能会有帮助, https://gist.github.com/syron/c190638dd77b54adcfb4b9406ed88652

方法 2:如 Matt Mason 所述,

<sitename>.scm.azurewebsites.net/azurejobs/api/functions/definitions?host=<sitename>&limit=<count>. 

这里可以限制记录数。反应比较好。使用此解决方案来监视我的自定义应用程序中的 Azure 函数并按预期工作

指标API: 有一个公开的休息 API 可用于获取 Azure Function Apps 的指标。

API: https://management.azure.com/subscriptions//resourceGroups//providers/microsoft.web/sites//providers/microsoft.insights/metricdefinitions?api-version=2018-01-01

在整个 Azure 函数指标列表中,"FunctionExecutionCount" 和 "Http5xx" 可用于计算 azure 函数的成功计数。 指标值的差异,"FunctionExecutionCount" 和 "Http5xx" 将获得 azure 函数的成功计数。

请参阅以下 link 公开的 REST API 以获取 Azure Function 指标: https://docs.microsoft.com/en-us/rest/api/monitor/metricdefinitions/list

有关指标的更多详细信息,请参阅以下内容 link: https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/monitoring-supported-metrics

我建议使用 Application Insight,构建您自己的查询并将结果固定在仪表板中。您可以对相同的查询结果设置警报。