我正在使用应用程序洞察来监控应用程序中的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名称,但找不到它。有没有办法按“名称”进行分组而不需要参数?请帮助查询。非常感谢提前。
答案 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运算符提取值。