Budowanie zapytań KQL

Język zapytań Kusto (KQL) jest językiem zapytań, którego można użyć do wysłania zapytania do jeziora danych następnego pokolenia. KQL pozwala na budowanie różnych typów zapytań z prostych zapytań wyszukiwania do bardziej złożonych zapytań zagregowanych.

Procedura

  1. Przejdź do opcji Data Explorer > Wyszukiwanie stowarzyszone, a następnie kliknij kartę Program budujący zaawansowane .
  2. Kliknij kartę KQL .
  3. W polu tekstowym zapytania wprowadź zapytanie. Na przykład: poniższe zapytanie zwraca wszystkie zdarzenia z ostatnich 5 minut, maksymalnie do 10000 zdarzeń.
    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

    Każdy filtr poprzedzony znakiem potoku (|) jest instancją operatora, z pewnymi parametrami.

    Poniższa lista zawiera niektóre wspólne operatory KQL, których można używać w zapytaniach.

    KQL, operator Opis
    zamówień Sortuje wyniki w kolejności według jednej lub większej liczby kolumn.
    Projekt Zwraca tylko podzbiór określonych kolumn. Na przykład: oryginalna nazwa projektu, nazwa i ładunek.
    podsumuj Powoduje ułożenie wyników w grupy, które mają takie same wartości, jak w wyrażeniach by .
    przejmij Zwraca tylko określoną liczbę podanych wierszy (wartość 5).
    Gdzie: Filtruje wyniki do podzbioru wierszy określonych w argumentach.

Wyniki

Jeśli w zapytaniu wystąpi błąd składniowy, opcja Uruchom zapytanie jest wyłączona aż do usunięcia błędu. Każdy błąd składniowy jest podświetlony czerwoną podkreślaniem, podpowiedzią ze szczegółami błędu składniowego i kontekstowym programem pomocniczym z propozycjami poprawek składni.

Gdy zapytanie jest uruchamiane, dodawana jest karta 'active-query'. Każde zapytanie traci ważność po upływie 4 dni od momentu jego utworzenia. Czas utraty ważności jest wyświetlany na karcie.

Przykład

Zwraca 100 wierszy z tabeli zdarzeń.

events
| take 100

Zwraca 10 kategorii zdarzeń, które mają najwięcej zdarzeń.

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

Zwraca 10 źródeł danych, które mają największą liczbę zdarzeń.

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

Zwraca źródła danych w ciągu ostatniej godziny.

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

Zwraca zdarzenia dla ostatnich 5 minut, maksymalnie do 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

Zwraca zdarzenia dla ostatniej godziny, maksymalnie do 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

Wyszukaj zdarzenia w ciągu ostatnich 24 godzin, które mają źródłowy adres IP 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

Wyszukaj zdarzenia w ciągu ostatnich 24 godzin, które nie mają źródłowego adresu IP 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

Wyszukaj zdarzenia dla ostatniej godziny, w której ładunek ma zgodność z 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