2017-07-30 83 views
1

我正在消耗计划上运行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 GUID中)。

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

更新:它看起来像来自REST API的数据是错误的。

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

虽然消息一直进来并且积压增长,但REST API中的实例计数似乎是正确的(从1到12)。发送停止后,报告的实例计数迅速下降(最终回到1,而处理器仍然很忙)。

但基于速度和执行日志,我可以告诉实际实例数量不断增加,并最终在最后一条消息处理的时刻结束了15个实例。

UPDATE2:它看起来像SDK拒绝报告超过20台服务器。该公制单位在20,而App Insights保持稳定增长,并已显示41.

+0

我使用azure性能测试(500users * 10分钟)发送http请求,然后得到相同的结果(从REST API实例计数似乎是正确的(从1到12缩放)发送停止后,报告的实例数会迅速下降(最终回到1,而处理器仍然很忙)' –

回答

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实例的数量是,根据我的理解,这是正确的结果。 与此同时,我在Application Insight中检查它,在测试期间,在线服务器的最大数量为

过了一段后,服务器的在线应用程序的洞察力数量也成为。

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

UPDATE2:

按照DavidEbbo提到的REST API并不总是可靠的

不幸的是,REST API并不总是可靠的。具体而言,当功能应用程序跨越多个比例单位时,只会反映“家”比例单位的实例。你可能不会在一个小小的测试中看到这个,但如果你开始广泛地扩展(比如超过20个实例),可能会出现这种情况。

+0

我只为一个应用程序配置了App Insights – Mikhail

+0

最好的测试,我发现应用程序洞察中的在线服务器数量可能会不是实时的,我已经更新了答案 –

+0

我对关于实例的情况有同样的看法,但实际上应用程序的见解显示其他服务器仍在处理消息,而且我确实看到消息处理速率似乎高于从REST API报告的实例,因此我的问题 – Mikhail

相关问题