Correlare i dati in Azure Esplora dati e Azure Resource Graph con i dati in un'area di lavoro Log Analytics

È possibile correlare i dati in Azure Esplora dati e Azure Resource Graph con i dati nell'area di lavoro Log Analytics e nelle risorse di Application Insights per migliorare l'analisi nei log di Monitoraggio di Azure. Microsoft Sentinel, che archivia anche i dati nelle aree di lavoro Log Analytics, supporta le query tra servizi in Azure Esplora dati ma non in Azure Resource Graph. Questo articolo illustra come eseguire query tra servizi da qualsiasi servizio che archivia i dati in un'area di lavoro Log Analytics.

Eseguire query tra servizi usando tutti gli strumenti client che supportano query Linguaggio di query Kusto (KQL), tra cui l'interfaccia utente Web di Log Analytics, le cartelle di lavoro, PowerShell e l'API REST.

Autorizzazioni obbligatorie

Per eseguire una query tra servizi che correla i dati in Azure Esplora dati o Azure Resource Graph con i dati in un'area di lavoro Log Analytics, è necessario:

  • Microsoft.OperationalInsights/workspaces/query/*/read autorizzazioni per le aree di lavoro Log Analytics su cui si esegue la query, ad esempio, come fornito dal ruolo predefinito Lettore di Log Analytics.
  • Autorizzazioni di lettura per le risorse su cui si esegue una query in Azure Resource Graph.
  • Autorizzazioni del visualizzatore per le tabelle su cui si esegue una query in Azure Esplora dati.

Eseguire query sui dati in Azure Esplora dati usando adx()

Immettere l'identificatore per un cluster di Azure Esplora dati in una query all'interno del adx modello, seguito dal nome e dalla tabella del database.

adx('https://help.kusto.windows.net/Samples').StormEvents

Combinare tabelle cluster di Azure Esplora dati con un'area di lavoro Log Analytics

Usare il union comando per combinare tabelle cluster con un'area di lavoro Log Analytics.

Ad esempio:

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

Suggerimento

Il formato abbreviato è consentito: ClusterName/InitialCatalog. Ad esempio, adx('help/Samples') viene convertito in adx('help.kusto.windows.net/Samples').

Quando si usa l'operatore anziché l'unionejoin, è necessario usare per hint combinare i dati nel cluster di Azure Esplora dati con l'area di lavoro Log Analytics. Usare Hint.remote={Direction of the Log Analytics Workspace}.

Ad esempio:

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

Unire tramite join i dati di un cluster di Esplora dati di Azure in un tenant con una risorsa di Monitoraggio di Azure in un altro

Le query tra tenant tra i servizi non sono supportate. Si è connessi a un singolo tenant per l'esecuzione della query che si estende su entrambe le risorse.

Se la risorsa di Azure Esplora dati si trova nel tenant A e l'area di lavoro Log Analytics si trova nel tenant B, usare uno dei metodi seguenti:

  • Usare Azure Esplora dati per aggiungere ruoli per le entità in tenant diversi. Aggiungere il proprio ID utente nel tenant B come utente autorizzato nel cluster di Esplora dati di Azure. Verificare che la proprietà TrustedExternalTenant nel cluster di Azure Esplora dati contenga il tenant B. Eseguire la query incrociata completamente nel tenant B.
  • Usare Lighthouse per proiettare la risorsa di Monitoraggio di Azure nel tenant A.

Connettersi a cluster di Esplora dati di Azure da tenant diversi

Kusto Explorer accede automaticamente al tenant a cui appartiene originariamente l'account utente. Per accedere alle risorse in altri tenant con lo stesso account utente, è necessario specificare TenantId in modo esplicito nel stringa di connessione:

Data Source=https://ade.applicationinsights.io/subscriptions/SubscriptionId/resourcegroups/ResourceGroupName;Initial Catalog=NetDefaultDB;AAD Federated Security=True;Authority ID=TenantId

Eseguire query sui dati in Azure Resource Graph usando arg() (anteprima)

Immettere il arg("") modello, seguito dal nome della tabella di Azure Resource Graph.

Ad esempio:

arg("").<Azure-Resource-Graph-table-name>

Ecco alcuni esempi di query di Azure Log Analytics che usano le nuove funzionalità di query tra servizi di Azure Resource Graph:

  • Filtrare una query di Log Analytics in base ai risultati di una query di Azure Resource Graph:

    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
    
  • Creare una regola di avviso che si applica solo a determinate risorse ricavate da una query ARG:

    • Escludere le risorse in base ai tag, ad esempio non attivare avvisi per le macchine virtuali con un tag "Test".

      arg("").Resources
      | where tags.environment=~'Test'
      | project name 
      
    • Recuperare i dati sulle prestazioni correlati all'utilizzo della CPU e filtrare le risorse con il 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"
      

Altri casi d'uso:

  • Usare un tag per determinare se le macchine virtuali devono essere in esecuzione 24x7 o devono essere arrestate di notte.
  • Mostra avvisi in qualsiasi server che contiene un determinato numero di core.

Creare un avviso basato su una query tra servizi dall'area di lavoro Log Analytics

Per creare una regola di avviso basata su una query tra servizi dall'area di lavoro Log Analytics, seguire la procedura descritta in Creare o modificare una regola di avviso di ricerca log, selezionando l'area di lavoro Log Analytics nella scheda Ambito .

Nota

È anche possibile eseguire query tra servizi da Azure Esplora dati e Azure Resource Graph a un'area di lavoro Log Analytics selezionando la risorsa pertinente come ambito dell'avviso.

Limiti

Limitazioni generali delle query tra servizi

  • Le query tra servizi non supportano funzioni e funzioni con parametri la cui definizione include altre espressioni tra aree di lavoro o tra servizi, tra cui adx(), arg()resource(), workspace(), e app().
  • Le query tra servizi supportano solo le funzioni ".show". Questa funzionalità consente alle query tra cluster di fare riferimento direttamente a una funzione tabulare di Monitoraggio di Azure, Azure Esplora dati o Azure Resource Graph. I comandi seguenti sono supportati con la query tra servizi:
    • .show functions
    • .show function {FunctionName}
    • .show database {DatabaseName} schema as json
  • I nomi dei database fanno distinzione tra maiuscole e minuscole.
  • L'identificazione della colonna Timestamp nel cluster non è supportata. L'API query di Log Analytics non passerà il filtro temporale.
  • Le query tra servizi supportano solo il recupero dei dati.
  • collegamento privato (endpoint privati) e restrizioni IP non supportano query tra servizi.
  • mv-expand è limitato a 2.000 record.
  • I log di Monitoraggio di Azure non supportano la external_table() funzione , che consente di eseguire query su tabelle esterne in Azure Esplora dati. Per eseguire query su una tabella esterna, definire external_table(<external-table-name>) come funzione senza parametri in Azure Esplora dati. È quindi possibile chiamare la funzione usando l'espressione adx("").<function-name>.

Limitazioni delle query tra servizi di Azure Resource Graph

  • Microsoft Sentinel non supporta le query tra servizi in Azure Resource Graph.
  • Quando si eseguono query sui dati di Azure Resource Graph da Monitoraggio di Azure:
    • La query restituisce solo i primi 1.000 record.
    • Monitoraggio di Azure non restituisce errori di query di Azure Resource Graph.
    • L'editor di query di Log Analytics contrassegna le query valide di Azure Resource Graph come errori di sintassi.
    • Questi operatori non sono supportati: smv-apply(), arg_max()rand(), arg_min(), , avg(), . varianceif()avg_if()countif()sumif()percentile()percentiles()percentilew()percentilesw()stdev()stdevif()stdevp()variance()variancep()

Combinare tabelle di Azure Resource Graph con un'area di lavoro Log Analytics

Usare il union comando per combinare tabelle cluster con un'area di lavoro Log Analytics.

Ad esempio:

union AzureActivity, arg("").Resources
| take 10
let CL1 = arg("").Resources ;
union AzureActivity, CL1 | take 10

Quando si usa l'operatore anziché l'unionejoin, è necessario usare per hint combinare i dati in Azure Resource Graph con i dati nell'area di lavoro Log Analytics. Usare Hint.remote={Direction of the Log Analytics Workspace}. Ad esempio:

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"

Passaggi successivi