按API名称分组,但忽略参数 - Application Insights

时间:2017-11-18 08:50:08

标签: api azure azure-application-insights azure-diagnostics

我正在使用应用程序洞察来监控应用程序中的API使用情况。我正在尝试生成一个报告,列出过去2个月内调用特定API的次数。这是我的查询

requests
| where timestamp >= ago(24*60h)
| summarize count() by name
| order by count_ desc

问题是API的“名称”还附带了参数以及URL,因此在结果集中使用不同参数多次出现相同的API(例如GET api / getTasks / 1,GET api / getTasks / 2)。我试图通过'requests'模式来检查是否有一个我可以使用的列,其中包含没有参数的API名称,但找不到它。有没有办法按“名称”进行分组而不需要参数?请帮助查询。非常感谢提前。

1 个答案:

答案 0 :(得分:1)

这会在第二次斜线后削减所有内容:

requests
| where timestamp > ago(1d)
| extend idx = indexof(name, "/", indexof(name, "api/") + 4)
| extend strippedname = iff(idx >= 0, substring(name, 0, idx), name)
| summarize count() by strippedname
| order by count_ 

另一种方法(如果API表面很小)是通过嵌套的iif运算符提取值。