Strutturare query di Log Analytics
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.
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 |