Share via


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.

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').

Wanneer u de join operator gebruikt in plaats van de samenvoeging, moet u een hint operator gebruiken om de gegevens in het Azure Data Explorer-cluster te combineren met de Log Analytics-werkruimte. Gebruik Hint.remote={Direction of the Log Analytics Workspace}.

Voorbeeld:

AzureDiagnostics
| join hint.remote=left adx("cluster=ClusterURI").AzureDiagnostics on (ColumnName)

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 naar Azure Data Explorer-clusters van 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>

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.

Beperkingen

Algemene beperkingen voor query's tussen services

  • Query's voor meerdere services bieden geen ondersteuning voor geparameteriseerde functies en functies waarvan de definitie andere expressies voor meerdere werkruimten of service-expressies omvat, waaronder , , , en app()workspace(). resource()arg()adx()
  • Query's voor meerdere services ondersteunen alleen '.show' -functies. 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
  • Databasenamen zijn hoofdlettergevoelig.
  • Het identificeren van de kolom Timestamp in het cluster wordt niet ondersteund. De Log Analytics-query-API geeft het tijdfilter niet door.
  • Query's voor meerdere services ondersteunen alleen het ophalen van gegevens.
  • Private Link (privé-eindpunten) en IP-beperkingen bieden geen ondersteuning voor query's tussen services.
  • mv-expand is beperkt tot 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 u external_table(<external-table-name>) als een functie zonder parameters in Azure Data Explorer. Vervolgens kunt u de functie aanroepen met behulp van de expressie adx("").<function-name>.

Azure Resource Graph-querybeperkingen voor meerdere services

  • Microsoft Sentinel biedt geen ondersteuning voor query's tussen services in Azure Resource Graph.
  • Wanneer u query's uitvoert op Azure Resource Graph-gegevens vanuit Azure Monitor:
    • 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.
    • Joins worden niet ondersteund wanneer u Hint niet gebruikt.
    • 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()

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"

Volgende stappen