以编程方式获取为Function App运行的实例数量

时间:2017-07-30 19:29:45

标签: azure azure-functions azure-sdk

我在消费计划上运行Azure功能应用程序,我想监控当前运行的实例数量。使用格式为

的REST API端点
https://management.azure.com/subscriptions/{subscr}/resourceGroups/{rg}
       /providers/Microsoft.Web/sites/{appname}/instances?api-version=2015-08-01

我能够检索实例。但是,结果与我在Application Insights / Live Metrics Stream中看到的信息不匹配。

例如,现在App Insights在线显示4台服务器,而API调用只返回一台(此1实例的GUID也在App Insights guids中)。

我可以信任谁?是否有更好的方法来获取实例数(例如来自App Insights)?

更新:看起来REST API中的数据是错误的。

我正在向队列发送10000条消息,使用处理请求的相应实例ID记录每个函数调用。

当消息继续进入并且积压增长时,REST API的实例计数似乎是正确的(从1到12缩放)。发送停止后,报告的实例计数会迅速下降(最终返回到1,而处理器仍处于忙碌状态)。

但根据速度和执行日志,我可以看出实际的实例数量在最后一条消息被处理的时刻保持增长并最终达到15个实例。

UPDATE2:看起来SDK拒绝报告超过20台服务器。该指标平均为20,而App Insights保持稳定增长,并且已经显示为41。

1 个答案:

答案 0 :(得分:1)

  

我可以信任谁?是否有更好的方法来获取实例数(例如来自App Insights)?

根据我的理解,我们需要使用Rest API端点来检索实例,可以为多个WebApp配置App Insights,因此App Insights中的在线服务器数量可能适用于多个WebApp。

<强>更新

根据我的测试,应用洞察的数量可能不是实时

在测试期间,如果WebApp功能向外扩展,那么我可以使用Rest API获得多个实例,我还可以在App Insights中在线检查服务器数量。

https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourcegroup}/providers/Microsoft.Web/sites/{functionname}/instances?api-version=2016-08-01

但是在我完成测试后,我可以得到Rest API的实例数 1 ,根据我的理解,这是正确的结果。 与此同时,我在Application Insight中检查了在测试期间在线服务器的数量是最大数量

过了一段时间,应用洞察中的在线服务器数量也变为 1

所以如果我们想获得Azure函数的intance数量,我的建议是使用REST API来实现这一点。

<强> UPDATE2:

据DavidEbbo提到, REST API并不总是可靠

  

不幸的是,REST API并不总是可靠的。具体来说,当功能应用程序跨多个比例单位进行缩放时,仅反映来自“主页”比例单位的实例。你可能不会在一个小小的测试中看到这一点,但如果你开始广泛扩展(例如超过20个实例),你可能会看到这一点。