Utföra loggfrågor i Azure Monitor som sträcker sig över arbetsytor och appar
Azure Monitor-loggar stöder frågor över flera Log Analytics-arbetsytor och Program Insights i samma resursgrupp, en annan resursgrupp eller en annan prenumeration. Detta ger dig en systemomfattande vy över dina data.
Om du hanterar prenumerationer i andra Azure Active Directory-klienter (Azure AD) via Azure Lighthousekan du inkludera Log Analytics-arbetsytor som skapats i dessa kundklienter i dina frågor.
Det finns två metoder för att fråga efter data som lagras i flera arbetsytor och appar:
- Uttryckligen genom att ange information om arbetsytan och appen. Den här tekniken beskrivs i den här artikeln.
- Implicit användning av resurskontextfrågor. När du frågar i kontexten för en specifik resurs, resursgrupp eller en prenumeration hämtas relevanta data från alla arbetsytor som innehåller data för dessa resurser. Program Insights data som lagras i appar hämtas inte.
Viktigt
Om du använder en arbetsytebaserad programresurs Insightslagras telemetri på en Log Analytics-arbetsyta med alla andra loggdata. Använd uttrycket workspace() för att skriva en fråga som innehåller program på flera arbetsytor. För flera program på samma arbetsyta behöver du inte en fråga mellan arbetsytor.
Frågebegränsningar mellan resurser
- Antalet Application Insights-resurser och Log Analytics-arbetsytor som du kan inkludera i en enskild fråga är begränsat till 100.
- Frågor mellan resurser stöds inte i Vydesignern. Du kan skapa en fråga i Log Analytics och fästa den på Azure-instrumentpanelen för att visualisera en loggfråga eller inkludera den i Arbetsböcker.
- Frågor mellan resurser i logga aviseringar stöds endast i den aktuella scheduledQueryRules API. Om du använder det äldre API:et för Log Analytics-aviseringar måste du växla till det aktuella API:et.
Köra frågor mellan Log Analytics-arbetsytor och från Application Insights
Om du vill referera till en annan arbetsyta i din fråga använder du arbetsyteidentifieraren, och för en app från Application Insights använder du appidentifieraren.
Identifiera arbetsyteresurser
I följande exempel visas frågor mellan Log Analytics-arbetsytor för att returnera sammanfattade antal loggar från uppdateringstabellen på en arbetsyta med namnet contosoretail-it.
Du kan identifiera en arbetsyta på något av följande sätt:
Resursnamn – är ett läsbart namn på arbetsytan, som ibland kallas komponentnamn.
Viktigt
Eftersom app- och arbetsytenamn inte är unika kan den här identifieraren vara tvetydig. Vi rekommenderar att referensen är efter kvalificerat namn, arbetsyte-ID eller Azure-resurs-ID.
workspace("contosoretail-it").Update | countKvalificerat namn – är arbetsytans "fullständiga namn" och består av prenumerationens namn, resursgrupp och komponentnamn i det här formatet: subscriptionName/resourceGroup/componentName.
workspace('contoso/contosoretail/contosoretail-it').Update | countAnteckning
Eftersom Azure-prenumerationsnamn inte är unika kan den här identifieraren vara tvetydig.
Arbetsyte-ID – Ett arbetsyte-ID är den unika, oföränderliga identifierare som tilldelas varje arbetsyta som representeras som en globalt unik identifierare (GUID).
workspace("b459b4u5-912x-46d5-9cb1-p43069212nb4").Update | countAzure-resurs-ID – den Azure-definierade unika identiteten för arbetsytan. Du använder resurs-ID:t när resursnamnet är tvetydigt. För arbetsytor är formatet: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft. OperationalInsights/workspaces/componentName.
Exempel:
workspace("/subscriptions/e427519-5645-8x4e-1v67-3b84b59a1985/resourcegroups/ContosoAzureHQ/providers/Microsoft.OperationalInsights/workspaces/contosoretail-it").Update | count
Identifiera ett program
I följande exempel returneras ett sammanfattat antal begäranden som görs mot en app med namnet fabrikamapp i Application Insights.
Du kan identifiera ett program Insights program i Application Insights med uttrycket app(Identifier). Argumentet Identifierare anger appen med något av följande:
Resursnamn – är ett läsbart namn på appen, som ibland kallas komponentnamnet.
app("fabrikamapp")Anteckning
Att identifiera ett program efter namn förutsätter att det är unikt för alla tillgängliga prenumerationer. Om du har flera program med det angivna namnet misslyckas frågan på grund av tvetydigheten. I det här fallet måste du använda någon av de andra identifierarna.
Kvalificerat namn – är appens "fullständiga namn" och består av prenumerationens namn, resursgrupp och komponentnamn i det här formatet: subscriptionName/resourceGroup/componentName.
app("AI-Prototype/Fabrikam/fabrikamapp").requests | countAnteckning
Eftersom Azure-prenumerationsnamn inte är unika kan den här identifieraren vara tvetydig.
ID – programmets app-GUID.
app("b459b4f6-912x-46d5-9cb1-b43069212ab4").requests | countAzure-resurs-ID – appens Azure-definierade unika identitet. Du använder resurs-ID:t när resursnamnet är tvetydigt. Formatet är: /subscriptions/subscriptionId/resourcegroups/resourceGroup/providers/microsoft. OperationalInsights/components/componentName.
Exempel:
app("/subscriptions/b459b4f6-912x-46d5-9cb1-b43069212ab4/resourcegroups/Fabrikam/providers/microsoft.insights/components/fabrikamapp").requests | count
Utföra en fråga över flera resurser
Du kan köra frågor mot flera resurser från någon av dina resursinstanser. Dessa kan vara arbetsytor och appar som kombineras.
Exempel för fråga mellan två arbetsytor:
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
Använda frågor mellan resurser för flera resurser
När du använder frågor mellan resurser för att korrelera data från flera Log Analytics-arbetsytor Insights programresurser kan frågan bli komplex och svår att underhålla. Du bör använda funktioner i Azure Monitor för att separera frågelogiken från omfånget för frågeresurserna, vilket förenklar frågestrukturen. Följande exempel visar hur du kan övervaka flera programresurser Insights och visualisera antalet misslyckade begäranden efter programnamn.
Skapa en fråga som liknar följande som refererar till omfånget för Application Insights resurser. Kommandot withsource= SourceApp lägger till en kolumn som anger programnamnet som skickade loggen. Spara frågan som funktion med aliasprogrammenKopiera.
// 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
Du kan nu använda den här funktionen i en fråga mellan resurser som följande. Funktionens aliasprogramKopiering returnerar union av tabellen requests från alla definierade program. Frågan filtrerar sedan efter misslyckade begäranden och visualiserar trenderna efter program. Parse-operatorn är valfri i det här exemplet. Programmets namn extraheras från egenskapen SourceApp.
applicationsScoping
| where timestamp > ago(12h)
| where success == 'False'
| parse SourceApp with * '(' applicationName ')' *
| summarize count() by applicationName, bin(timestamp, 1h)
| render timechart
Anteckning
Den här metoden kan inte användas med logga aviseringar eftersom åtkomstvalidering av aviseringsregelresurser, inklusive arbetsytor och program, utförs när aviseringen skapas. Det finns inte stöd för att lägga till nya resurser i funktionen när aviseringen har skapats. Om du föredrar att använda funktionen för resursomfång i logga aviseringar måste du redigera aviseringsregeln i portalen eller med en Resource Manager mall för att uppdatera de begränsade resurserna. Du kan också inkludera listan över resurser i loggaviseringsfrågan.

Nästa steg
- Granska Analysera loggdata i Azure Monitor för en översikt över loggfrågor och hur Azure Monitor loggdata är strukturerade.