Creazione di query KQL

Il KQL (Kusto Query Language) è un linguaggio di query che è possibile utilizzare per eseguire la query del data lake QRadar® . KQL consente di creare una varietà di tipi diversi di query, dalle semplici query di ricerca alle query aggregate più complesse.

Procedura

  1. Andare a Menu > Data Explorer > Ricerca.
    Suggerimento: è possibile anche fare clic su Avvia ricerca nella home page.
  2. Dall'elenco a discesa del tipo di query, selezionare Log / Avvisi (KQL).
  3. Nel campo di testo della query, immettere la query. Ad esempio, la seguente query restituisce tutti gli eventi degli ultimi 5 minuti, fino a un massimo di 10000 eventi.
    events    
        | project original_time, data_source_name, name, user_id, low_level_categories,
            src_ip, src_port, dst_ip, dst_port, payload
        //--- Search for the last 5 minutes of data
        | where original_time > ago(5m)    
        //--- USER Criteria Here    
        | take 10000

    Ogni filtro preceduto dal carattere pipe (|) è un'istanza di un operatore, con alcuni parametri.

    Il seguente elenco contiene alcuni operatori KQL comuni che è possibile utilizzare in query.

    Operatore KQL Descrizione
    ordine Ordina i risultati in base a una o più colonne.
    progetto Restituisce solo un sottoinsieme di colonne specificato. Ad esempio, original_time, nome e payload del progetto.
    riepilogare Dispone i risultati in gruppi che hanno gli stessi valori dopo le espressioni by .
    prendere Restituisce solo il numero di righe specificato (prendere 5).
    dove Filtra i risultati nel sottoinsieme di righe come specificato nell'argomento.
    Nota: Per il formato ISO 8601, l'operatore datetime() può essere racchiuso con o senza virgolette. Per altri standard come RFC 822, RFC 850 e il formato Sortable, le query che includono spazi devono essere racchiuse tra virgolette.

Risultati

Se nella query è presente un errore di sintassi, Esegui query è disabilitato fino a quando non si risolve l'errore. Ogni errore di sintassi è evidenziato con una sottolineatura rossa, un suggerimento con i dettagli dell'errore di sintassi e un helper contestuale con suggerimenti di correzione della sintassi.

Quando viene eseguita una query, viene aggiunta una scheda 'active-query'. Ogni query scade 4 giorni dopo essere stata creata. L'ora di scadenza è indicata sulla carta.

Esempio

Restituisce 100 righe dalla tabella eventi.

events
| take 100

Restituisce 10 categorie di eventi che hanno il maggior numero di eventi.

events_all
| summarize Count=count() by qid_event_category
| order by Count desc
| take 10

Restituisce 10 origini dati con il maggior numero di conteggi eventi.

events
| project data_source_name, original_time
| where data_source_name != ''
| summarize Events=count() by data_source_name
| order by Events desc
| take 10

Restituisce le origini dati nell'ultima ora.

events
| project original_time, data_source_name
| where original_time > ago(1h)  
| summarize Count=count() by Time=bin(original_time, 5m), data_source_name  
| order by Time, data_source_name desc

Restituisce eventi per gli ultimi 5 minuti fino a un massimo di 10000.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for the last 5 minutes of data
    | where original_time > ago(5m)    
    //--- USER Criteria Here    
    | take 10000

Restituisce gli eventi per l'ultima ora fino a un massimo di 10000

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for the last hour of data
    | where original_time > ago(5m)    
    //--- USER Criteria Here    
    | take 10000

Ricercare gli eventi delle ultime 24 ore che hanno come indirizzo IP di origine 127.0.0.1.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for IP = 127.0.0.1 over the last 24 hour of data
    | where original_time > ago(24h) and src_ip = ‘127.0.0.1’  
    //--- USER Criteria Here    
    | take 100

Ricercare gli eventi delle ultime 24 ore che non hanno l'indirizzo IP di origine 127.0.0.1.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for IP not equal to 127.0.0.1 over the last 24 hour of data
    | where original_time > ago(24h) and src_ip != ‘127.0.0.1’  
    //--- USER Criteria Here    
    | take 100

Ricercare gli eventi per l'ultima ora in cui il payload ha una corrispondenza su svchost.

events    
    | project original_time, data_source_name, name, user_id, low_level_categories,
        src_ip, src_port, dst_ip, dst_port, payload
    //--- Search for payload that has a match on ‘svchost’ over last hour
    | where original_time > ago(1h) and payload has ‘svchost’  
    //--- USER Criteria Here    
    | take 100