Udostępnij za pośrednictwem


Obsługiwane funkcje KQL w przekształceniach usługi Azure Monitor

Przekształcenia w usłudze Azure Monitor umożliwiają uruchamianie zapytania KQL względem przychodzących danych usługi Azure Monitor w celu filtrowania lub modyfikowania danych przychodzących przed ich zapisaniem w obszarze roboczym usługi Log Analytics. W tym artykule szczegółowo opisano zagadnienia dotyczące języka KQL i obsługiwane funkcje zapytań przekształcania oprócz specjalnych operatorów, które są dostępne tylko w przekształceniach.

Ponieważ przekształcenia są stosowane do każdego rekordu indywidualnie, nie mogą używać żadnych operatorów KQL działających na wielu rekordach. Obsługiwane są tylko operatory, które przyjmują jeden wiersz jako dane wejściowe i zwracają nie więcej niż jeden wiersz. Na przykład funkcja summarize nie jest obsługiwana, ponieważ podsumowuje wiele rekordów.

Tylko operatory wymienione w tym artykule są obsługiwane w przekształceniach. Wszelkie inne operatory, które mogą być używane w innych zapytaniach dziennika, nie są obsługiwane w przekształceniach.

Specjalne uwagi

Przeanalizuj polecenie

Polecenie analizy w transformacji jest ograniczone do 10 kolumn na instrukcję ze względu na wydajność. Jeśli transformacja wymaga analizowania więcej niż 10 kolumn, podziel ją na wiele instrukcji zgodnie z opisem w artykule Podział dużych poleceń analizy.

Obsługa danych dynamicznych

Rozważ następujące dane wejściowe z danymi dynamicznymi:

{
    "TimeGenerated" : "2021-11-07T09:13:06.570354Z",
    "Message": "Houston, we have a problem",
    "AdditionalContext": {
        "Level": 2,
        "DeviceID": "apollo13"
    }
}

Aby uzyskać dostęp do właściwości w obiekcie AdditionalContext, zdefiniuj ją jako kolumnę typu dynamicznego w strumieniu wejściowym:

"columns": [
    {
        "name": "TimeGenerated",
        "type": "datetime"
    },
    {
        "name": "Message",
        "type": "string"
    }, 
    {
        "name": "AdditionalContext",
        "type": "dynamic"
    }
]

Zawartość kolumny AdditionalContext może być teraz analizowana i używana w przekształceniu KQL:

source
| extend parsedAdditionalContext = parse_json(AdditionalContext)
| extend Level = toint (parsedAdditionalContext.Level)
| extend DeviceId = tostring(parsedAdditionalContext.DeviceID)

Literały dynamiczne

parse_json Użyj funkcji do obsługi literałów dynamicznych.

Na przykład następujące zapytania zapewniają te same funkcje:

print d=dynamic({"a":123, "b":"hello", "c":[1,2,3], "d":{}})
print d=parse_json('{"a":123, "b":"hello", "c":[1,2,3], "d":{}}')

Funkcje specjalne

Następujące funkcje są dostępne tylko w przekształceniach. Nie można ich używać w innych zapytaniach dziennika.

parse_cef_dictionary

Biorąc pod uwagę ciąg zawierający komunikat CEF, parse_cef_dictionary analizuje właściwość Extension komunikatu w obiekcie dynamicznego klucza/wartości. Średnik to zastrzeżony znak, który należy zastąpić przed przekazaniem nieprzetworzonego komunikatu do metody, jak pokazano w przykładzie.

| extend cefMessage=iff(cefMessage contains_cs ";", replace(";", " ", cefMessage), cefMessage) 
| extend parsedCefDictionaryMessage =parse_cef_dictionary(cefMessage) 
| extend parsecefDictionaryExtension = parsedCefDictionaryMessage["Extension"]
| project TimeGenerated, cefMessage, parsecefDictionaryExtension

Przykładowe dane wyjściowe funkcji parse_cef_dictionary.

geo_location

Biorąc pod uwagę ciąg zawierający adres IP (obsługiwane są protokoły IPv4 i IPv6), geo_location funkcja zwraca przybliżoną lokalizację geograficzną, w tym następujące atrybuty:

  • Kraj
  • Region (Region)
  • Stan
  • City
  • Szerokość
  • Długość
| extend GeoLocation = geo_location("1.0.0.5")

Zrzut ekranu przedstawiający przykładowe dane wyjściowe funkcji geo_location.

Ważne

Ze względu na charakter usługi geolokalizacji IP używanej przez tę funkcję może ona wprowadzać opóźnienie pozyskiwania danych, jeśli jest używane nadmiernie. Zachowaj ostrożność podczas korzystania z tej funkcji więcej niż kilka razy na przekształcenie.

Obsługiwane instrukcje

Instrukcja let

Prawa strona let może być wyrażeniem skalarnym, wyrażeniem tabelarycznym lub funkcją zdefiniowaną przez użytkownika. Obsługiwane są tylko funkcje zdefiniowane przez użytkownika z argumentami skalarnymi.

Instrukcje wyrażeń tabelarycznych

Jedyne obsługiwane źródła danych dla instrukcji KQL w transformacji są następujące:

  • źródło, które reprezentuje dane źródłowe. Na przykład:

    source
    | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41"
    | project PreciseTimeStamp, Message
    
  • print operator, który zawsze tworzy pojedynczy wiersz. Na przykład:

    print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
    

Obsługiwane operatory tabelaryczne

Obsługiwane operatory skalarne

  • Obsługiwane są wszystkie operatory liczbowe.
  • Obsługiwane są wszystkie operatory arytmetyczne daty/godziny i przedziału czasu.
  • Obsługiwane są następujące operatory ciągów .
    • `=
    • !=
    • =~
    • !~
    • contains
    • !contains
    • contains_cs
    • !contains_cs
    • has
    • !has
    • has_cs
    • !has_cs
    • startswith
    • !startswith
    • startswith_cs
    • !startswith_cs
    • endswith
    • !endswith
    • endswith_cs
    • !endswith_cs
    • matches regex
    • in
    • !in
  • Obsługiwane są następujące operatory bitowe.
    • binary_and()
    • binary_or()
    • binary_xor()
    • binary_not()
    • binary_shift_left()
    • binary_shift_right()

Funkcje skalarne

Identyfikator cudzysłów

Użyj identyfikatora cudzysłów zgodnie z potrzebami.

Następne kroki

  • Utwórz regułę zbierania danych i skojarzenie z nią z maszyny wirtualnej przy użyciu agenta usługi Azure Monitor.