问题描述
This answer总结说,App Insights(AI)和Log Analytics(LA)已合并到一项服务中。它还建议AI中的新资源可以指向LA,这样您的所有代码都可以放在一个地方。
我的问题是,鉴于两者都存在,并且您没有时间或权限来更改AI以指向LA,我该如何查询LA和AI资源。
使用Azure工作簿,我意识到我可以从LA或AI内的多个资源进行查询,但是我似乎无法在一个单元格中跨LA和AI进行查询(也不保存单元格之间的结果。)
目前,我认为解决此问题的唯一方法是通过API查询或加入PBI报告,但这两种方法都需要大量开销才能完成探索性查询。有没有一种更简单的方法,理想的是同时保留在Kusto查询中?
解决方法
Azure Monitor是您用于跨资源查询的一站式服务。
以前,使用Azure Monitor只能分析内部数据 当前的工作空间,这限制了您在 您的订阅中定义了多个工作区。另外,你 只能搜索从您的基于Web的遥测项目 直接在Application Insights中使用Application Insights开发应用程序 或从Visual Studio。这也给本地人带来了挑战 一起分析运营和应用程序数据。
现在,您不仅可以跨多个Log Analytics工作区进行查询, 以及来自同一应用程序中特定Application Insights应用程序的数据 资源组,另一个资源组或另一个订阅。这个 为您提供系统范围的数据视图。你只能 在Log Analytics中执行这些类型的查询。
要在查询中引用另一个工作区,请使用workspace标识符,对于Application Insights中的应用程序,请使用app标识符。
例如,您可以从任何资源实例中查询多个资源,这些资源可以是工作空间和应用程序,如下所示。
// crossResource function that scopes my Application Insights resources
union withsource= SourceApp
app('Contoso-app1').requests,app('Contoso-app2').requests,app('Contoso-app3').requests,app('Contoso-app4').requests,app('Contoso-app5').requests
或者类似
union Update,workspace("contosoretail-it").Update,workspace("b459b4u5-912x-46d5-9cb1-p43069212nb4").Update
| where TimeGenerated >= ago(1h)
| where UpdateState == "Needed"
| summarize dcount(Computer) by Classification
或者类似
applicationsScoping
| where timestamp > ago(12h)
| where success == 'False'
| parse SourceApp with * '(' applicationName ')' *
| summarize count() by applicationName,bin(timestamp,1h)
| render timechart
有关详细信息,请参见this。