Strutturare query di Log Analytics

Completato

Gli amministratori compilano le query di Log Analytics a partire dai dati archiviati in tabelle dedicate in un'area di lavoro Log Analytics. Alcune tabelle dedicate comuni includono Event, Syslog, Heartbeat e Alert. Quando si compila una query di Linguaggio di query Kusto (KQL, Kusto Query Language), si inizia determinando quali tabelle nel repository dei log di Monitoraggio di Azure contengono i dati che si stanno cercando.

La figura seguente illustra in che modo le query KQL usano i dati della tabella dedicata per i servizi e le risorse monitorati.

Illustration that shows how to build Log Analytics queries from data in dedicated tables in a Log Analytics workspace.

Informazioni sulla struttura delle query KQL

Verranno ora esaminati in dettaglio i dati della tabella dedicata e come strutturare una query di log KQL.

  • Ogni origine dati e soluzione selezionata archivia i dati in tabelle dedicate nell'area di lavoro Log Analytics.

  • La documentazione per ogni origine dati e soluzione include il nome del tipo di dati che crea e una descrizione di ciascuna delle relative proprietà.

  • La struttura di base di una query è una tabella di origine seguita da una serie di comandi (denominati operatori).

  • Una query può disporre di una catena di più operatori per perfezionare i dati ed eseguire funzioni avanzate.

  • Ogni operatore in una catena di query inizia con un carattere pipe |.

  • Molte query richiedono dati provenienti una singola tabella, ma altre query possono usare varie opzioni e includere dati provenienti da più tabelle.

Esempi di query di log KQL

Verranno ora esaminati alcuni operatori di query di log KQL comuni e la sintassi di esempio.

È possibile compilare query per cercare i dati nella tabella StormEvent con cinque voci:

Tipo evento severity start duration area geografica
Water Freezing rain 1 6:00 AM 01-27-2023 3 hours 1, 2
Wind High winds 1 8:00 AM 01-27-2023 12 hours 1, 2, 4, 5
Temperature Below freezing 2 11:00 PM 01-26-2023 10 hours 1, 2, 4, 5
Water Snow 3 4:00 PM 01-26-2023 10 hours 1, 2, 4, 5
Water Flood warning 2 9:00 AM 01-26-2023 10 hours 3

Per trovare altri operatori ed esempi, vedere Query di logdi Monitoraggio di Azure.

Contare il numero di elementi

Usare l'operatore count per individuare il numero di record in un set di record di input.

Nell'esempio seguente viene restituito il numero di record nella tabella StormEvent. I risultati della query rivelano che la tabella StormEvent contiene cinque voci.

StormEvent | count

Risultati della query:

numero.
5

Restituire il primo numero di elementi

Usare l'operatore top per visualizzare i primi record N del set di record di input, ordinati in base alle colonne specificate. Le colonne corrispondono alle proprietà dei dati definite nella tabella dedicata.

Nell'esempio seguente vengono restituiti i primi tre record di dati per StormEvent. La tabella dei risultati mostra il nome della tempesta event, la gravità e la durata prevista.

StormEvent | top 3 by event severity duration

Risultati della query:

evento severity duration
Freezing rain 1 3 hours
High winds 1 12 hours
Below freezing 2 10 hours

Trovare elementi corrispondenti

Usare l'operatore where per filtrare la tabella in base al subset di righe che corrispondono al valore del predicato specificato. Il valore del predicato indica cosa cercare nella tabella, come in where=="find-this".

Nell'esempio seguente vengono filtrati i record di dati per StormEvent in modo da usare solo i record che corrispondono a "neve".

StormEvent | where event=="snow"

La query filtra in base a una riga della tabella StormEvent:

Tipo evento severity start duration area geografica
Water Snow 3 4:00 PM 01-26-2023 10 hours 1, 2, 4, 5

Aggregare il contenuto

Usare l'operatore summarize per creare una tabella che aggrega il contenuto del set di record di input in base alle specifiche.

Nell'esempio seguente viene restituita una tabella di aggregazione per StormEvent. La tabella dei risultati mostra il livello di gravità medio (avg) di ogni tipo di tempesta per ogni region per tutti (count) i record di dati nella tabella dedicata.

StormEvent | summarize count(), avg(severity) by type, region

Risultati della query:

Tipo avg(gravità) area geografica
Water 2 1, 2, 3
Water 3 4, 5
Wind 1 1, 2, 4, 5
Temperature 2 1, 2, 4, 5

Operatori di catena

Qualsiasi query può contenere una catena di operatori.

Si supponga di voler eseguire una ricerca nella tabella StormEvent per vedere quanti giorni hanno registrato temperature sotto lo zero nelle ultime due settimane. Se sono presenti risultati, è necessario visualizzarli in ordine decrescente (a partire dalla data meno recente).

È possibile creare una query con operatori concatenati: where e summarize. La query cerca i dati della tabella raccolti in passato ago(14days). Vengono cercate le corrispondenze con la stringa Below, che fa parte del testo della voce Below freezing relativa al tipo di tempestaTemperature.

La tabella dei risultati aggrega (summarize) tutti gli elementi (count) nella tabella dedicata e mostra gli elementi restituiti in ordine decrescente (desc).

StormEvent
| where (EventLevelName == "Below")
| where (TimeGenerated > ago(14days))
| summarize StormEvent = count(), desc

Risultati della query:

Tipo evento start
Temperature Below freezing 11:00 PM 01-13-2023
Temperature Below freezing 12:00 AM 01-14-2023
Temperature Below freezing 3:00 AM 01-16-2023
Temperature Below freezing 12:00 AM 01-17-2023
Temperature Below freezing 11:00 PM 01-26-2023