Azure Functions 内存/消耗单位使用情况

Azure Functions memory / consumption unit usage

是否可以查看内存使用情况/您 presently/historically 为 Azure Functions 使用了多少消耗单位?

我目前正在为处理来自服务总线队列的消息的函数使用消费计划。每条消息大约需要 5 秒来处理,通常每秒处理数百条消息。

我担心的只是在某个时候我会开始看到内存不足的异常而没有任何预警,尽管这对我在计费之前了解成本也很有帮助。

我浏览了门户网站,发现的只是成功计数和脉搏(它们似乎从未报告过我的函数的任何数据。尽管绘制了图表 - 它们始终是空的。)

还有这个博客post:

https://blogs.msdn.microsoft.com/appserviceteam/2016/11/15/making-azure-functions-more-serverless/

..这实际上是说您不再需要指定内存上限,并且只要您的使用量在 1.5GB 以内并且您的处理时间在 5 分钟超时以下,那么生活就很好。不过,知道我有多少空间会让我安心!

您可以在 Azure 门户中使用 Monitor -> Metrics 视图:

有关此主题的更多信息,请参阅 this functions cost/billing FAQ

您问题的简单答案是 "yes"。

使用 Azure Monitor Metrics REST API 获取 FunctionExecutionUnits 和 FunctionExecutionCount 指标。

此示例调用:
az monitor metrics list --resource /subscriptions/<subid>/resourceGroups/pbconsumptionexample/providers/Microsoft.Web/sites/pbconsumptionexample --metric FunctionExecutionUnits,FunctionExecutionCount --aggregation Total --interval PT1M

产生以下示例输出显示 153600 MB-毫秒,或 .15 GB-ms:

"name": {
    "additionalProperties": {},
    "localizedValue": "Function Execution Units",
    "value": "FunctionExecutionUnits"
  },
  "resourceGroup": "pbconsumptionexample",
  "timeseries": [
    {
      "additionalProperties": {},
      "data": [
        {
          "additionalProperties": {},
          "average": null,
          "count": null,
          "maximum": null,
          "minimum": null,
          "timeStamp": "2018-04-13T23:40:00+00:00",
          "total": 153600.0
        }
      ],
      "metadatavalues": []
    }
  ],

这里有一个解释:

https://github.com/Azure/Azure-Functions/wiki/Consumption-Plan-Cost-Billing-FAQ#how-can-i-access-execution-count-and-gb-seconds-programmatically

更多背景信息:

https://github.com/Azure/Azure-Functions/wiki/Consumption-Plan-Cost-Billing-FAQ