在 Azure 監視器中跨多個工作區和應用程式建立記錄查詢
Azure 監視器記錄支援查詢相同資源群組、另一個資源群組或其他訂用帳戶中的多個 Log Analytics 工作區和 Application Insights 應用程式。 這讓您對資料能有全系統的檢視。
如果您透過 Azure Lighthouse 管理其他 Azure Active Directory (Azure AD) 租用戶中的訂用帳戶,您可以在查詢中加入在這些客戶租用戶中建立的 Log Analytics 工作區。
查詢儲存在多個工作區和應用程式中的資料,有兩種方法:
- 明確指定工作區和應用程式詳細資訊。 本文會詳述這項技巧。
- 隱含使用資源內容查詢。 在特定資源、資源群組或訂用帳戶環境中查詢時,將從內含這些資源資料的所有工作區,擷取相關資料。 不會擷取儲存在應用程式中的 Application Insights 資料。
重要事項
如果您使用以工作區為基礎的 Application Insights 資源,遙測會與所有其他記錄資料一起儲存在 Log Analytics 工作區中。 使用 workspace() 運算式撰寫查詢,其中包括多個工作區中的應用程式。 針對相同工作區中的多個應用程式,您不需要跨工作區查詢。
跨資源查詢限制
- 單一查詢中可加入的 Application Insights 資源和 Log Analytics 工作區數量上限為 100 個。
- 記錄警示中的跨資源查詢僅在目前的 scheduledQueryRules API 中受到支援。 如果您使用舊版 Log Analytics 警示 API,則必須切換至目前的 API。
- 跨資源的參考,例如另一個工作區,應該明確且無法參數化。 如需範例,請參閱 識別工作區資源 。
跨 Log Analytics 工作區和從 Application Insights 查詢
若要在查詢中參考另一個工作區,請使用 workspace 識別項,而若要查詢來自 Application Insights 的應用程式,請使用 app 識別項。
識別工作區資源
下列範例示範對 Log Analytics 工作區的查詢,從名為 contosoretail-it 工作區上的 Update 資料表,傳回記錄彙總計數。
您可以下列數種方式之一來完成識別工作區:
資源名稱 - 是人類看得懂的工作區名稱,有時稱為「元件名稱」。
重要事項
由於應用程式和工作區名稱並非唯一,因此這個識別碼可能語意模糊。 建議參考依限定名稱、工作區識別碼或 Azure 資源識別碼。
workspace("contosoretail-it").Update | count
限定名稱 - 是工作區的「全名」,由訂用帳戶名稱、資源群組及元件名稱所組成,格式如下:subscriptionName/resourceGroup/componentName。
workspace('contoso/contosoretail/contosoretail-it').Update | count
注意
由於 Azure 訂用帳戶名稱並非唯一,因此這個識別碼可能語意模糊。
工作區識別碼 - 工作區識別碼是指派給每個工作區的唯一、不可變識別碼,會以全域唯一識別碼 (GUID) 來表示。
workspace("b459b4u5-912x-46d5-9cb1-p43069212nb4").Update | count
Azure 資源識別碼 – Azure 定義的工作區唯一身分識別。 當資源名稱語意模糊時,您可以使用資源識別碼。 就工作區而言,格式為:/subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/workspaces/componentName。
例如:
workspace("/subscriptions/e427519-5645-8x4e-1v67-3b84b59a1985/resourcegroups/ContosoAzureHQ/providers/Microsoft.OperationalInsights/workspaces/contosoretail-it").Update | count
識別應用程式
下列範例會傳回對 Application Insights 中名為 fabrikamapp 的應用程式所進行要求的彙總計數。
在 Application Insights 中識別應用程式可以使用 app(Identifier) 運算式來完成。 Identifier 引數會使用下列其中之一指定應用程式:
資源名稱 - 是人類看得懂的應用程式名稱,有時稱為「元件名稱」。
app("fabrikamapp")
注意
以名稱來識別應用程式時,會假設該名稱在所有可存取的訂用帳戶中是唯一的。 如果您有多個應用程式具有該指定名稱,查詢就會因為語意模糊而失敗。 在此情況下,您必須使用其中一種其他識別碼。
限定名稱 - 是應用程式的「完整名稱」,由訂用帳戶名稱、資源群組及元件名稱所組成,格式如下:subscriptionName/resourceGroup/componentName。
app("AI-Prototype/Fabrikam/fabrikamapp").requests | count
注意
由於 Azure 訂用帳戶名稱並非唯一,因此這個識別碼可能語意模糊。
識別碼 - 應用程式的應用程式 GUID。
app("b459b4f6-912x-46d5-9cb1-b43069212ab4").requests | count
Azure 資源識別碼 – Azure 定義的應用程式唯一身分識別。 當資源名稱語意模糊時,您可以使用資源識別碼。 格式為:/subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft.OperationalInsights/components/componentName。
例如:
app("/subscriptions/b459b4f6-912x-46d5-9cb1-b43069212ab4/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp").requests | count
跨多個資源執行查詢
您可以查詢任何資源執行個體的多個資源,這些資源執行個體可以是合併的工作區和應用程式。
跨兩個工作區的查詢範例:
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
使用多個資源的跨資源查詢
使用跨資源查詢將資料從多個 Log Analytics 工作區和 Application Insights 資源相互關聯時,查詢可能會變得複雜且難以維護。 您應該利用 Azure 監視器記錄查詢中的函式,將查詢邏輯與查詢資源的範圍分開,如此可簡化查詢結構。 下列範例示範如何監視多個 Application Insights 資源,並將失敗的要求計數依應用程式名稱視覺化。
建立參考 Application Insights 資源範圍的查詢,如下所示。 withsource= SourceApp
命令會新增一個資料行,此資料行可指定傳送記錄的應用程式名稱。 將查詢儲存為函式,且別名為 applicationsScoping。
// 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
您現在可以在跨資源查詢中使用此函式,如下所示。 函式別名 applicationsScoping 會從所有定義的應用程式傳送要求資料表的聯集。 接著,查詢會篩選失敗的要求,並依應用程式將趨勢視覺化。 在此範例中,parse 運算子是選用的。 它會從 SourceApp 屬性擷取應用程式名稱。
applicationsScoping
| where timestamp > ago(12h)
| where success == 'False'
| parse SourceApp with * '(' applicationName ')' *
| summarize count() by applicationName, bin(timestamp, 1h)
| render timechart
注意
此方法無法與記錄警示搭配使用,因為警示規則資源的存取驗證 (包括工作區和應用程式) 會在警示建立時執行。 不支援在警示建立後將新資源新增至函式。 如果您想要在記錄警示中使用函數來設定資源範圍,您必須在入口網站中編輯警示規則,或使用 Resource Manager 範本來更新有限範圍資源。 或者,您可以在記錄警示查詢中納入資源清單。
後續步驟
- 檢閱分析 Azure 監視器中的記錄資料,了解記錄查詢的簡短概觀,以及建置 Azure 監視器記錄資料結構的方式。