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
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")
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
extend
project
print
where
parse
project-away
project-rename
datatable
columnifexists
(użyj kolumnifexists zamiast column_ifexists)
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
- Funkcje bitowe
- Funkcje konwersji
- Funkcje DateTime i TimeSpan
- Funkcje dynamiczne i tablicowe
- Funkcje matematyczne
- Funkcje warunkowe
- Funkcje ciągów
base64_encodestring
(użyj base64_encodestring zamiast base64_encode_tostring)base64_decodestring
(użyj base64_decodestring zamiast base64_decode_tostring)countof
extract
extract_all
indexof
isempty
isnotempty
parse_json
replace
split
strcat
strcat_delim
strlen
substring
tolower
toupper
hash_sha256
- Funkcje typów
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.