KQL Azure 工作簿:按订阅筛选 AppInsights 跨资源查询

KQL Azure Workbook: Filtering AppInsights cross-resource query by subscription

我想按 Azure 工作簿中设置的订阅工作簿参数筛选 ApplicationInsights 资源。我没有看到有关如何执行此操作的文档,有人有解决方案吗?

我的跨资源查询采用以下形式。我需要按 subscriptionId 进行过滤,结果 table 没有参数,我该如何过滤?

union withsource=SourceApp 
app('Contoso-app1').requests,  
app('Contoso-app2').requests, 
app('Contoso-app3').requests, 
app('Contoso-app4').requests, 
app('Contoso-app5').requests 
| parse SourceApp with * "('" applicationName "')" *  
| where success = False

提前致谢。

在遗留应用程序洞察实例中,任何遥测项目的 appName 属性 具有以下结构:

/subscriptions/<subscriptionId>/resourcegroups/<resourceGroup>/providers/microsoft.insights/components/<appInsightsName>

但是,正如您和我发现的那样,有时 appName 只反映名称而不是资源 ID。不管怎样,只要填好,就可以用来得到你想要的东西。

通过使用 split() 函数,我们可以提取 subscriptionId 并使用 where 创建过滤器,如下所示:

union withsource=SourceApp 
app('Contoso-app1').requests,  
app('Contoso-app2').requests, 
app('Contoso-app3').requests, 
app('Contoso-app4').requests, 
app('Contoso-app5').requests 
| parse SourceApp with * "('" applicationName "')" *
| extend subscription = split(appName, "/")[2]
| where subscription == "<a subscriptionId>"

基于工作区的应用程序洞察实例有一个 属性 _ResourceId 可以使用,而不是 appName。如果您使用的是旧实例,convert it to a Workspace based application insights instance 和新(!)日志条目将得到此 _ResourceId 属性:

union withsource=SourceApp 
app('Contoso-app1').requests,  
app('Contoso-app2').requests, 
app('Contoso-app3').requests, 
app('Contoso-app4').requests, 
app('Contoso-app5').requests 
| parse SourceApp with * "('" applicationName "')" *
| extend subscription = split(_ResourceId, "/")[2]
| where subscription == "<a subscriptionId>"