azure 如何在单个数据集中查找不同应用程序的“connections”为1的时段

jaql4c8m  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(80)

我有一组3个应用程序,它们将状态更新到CosmosDB。从CosmosDB,数据在更改时存储在Application Insights上。
我感兴趣的是,在一段时间内,其中一个应用程序有1个或0个连接,而不是预期的2个连接。
我使用的当前查询是:

| where operation_Name == "MyChangeLogFunction"
| where customDimensions.prop__Key == "asset-1"
| sort by timestamp desc
| extend telemetry = parse_json(tostring(customDimensions.prop__Stream))
| project timestamp, v=toint(telemetry.open_connections)
| project timestamp, v_to=prev(v), v_from=v
| where v_from != v_to

但是使用prev()并不是一个非常干净的查询,我需要手动对所有资产重复查询。
理想情况下,我会有一个查询,它会根据每个资产的连接数量对时段进行聚类,因此我的结果如下所示:

[asset-id] [open connections] [start time] [end time]

有没有一种方法可以编写这样的查询?

6l7fqoea

6l7fqoea1#

你可以使用bin function来创建时间段:

| where operation_Name == "MyChangeLogFunction"
| extend assetId = tostring(customDimensions.prop__Key)
| extend telemetry = parse_json(tostring(customDimensions.prop__Stream))
| extend oc = toint(telemetry.open_connections)
| summarize sum(oc), max(oc), min(oc), avg(oc) by bin(timestamp, 1h), assetId

这将为您提供每个资产每1小时内所有打开的连接的总和,最小值,平均值和最大值。在您的情况下,如果平均值小于2,您就会感兴趣。

相关问题