miniguide

Kusto Query Cheatsheet: Analyze Your Data with KQL

Table of Contents


1. Basic Count

Query: Conta il numero totale di record in una tabella.

TableName
| count

2. Filter by Date Range

Query: Filtra i record in base a un intervallo di tempo specifico.

TableName
| where TimeGenerated between (datetime(2023-01-01) .. datetime(2023-01-31))

3. Summarize with Grouping

Query: Raggruppa i dati per un campo e conta i record per ciascun gruppo.

TableName
| summarize Count = count() by Category

4. Project Specific Columns

Query: Seleziona solamente le colonne di interesse.

TableName
| project TimeGenerated, Category, Value

5. Top Records

Query: Restituisce i primi 10 record in base ad un criterio d’ordinamento.

TableName
| top 10 by Value desc

6. Distinct Values

Query: Ottieni i valori distinti per un campo specifico.

TableName
| distinct Category

7. Using Bin Operator

Query: Raggruppa i record in intervalli di tempo (binning).

TableName
| summarize Count = count() by bin(TimeGenerated, 1h)

8. Join Two Tables

Query: Unisci due tabelle sulla base di un campo comune.

TableA
| join kind=inner (TableB) on CommonField

9. Parse Text Values

Query: Estrai informazioni da una stringa usando parse.

TableName
| parse LogText with "User:" UserName " Action:" ActionType

10. Render Chart

Query: Visualizza i risultati in un grafico a barre.

TableName
| summarize Count = count() by Category
| render barchart

Azure Traces Examples

1. Count Total Traces

Query: Conta il numero totale di tracce registrate.

Traces
| count

2. Filter Traces: Severity Error

Query: Filtra le tracce con livello di gravità “Error”.

Traces
| where SeverityLevel == "Error"

3. Summarize Traces by Time Bin

Query: Raggruppa le tracce per intervallo di tempo.

Traces
| summarize TraceCount = count() by bin(TimeGenerated, 30m)

4. Top 10 Slow Traces

Query: Mostra le 10 tracce con tempi di risposta maggiori.

Traces
| top 10 by Duration desc

5. Filter by Operation Name

Query: Filtra le tracce per un nome di operazione specifico.

Traces
| where OperationName == "MyOperation"

6. Join Traces with Requests

Query: Unisci le tracce con la tabella delle richieste per correlare eventi.

Traces
| join kind=inner (Requests) on OperationId

7. Parse Custom Field from Trace

Query: Estrai un campo personalizzato dal messaggio di traccia.

Traces
| parse Message with "UserID:" UserId " " *

8. Summarize Duration per Operation

Query: Calcola la durata totale per ogni operazione.

Traces
| summarize TotalDuration = sum(Duration) by OperationName

9. Render Traces Trend

Query: Visualizza un grafico a linee dei volumi di tracce nel tempo.

Traces
| summarize Count = count() by bin(TimeGenerated, 1h)
| render timechart

10. Detect Anomalies in Traces

Query: Individua valori anomali nel numero di tracce per intervallo.

Traces
| summarize Count = count() by bin(TimeGenerated, 15m)
| where Count > avg(Count) * 1.5

Troubleshooting Examples on Azure

1. Retrieve Failed Logins

Query: Filtra i log per individuare tentativi di login falliti.

SigninLogs
| where ResultType != "0"
| project TimeGenerated, UserPrincipalName, IPAddress, ResultDescription

2. Count Exceptions in AppInsights

Query: Conta il numero di eccezioni raccolte in Application Insights.

exceptions
| summarize ExceptionCount = count() by bin(TimeGenerated, 1h)

3. Filter Activity Logs for Errors

Query: Filtra i log delle attività per errori critici.

AzureActivity
| where Level == "Error"
| project TimeGenerated, OperationName, ActivityStatus, Caller

4. Summarize Resource Failures

Query: Conta il numero di errori per risorsa.

AzureActivity
| where ActivityStatus == "Failed"
| summarize Failures = count() by ResourceId

5. Identify Slow Response Times

Query: Identifica le richieste lente da Application Insights.

requests
| where Duration > 3000
| project TimeGenerated, Name, Duration, Success

6. Filter Network Drop Events

Query: Filtra eventi di perdita pacchetti nelle reti.

NetworkMonitoring
| where Message contains "Packet Drop"

7. Join Logs for Correlation

Query: Unisci i log delle richieste e delle tracce per correlare errori.

requests
| join kind=inner (Traces) on OperationId
| project TimeGenerated, Name, Message, Duration

8. Parse Exception Messages

Query: Estrai il messaggio di errore da eccezioni complesse.

exceptions
| parse Details with * "Exception:" ExceptionMsg ";"
| project TimeGenerated, ExceptionMsg

Query: Visualizza un grafico dei trend di errori nel tempo.

AzureActivity
| where ActivityStatus == "Failed"
| summarize Failures = count() by bin(TimeGenerated, 1h)
| render timechart

10. Detect Repeated Failures

Query: Individua risorse con fallimenti ripetuti in un intervallo di tempo.

AzureActivity
| where ActivityStatus == "Failed"
| summarize FailureCount = count() by ResourceId, bin(TimeGenerated, 1h)
| where FailureCount > 5