Gegevens correleren in Azure Data Explorer en Azure Resource Graph met gegevens in een Log Analytics-werkruimte
U kunt gegevens in Azure Data Explorer en Azure Resource Graph correleren met gegevens in uw Log Analytics-werkruimte en Application Insights-resources om uw analyse in Azure Monitor-logboeken te verbeteren. Microsoft Sentinel, die ook gegevens opslaat in Log Analytics-werkruimten, ondersteunt query's tussen services naar Azure Data Explorer, maar niet naar Azure Resource Graph. In dit artikel wordt uitgelegd hoe u query's voor meerdere services uitvoert vanuit elke service waarin gegevens in een Log Analytics-werkruimte worden opgeslagen.
Voer query's tussen services uit met behulp van clienthulpprogramma's die ondersteuning bieden voor KQL-query's (Kusto-querytaal), waaronder de Log Analytics-webinterface, werkmappen, PowerShell en de REST API.
Vereiste machtigingen
Als u een query tussen services wilt uitvoeren die gegevens correleert in Azure Data Explorer of Azure Resource Graph met gegevens in een Log Analytics-werkruimte, hebt u het volgende nodig:
Microsoft.OperationalInsights/workspaces/query/*/read
machtigingen voor de Log Analytics-werkruimten die u opvraagt, zoals opgegeven door de ingebouwde rol van Log Analytics Reader.- Leesmachtigingen voor de resources die u opvraagt in Azure Resource Graph.
- Viewermachtigingen voor de tabellen die u opvraagt in Azure Data Explorer.
Implementatieoverwegingen
Algemene overwegingen voor meerdere services
Databasenamen zijn hoofdlettergevoelig.
Gebruik niet-geparameteriseerde functies en functies waarvan de definitie geen andere expressies voor meerdere werkruimten of services bevat, waaronder , , , en
app()
workspace()
.resource()
arg()
adx()
Query's voor meerdere services ondersteunen alleen het ophalen van gegevens.
Query's voor meerdere services ondersteunen alleen '.show' -opdrachten. Met deze mogelijkheid kunnen query's tussen clusters rechtstreeks verwijzen naar een tabellaire azure Monitor-, Azure Data Explorer- of Azure Resource Graph-functie. De volgende opdrachten worden ondersteund met de query voor meerdere services:
.show functions
.show function {FunctionName}
.show database {DatabaseName} schema as json
mv-expand
ondersteunt maximaal 2000 records.Azure Monitor-logboeken bieden geen ondersteuning voor de
external_table()
functie, waarmee u externe tabellen kunt opvragen in Azure Data Explorer. Als u een query wilt uitvoeren op een externe tabel, definieert uexternal_table(<external-table-name>)
als een functie zonder parameters in Azure Data Explorer. Vervolgens kunt u de functie aanroepen met behulp van de expressieadx("").<function-name>
.Wanneer u de
join
operator gebruikt in plaats van samenvoeging, moet u eenhint
operator gebruiken om gegevens in Azure Data Explorer of Azure Resource Graph te combineren met gegevens in de Log Analytics-werkruimte. GebruikHint.remote={direction of the Log Analytics workspace}
.Voorbeeld:
AzureDiagnostics | join hint.remote=left adx("cluster=ClusterURI").AzureDiagnostics on (ColumnName)
Het identificeren van de kolom Timestamp in een cluster wordt niet ondersteund. De Log Analytics-query-API geeft het tijdfilter niet door.
Data Explorer-clusters die zijn geconfigureerd met IP-beperkingen of Private Link (privé-eindpunten) bieden geen ondersteuning voor query's tussen services.
Overwegingen voor query's voor meerdere services in Azure Resource Graph
- Wanneer u query's uitvoert op Azure Resource Graph-gegevens vanuit Azure Monitor:
- Met de
join
operator kunt u gegevens uit één Azure Resource Graph-tabel combineren met één tabel in uw Log Analytics-werkruimte. - De query retourneert alleen de eerste 1000 records.
- Azure Monitor retourneert geen queryfouten in Azure Resource Graph.
- De Log Analytics-queryeditor markeert geldige Azure Resource Graph-query's als syntaxisfouten.
- Deze operators worden niet ondersteund:
smv-apply()
, ,rand()
,arg_max()
arg_min()
, ,avg()
, ,avg_if()
, ,percentile()
percentiles()
variance()
variancep()
sumif()
percentilesw()
varianceif()
percentilew()
stdev()
stdevif()
stdevp()
countif()
- Met de
- Microsoft Sentinel biedt geen ondersteuning voor query's tussen services in Azure Resource Graph.
Query's uitvoeren op gegevens in Azure Data Explorer met behulp van adx()
Voer de id in voor een Azure Data Explorer-cluster in een query binnen het adx
patroon, gevolgd door de databasenaam en -tabel.
adx('https://help.kusto.windows.net/Samples').StormEvents
Azure Data Explorer-clustertabellen combineren met een Log Analytics-werkruimte
Gebruik de union
opdracht om clustertabellen te combineren met een Log Analytics-werkruimte.
Voorbeeld:
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
Tip
Shorthand-indeling is toegestaan: ClusterName/InitialCatalog. Wordt bijvoorbeeld adx('help/Samples')
vertaald naar adx('help.kusto.windows.net/Samples')
.
Gegevens samenvoegen vanuit een Azure Data Explorer-cluster in één tenant met een Azure Monitor-resource in een andere
Query's voor meerdere tenants tussen de services worden niet ondersteund. U bent aangemeld bij één tenant voor het uitvoeren van de query die beide resources omvat.
Als de Azure Data Explorer-resource zich in Tenant A bevindt en de Log Analytics-werkruimte zich in Tenant B bevindt, gebruikt u een van de volgende methoden:
- Gebruik Azure Data Explorer om rollen toe te voegen voor principals in verschillende tenants. Voeg uw gebruikers-id toe in Tenant B als geautoriseerde gebruiker in het Azure Data Explorer-cluster. Controleer of de eigenschap TrustedExternalTenant in het Azure Data Explorer-cluster tenant B bevat. Voer de kruisquery volledig uit in Tenant B.
- Gebruik Lighthouse om de Azure Monitor-resource te projecteren in Tenant A.
Verbinding maken met Azure Data Explorer-clusters vanuit verschillende tenants
Kusto Explorer meldt u automatisch aan bij de tenant waartoe het gebruikersaccount oorspronkelijk behoort. Als u toegang wilt krijgen tot resources in andere tenants met hetzelfde gebruikersaccount, moet u expliciet opgeven TenantId
in de verbindingsreeks:
Data Source=https://ade.applicationinsights.io/subscriptions/SubscriptionId/resourcegroups/ResourceGroupName;Initial Catalog=NetDefaultDB;AAD Federated Security=True;Authority ID=TenantId
Query's uitvoeren op gegevens in Azure Resource Graph met behulp van arg() (preview)
Voer het arg("")
patroon in, gevolgd door de naam van de Azure Resource Graph-tabel.
Voorbeeld:
arg("").<Azure-Resource-Graph-table-name>
Tip
De arg()
operator is nu beschikbaar voor geavanceerde opsporing in het geïntegreerde Microsoft Defender-platform. Met deze functie kunt u alleen query's uitvoeren op Microsoft Sentinel-gegevens. Lees meer over de operator Arg() gebruiken voor Azure Resource Graph-query's.
Hier volgen enkele voorbeelden van Azure Log Analytics-query's die gebruikmaken van de nieuwe mogelijkheden voor query's voor meerdere services van Azure Resource Graph:
Filter een Log Analytics-query op basis van de resultaten van een Azure Resource Graph-query:
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
Maak een waarschuwingsregel die alleen van toepassing is op bepaalde resources die afkomstig zijn van een ARG-query:
Sluit resources uit op basis van tags, bijvoorbeeld om waarschuwingen voor VM's met een tag Testen niet te activeren.
arg("").Resources | where tags.environment=~'Test' | project name
Haal prestatiegegevens op met betrekking tot het CPU-gebruik en filter op resources met de tag '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"
Meer use cases:
- Gebruik een tag om te bepalen of vm's 24x7 moeten worden uitgevoerd of 's nachts moeten worden afgesloten.
- Waarschuwingen weergeven op een server die een bepaald aantal kernen bevat.
Een waarschuwing maken op basis van een query voor meerdere services vanuit uw Log Analytics-werkruimte
Als u een waarschuwingsregel wilt maken op basis van een query tussen services vanuit uw Log Analytics-werkruimte, volgt u de stappen in Een waarschuwingsregel voor zoeken in logboeken maken of bewerken, waarbij u uw Log Analytics-werkruimte selecteert op het tabblad Bereik .
Notitie
U kunt ook query's tussen services uitvoeren vanuit Azure Data Explorer en Azure Resource Graph naar een Log Analytics-werkruimte door de relevante resource te selecteren als het bereik van uw waarschuwing.
Azure Resource Graph-tabellen combineren met een Log Analytics-werkruimte
Gebruik de union
opdracht om clustertabellen te combineren met een Log Analytics-werkruimte.
Voorbeeld:
union AzureActivity, arg("").Resources
| take 10
let CL1 = arg("").Resources ;
union AzureActivity, CL1 | take 10
Wanneer u de join
operator gebruikt in plaats van samenvoeging, moet u een hint
operator gebruiken om de gegevens in Azure Resource Graph te combineren met gegevens in de Log Analytics-werkruimte. Gebruik Hint.remote={Direction of the Log Analytics Workspace}
. Voorbeeld:
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"