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

man*_*adt 1 api azure azure-diagnostics azure-application-insights

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

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

问题在于 API 的“名称”也随 URL 附加了参数,因此相同的 API 会在结果集中多次出现,且参数不同(例如 GET api/getTasks/1、GET api/getTasks/ 2)。我尝试查看“请求”架构以检查是否有一个我可以使用的列,其中包含不带参数的 API 名称,但找不到它。有没有一种方法可以按“名称”分组而无需见解参数?请帮忙查询一下。预先非常感谢。

Zak*_*iMa 5

这会切断第二个斜杠之后的所有内容:

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_ 
Run Code Online (Sandbox Code Playgroud)

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