Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Verbeter uw analyse in Azure Monitor-logboeken door gegevens in Azure Data Explorer en Azure Resource Graph te correleren met gegevens in uw Log Analytics-werkruimte en Application Insights-resources. 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. Hoewel Microsoft Sentinel gegevens opslaat in Log Analytics-werkruimten en ondersteuning biedt voor query's tussen services naar Azure Data Explorer, ondersteunt niet elke functie van Microsoft Sentinel query's naar Azure Resource Graph.
Voer query's tussen services uit met behulp van clienthulpprogramma's die KQL-query's (Kusto Query Language) ondersteunen, waaronder Log Analytics in Azure Portal, werkmappen, PowerShell en de REST API.
Vereiste voorwaarden
| Hulpbron | Toestemming vereist |
|---|---|
| Log Analytics-werkruimte |
Microsoft.OperationalInsights/workspaces/query/*/read in de Log Analytics-werkruimten waarin u bijvoorbeeld een query uitvoert, zoals opgegeven door de Log Analytics-lezer ingebouwde rol. |
| Azure Resource Graph (Azure hulpbronnen grafiek) | Leesmachtigingen voor de resources die u opvraagt in Azure Resource Graph |
| Azure-gegevensverkenner | Machtigingen weergeven voor de tabellen die u opvraagt in Azure Data Explorer |
Implementatieoverwegingen
Query's tussen services worden niet ondersteund in de volgende scenario's:
- Cloud van de overheid
- Data Explorer-clusters die zijn geconfigureerd met IP-beperkingen of Private Link (privé-eindpunten)
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. Acceptabele functies zijn onder andere
adx(),arg(),resource(),workspace()enapp(). - Query's voor meerdere services ondersteunen alleen het ophalen van gegevens.
- De enige opdrachten die ondersteuning bieden voor query's tussen services zijn
.showopdrachten. Met deze mogelijkheid kunnen query's tussen clusters rechtstreeks verwijzen naar een tabellaire azure Monitor-, Azure Data Explorer- of Azure Resource Graph-functie.
.showopdrachten die worden ondersteund met de query voor meerdere services:.show functions.show function {FunctionName}.show database {DatabaseName} schema as json - Het identificeren van de kolom Timestamp in een cluster wordt niet ondersteund. De Log Analytics-query-API geeft het tijdfilter niet door.
-
mv-expandondersteunt 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
joingebruiken 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}.
Bijvoorbeeld:AzureDiagnostics | join hint.remote=left adx("cluster=ClusterURI").AzureDiagnostics on (ColumnName)
Overwegingen voor query's voor meerdere services in Azure Resource Graph
- Het
arggedeelte van de query retourneert alleen de eerste 1000 records. Houd er rekening mee dat als u combineert met eenjoin, er mogelijk records ontbreken als de limiet is bereikt. - Met de
joinoperator kunt u gegevens uit één Azure Resource Graph-tabel combineren met één tabel in uw Log Analytics-werkruimte. - Azure Monitor retourneert geen queryfouten van Azure Resource Graph.
- De Log Analytics-queryeditor markeert geldige Azure Resource Graph-query's als syntaxisfouten. Een geldige query kan bijvoorbeeld een fout als deze geven: 'De naam geldige naam <> verwijst niet naar een bekende kolom, tabel, variabele of functie'.
- Deze operators worden niet ondersteund:
smv-apply(),rand(),arg_max(),arg_min(),avg(),avg_if(),countif(),sumif(),percentile(),percentiles(),percentilew(),percentilesw(),stdev(),stdevif(),stdevp(),variance(),variancep(),varianceif(),bin_at. - Microsoft Sentinel biedt geen ondersteuning voor query's tussen services in alle functies waar KQL wordt gebruikt.
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
Aanbeveling
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
Cross-tenant queries 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>
Aanbeveling
De arg() operator is nu beschikbaar voor geavanceerde opsporing in de Microsoft Defender-portal. Met deze functie kunt u query's uitvoeren op Microsoft Sentinel-tabellen. Zie voor meer informatie Azure Resource Graph-queries in geavanceerd zoeken.
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:
Voorbeeld: Log Analytics-query filteren 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
Voorbeelden: Een waarschuwingsregel maken die alleen van toepassing is op bepaalde resources die afkomstig zijn van een arg()-query
Resources uitsluiten op basis van tags. Activeer bijvoorbeeld geen waarschuwingen voor VM's met een Test tag.
arg("").Resources
| where tags.environment=~'Test'
| project name
Prestatiegegevens ophalen met betrekking tot HET CPU-gebruik en filteren op resources met de prod tag.
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 voorbeeldgebruiksvoorbeelden
- 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 gedefinieerd 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 .
Aanbeveling
Voer query's tussen services uit 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 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"