Korrelera data i Azure Data Explorer och Azure Resource Graph med data på en Log Analytics-arbetsyta
Du kan korrelera data i Azure Data Explorer och Azure Resource Graph med data på din Log Analytics-arbetsyta och Application Insights-resurser för att förbättra din analys i Azure Monitor-loggar. Microsoft Sentinel, som även lagrar data i Log Analytics-arbetsytor, stöder frågor mellan tjänster till Azure Data Explorer men inte till Azure Resource Graph. Den här artikeln beskriver hur du kör frågor mellan tjänster från alla tjänster som lagrar data på en Log Analytics-arbetsyta.
Kör frågor mellan tjänster med hjälp av alla klientverktyg som stöder KQL-frågor (Kusto-frågespråk), inklusive Log Analytics-webbgränssnittet, arbetsböcker, PowerShell och REST-API:et.
Behörigheter som krävs
Om du vill köra en fråga mellan tjänster som korrelerar data i Azure Data Explorer eller Azure Resource Graph med data på en Log Analytics-arbetsyta behöver du:
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.- Läsarbehörigheter till de resurser som du frågar i Azure Resource Graph.
- Visningsbehörigheter till de tabeller som du frågar i Azure Data Explorer.
Implementeringöverväganden
Allmänna överväganden mellan tjänster
Databasnamn är skiftlägeskänsliga.
Använd icke-parametriserade funktioner och funktioner vars definition inte innehåller andra uttryck mellan arbetsytor eller korstjänster, inklusive
adx()
,arg()
,resource()
,workspace()
ochapp()
.Frågor mellan tjänster stöder endast datahämtning.
Frågor mellan tjänster stöder endast ".show" -kommandon. Med den här funktionen kan frågor mellan kluster referera till en Azure Monitor-, Azure Data Explorer- eller Azure Resource Graph-tabellfunktion direkt. Följande kommandon stöds med frågan mellan tjänster:
.show functions
.show function {FunctionName}
.show database {DatabaseName} schema as json
mv-expand
stöder upp till 2 000 poster.Azure Monitor-loggar stöder
external_table()
inte funktionen, vilket gör att du kan köra frågor mot externa tabeller i Azure Data Explorer. Om du vill köra frågor mot en extern tabell definierar duexternal_table(<external-table-name>)
som en parameterlös funktion i Azure Data Explorer. Du kan sedan anropa funktionen med uttrycketadx("").<function-name>
.När du använder operatorn
join
i stället för union måste du använda enhint
för att kombinera data i Azure Data Explorer eller Azure Resource Graph med data på Log Analytics-arbetsytan. AnvändHint.remote={direction of the Log Analytics workspace}
.Till exempel:
AzureDiagnostics | join hint.remote=left adx("cluster=ClusterURI").AzureDiagnostics on (ColumnName)
Det går inte att identifiera tidsstämpelkolumnen i ett kluster. Log Analytics-fråge-API:et skickar inte tidsfiltret.
Data Explorer-kluster som konfigurerats med IP-begränsningar eller Private Link (privata slutpunkter) stöder inte frågor mellan tjänster.
Frågeöverväganden mellan tjänster i Azure Resource Graph
- När du kör frågor mot Azure Resource Graph-data från Azure Monitor:
- Med
join
operatorn kan du kombinera data från en Azure Resource Graph-tabell med en tabell på Log Analytics-arbetsytan. - Frågan returnerar endast de första 1 000 posterna.
- Azure Monitor returnerar inte Azure Resource Graph-frågefel.
- Log Analytics-frågeredigeraren markerar giltiga Azure Resource Graph-frågor som syntaxfel.
- Dessa operatorer stöds inte:
smv-apply()
,rand()
,arg_max()
,arg_min()
,avg()
,avg_if()
,countif()
,sumif()
,percentile()
,percentiles()
, ,percentilew()
,percentilesw()
,stdev()
, ,stdevif()
,stdevp()
,variance()
,variancep()
.varianceif()
- Med
- Microsoft Sentinel stöder inte frågor mellan tjänster till Azure Resource Graph.
Fråga efter data i Azure Data Explorer med hjälp av adx()
Ange identifieraren för ett Azure Data Explorer-kluster i en fråga i adx
mönstret följt av databasnamnet och tabellen.
adx('https://help.kusto.windows.net/Samples').StormEvents
Kombinera Azure Data Explorer-klustertabeller med en Log Analytics-arbetsyta
union
Använd kommandot för att kombinera klustertabeller med en Log Analytics-arbetsyta.
Till exempel:
union customEvents, adx('https://help.kusto.windows.net/Samples').StormEvents
| take 10
let CL1 = adx('https://help.kusto.windows.net/Samples').StormEvents;
union customEvents, CL1 | take 10
Dricks
Kortformat tillåts: ClusterName/InitialCatalog. Till exempel adx('help/Samples')
översätts till adx('help.kusto.windows.net/Samples')
.
Ansluta data från ett Azure Data Explorer-kluster i en klientorganisation med en Azure Monitor-resurs i en annan
Frågor mellan klientorganisationer mellan tjänsterna stöds inte. Du är inloggad på en enda klient för att köra frågan som sträcker sig över båda resurserna.
Om Azure Data Explorer-resursen finns i Klient A och Log Analytics-arbetsytan finns i klient B använder du någon av följande metoder:
- Använd Azure Data Explorer för att lägga till roller för huvudkonton i olika klientorganisationer. Lägg till ditt användar-ID i klientorganisation B som behörig användare i Azure Data Explorer-klustret. Kontrollera att egenskapen TrustedExternalTenant i Azure Data Explorer-klustret innehåller klient B. Kör korsfrågan helt i klient B.
- Använd Lighthouse för att projicera Azure Monitor-resursen i klient A.
Ansluta till Azure Data Explorer-kluster från olika klientorganisationer
Kusto Explorer loggar automatiskt in dig på den klientorganisation som användarkontot ursprungligen tillhör. För att få åtkomst till resurser i andra klienter med samma användarkonto måste du uttryckligen ange TenantId
i anslutningssträng:
Data Source=https://ade.applicationinsights.io/subscriptions/SubscriptionId/resourcegroups/ResourceGroupName;Initial Catalog=NetDefaultDB;AAD Federated Security=True;Authority ID=TenantId
Fråga efter data i Azure Resource Graph med hjälp av arg() (förhandsversion)
arg("")
Ange mönstret följt av tabellnamnet för Azure Resource Graph.
Till exempel:
arg("").<Azure-Resource-Graph-table-name>
Dricks
Operatören arg()
är nu tillgänglig för avancerad jakt i den enhetliga Microsoft Defender-plattformen. Med den här funktionen kan du endast köra frågor mot Microsoft Sentinel-data. Läs mer i Använda arg()-operator för Azure Resource Graph-frågor.
Här är några exempel på Azure Log Analytics-frågor som använder de nya frågefunktionerna i Azure Resource Graph:
Filtrera en Log Analytics-fråga baserat på resultatet av en Azure Resource Graph-fråga:
arg("").Resources | where type == "microsoft.compute/virtualmachines" and properties.hardwareProfile.vmSize startswith "Standard_D" | join ( Heartbeat | where TimeGenerated > ago(1d) | distinct Computer ) on $left.name == $right.Computer
Skapa en aviseringsregel som endast gäller för vissa resurser som tas från en ARG-fråga:
Exkludera resurser baserat på taggar – till exempel för att inte utlösa aviseringar för virtuella datorer med taggen "Test".
arg("").Resources | where tags.environment=~'Test' | project name
Hämta prestandadata som rör CPU-användning och filtrera till resurser med taggen "prod".
InsightsMetrics | where Name == "UtilizationPercentage" | lookup ( arg("").Resources | where type == 'microsoft.compute/virtualmachines' | project _ResourceId=tolower(id), tags ) on _ResourceId | where tostring(tags.Env) == "Prod"
Fler användningsfall:
- Använd en tagg för att avgöra om virtuella datorer ska köra 24 x 7 eller stängas av på natten.
- Visa aviseringar på alla servrar som innehåller ett visst antal kärnor.
Skapa en avisering baserat på en fråga mellan tjänster från Log Analytics-arbetsytan
Om du vill skapa en aviseringsregel baserat på en fråga mellan tjänster från Din Log Analytics-arbetsyta följer du stegen i Skapa eller redigera en varningsregel för loggsökning och väljer din Log Analytics-arbetsyta på fliken Omfång .
Kommentar
Du kan också köra frågor mellan tjänster från Azure Data Explorer och Azure Resource Graph till en Log Analytics-arbetsyta genom att välja relevant resurs som omfång för din avisering.
Kombinera Azure Resource Graph-tabeller med en Log Analytics-arbetsyta
union
Använd kommandot för att kombinera klustertabeller med en Log Analytics-arbetsyta.
Till exempel:
union AzureActivity, arg("").Resources
| take 10
let CL1 = arg("").Resources ;
union AzureActivity, CL1 | take 10
När du använder operatorn join
i stället för union måste du använda en hint
för att kombinera data i Azure Resource Graph med data på Log Analytics-arbetsytan. Använd Hint.remote={Direction of the Log Analytics Workspace}
. Till exempel:
Perf | where ObjectName == "Memory" and (CounterName == "Available MBytes Memory")
| extend _ResourceId = replace_string(replace_string(replace_string(_ResourceId, 'microsoft.compute', 'Microsoft.Compute'), 'virtualmachines','virtualMachines'),"resourcegroups","resourceGroups")
| join hint.remote=left (arg("").Resources | where type =~ 'Microsoft.Compute/virtualMachines' | project _ResourceId=id, tags) on _ResourceId | project-away _ResourceId1 | where tostring(tags.env) == "prod"