Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det finns två sätt att fråga efter data från flera arbetsytor, program och resurser:
- Explicit – rikta in dig på arbetsytan, appen eller resursen med hjälp av uttrycken workspace(), app()eller resource(), enligt beskrivningen i den här artikeln.
- Implicit – använd resurskontextfrågor. När du frågar i kontexten för en specifik resurs, resursgrupp eller en prenumeration hämtar frågan relevanta data från alla arbetsytor som innehåller data för dessa resurser. Resurskontextfrågor hämtar inte data från klassiska Application Insights-resurser.
Den här artikeln beskriver hur du använder explicita workspace(), app()och resource() -uttryck för att fråga efter data från flera Log Analytics-arbetsytor, program och resurser.
När du hanterar prenumerationer i andra Microsoft Entra-klienter med Azure Lighthouse är Log Analytics-arbetsytor som skapats i dessa kundklienter tillgängliga att använda i dina frågor mellan arbetsytor.
Viktigt!
Om du använder en arbetsytebaserad Application Insights-resurs lagras telemetri på en Log Analytics-arbetsyta med alla andra loggdata. Använd uttrycket workspace() för att fråga efter data från program på flera arbetsytor. Du behöver ingen tvärs arbetsyta-fråga för att fråga data från flera applikationer i samma arbetsyta.
Behörigheter som krävs
| Åtgärd | Behörigheter som krävs |
|---|---|
| Kontrollera arbetsytans tillstånd |
Microsoft.OperationalInsights/workspaces/query/*/read behörigheter till de Log Analytics-arbetsytor som du frågar efter, till exempel den inbyggda rollen Log Analytics Reader. |
| Spara en fråga |
microsoft.operationalinsights/querypacks/queries/action behörigheter för frågepaketet där du vill spara frågan, till exempel, som tillhandahålls av den inbyggda rollen Log Analytics Contributor. |
Överväganden
- Frågor mellan resurser och mellan tjänster stöder inte parametriserade funktioner och funktioner vars definition omfattar andra uttryck mellan arbetsytor eller korstjänster, inklusive
adx(),arg(),resource(),workspace()ochapp(). - Du kan inkludera upp till 100 Log Analytics-arbetsytor eller klassiska Application Insights-resurser i en enda fråga.
- Att fråga över ett stort antal resurser kan göra frågan avsevärt långsammare.
- Frågor över flera resurser i loggsökningsaviseringar stöds endast i den nuvarande scheduledQueryRules API. Om du använder det äldre Log Analytics-aviserings-API:et måste du växla till det aktuella API:et.
- Referenser till en korsresurs, till exempel en annan arbetsyta, bör vara explicita och kan inte parametriseras.
Använda funktioner för att förenkla frågor
Det här avsnittet beskriver hur du frågar arbetsytor, program och resurser med och utan att använda en funktion.
Fråga utan att använda en funktion
Du kan alltid använda explicita uttryck direkt för att köra frågor mot flera resurser. Dessa resurser kan vara arbetsytor och appar tillsammans.
Exempel på en fråga mellan tre arbetsytor:
union
Update,
workspace("00000000-0000-0000-0000-000000000001").Update,
workspace("00000000-0000-0000-0000-000000000002").Update
| where TimeGenerated >= ago(1h)
| where UpdateState == "Needed"
| summarize dcount(Computer) by Classification
Mer information finns i unionoperatorn, where-operatorn och summera-operatorn.
Fråga med hjälp av en funktion
När du använder frågor mellan resurser för att korrelera data från flera Log Analytics-arbetsytor och Application Insights-komponenter kan frågan bli komplex och svår att underhålla. Du bör använda funktioner i Azure Monitor-loggfrågor för att skilja frågelogik från omfånget för frågeresurserna. Den här metoden förenklar frågestrukturen. I följande exempel visas hur du kan övervaka flera Application Insights-komponenter och visualisera antalet misslyckade begäranden efter programnamn.
Skapa en fråga som i följande exempel som refererar till omfånget för Application Insights-komponenter. Kommandot withsource= SourceApp lägger till en kolumn som anger programnamnet som skickade loggen.
Spara frågan som en funktion med aliaset applicationsScoping.
// crossResource function that scopes my Application Insights components
union withsource= SourceApp
app('00000000-0000-0000-0000-000000000000').requests,
app('00000000-0000-0000-0000-000000000001').requests,
app('00000000-0000-0000-0000-000000000002').requests,
app('00000000-0000-0000-0000-000000000003').requests,
app('00000000-0000-0000-0000-000000000004').requests
Du kan nu använda den här funktionen i en fråga mellan resurser som i följande exempel. Funktionsaliaset applicationsScoping returnerar en union av begärandetabellen från alla definierade program. Frågan filtrerar sedan efter misslyckade begäranden och visualiserar trenderna per program. Operatorn parse är valfri i det här exemplet. Den extraherar programnamnet från SourceApp egenskapen .
applicationsScoping
| where timestamp > ago(12h)
| where success == 'False'
| parse SourceApp with * '(' applicationId ')' *
| summarize count() by applicationId, bin(timestamp, 1h)
| render timechart
Anteckning
Den här metoden kan inte användas med loggsökningsaviseringar eftersom åtkomstverifieringen av aviseringsregelresurserna, inklusive arbetsytor och program, utförs när aviseringar skapas. Det går inte att lägga till nya resurser i funktionen när aviseringen har skapats. Om du föredrar att använda en funktion för resursomfång i loggsökningsaviseringar måste du redigera aviseringsregeln i portalen eller med en Azure Resource Manager-mall för att uppdatera de begränsade resurserna. Du kan också inkludera listan över resurser i aviseringsfrågan för loggsökning.
Fråga mellan Log Analytics-arbetsytor med hjälp av workspace()
Använd uttrycket workspace() för att hämta data från en specifik arbetsyta i samma resursgrupp, en annan resursgrupp eller en annan prenumeration. Du kan använda det här uttrycket för att inkludera loggdata i en Application Insights-fråga och för att fråga data över flera arbetsytor i en loggfråga.
Syntax
workspace(
Identifierare)
Argument
Identifier: De explicita identifierarformaten i följande tabell är det bästa sättet att fråga arbetsytor eftersom de är de mest effektiva.
| Identifierare | beskrivning | Exempel |
|---|---|---|
| ID-nummer | GUID för arbetsytan | arbetsyta("00000000-0000-0000-0000-000000000000") |
| Azure Resource-ID | Identifierare för Azure-resursen | workspace("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail") |
Andra arbetsyteidentifierare som endast använder arbetsytans namn eller arbetsytans resursnamn rekommenderas inte eftersom de resulterar i sämre prestanda och möjliga fel vid frågor mellan arbetsytor.
Exempel
workspace("00000000-0000-0000-0000-000000000000").Update | count
workspace("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Contoso/providers/Microsoft.OperationalInsights/workspaces/contosoretail").Event | count
union
( workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myRoleInstance")
| count
union
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests) | where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))
Fråga mellan klassiska Application Insights-program med app()
Använd uttrycket app för att hämta data från en specifik klassisk Application Insights-resurs i samma resursgrupp, en annan resursgrupp eller en annan prenumeration. Om du använder en arbetsytebaserad Application Insights-resurs lagras telemetri på en Log Analytics-arbetsyta med alla andra loggdata. Använd uttrycket workspace() för att fråga efter data från program på flera arbetsytor. Du behöver ingen tvärs arbetsyta-fråga för att fråga data från flera applikationer i samma arbetsyta.
Syntax
app(
Identifierare)
Argument
Identifier: De explicita identifierarformaten i följande tabell är det bästa sättet att fråga appar eftersom de är mest effektiva..
| Identifierare | beskrivning | Exempel |
|---|---|---|
| ID-nummer | GUID för appen | app("00000000-0000-0000-0000-000000000000") |
| Azure Resource-ID | Identifierare för Azure-resursen | app("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp") |
Exempel
app("00000000-0000-0000-0000-000000000000").requests | count
app("/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp").requests | count
union
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat | where Computer == "myComputer"),
(app("00000000-0000-0000-0000-000000000000").requests | where cloud_RoleInstance == "myColumnInstance")
| count
union
(workspace("00000000-0000-0000-0000-000000000000").Heartbeat), (app("00000000-0000-0000-0000-000000000000").requests)
| where TimeGenerated between(todatetime("2023-03-08 15:00:00") .. todatetime("2023-04-08 15:05:00"))
Korrelera data mellan resurser med hjälp av resource()
Uttrycket resource används i en Azure Monitor-fråga som är begränsad till en resurs för att hämta data från andra resurser.
Syntax
resource(
Identifierare)
Argument
Identifier: Identifierar resursen, resursgruppen eller prenumerationen som data ska korreleras från.
| Identifierare | beskrivning | Exempel |
|---|---|---|
| Resurs | Innehåller data för resursen. | resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm") |
| Resursgrupp eller prenumeration | Innehåller data för resursen och alla resurser som den innehåller. | resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxx/resourcesgroups/myresourcegroup) |
Exempel
union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup/providers/microsoft.compute/virtualmachines/myvm").Heartbeat) | summarize count() by _ResourceId, TenantId
union (Heartbeat),(resource("/subscriptions/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcesgroups/myresourcegroup").Heartbeat) | summarize count() by _ResourceId, TenantId
Relaterat innehåll
Se Analysera loggdata i Azure Monitor för en översikt över loggfrågor och hur Azure Monitor-loggdata är strukturerade.