Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Преобразования в Azure Monitor позволяют выполнять запрос KQL к входящим данным Azure Monitor для фильтрации или изменения входящих данных, прежде чем он хранится в рабочей области Log Analytics. В этой статье подробно рассматриваются вопросы KQL и поддерживаемые функции в запросах преобразования, а также специальные операторы, доступные только в преобразованиях.
Так как преобразования применяются к каждой записи по отдельности, они не могут использовать операторы KQL, действующие на нескольких записях. Поддерживаются только те операторы, которые принимают одну строку в качестве входных данных и возвращают не более одной строки. Например, функция summarize не поддерживается, поскольку она суммирует несколько записей.
В преобразованиях поддерживаются только операторы, перечисленные в этой статье. Любые другие операторы, которые могут использоваться в других запросах журнала, не поддерживаются в преобразованиях.
Особые соображения
Команда синтаксического анализа
Команда parse в процессе преобразования ограничена десятью столбцами на каждое выражение из соображений производительности. Если для преобразования требуется обработка более 10 столбцов, разделите его на несколько операторов, как описано в разделе "Разбиение больших команд синтаксического анализа".
Обработка динамических данных
Рассмотрим следующие входные данные с использованием динамических данных:
{
"TimeGenerated" : "2021-11-07T09:13:06.570354Z",
"Message": "Houston, we have a problem",
"AdditionalContext": {
"Level": 2,
"DeviceID": "apollo13"
}
}
Чтобы получить доступ к свойствам в AdditionalContext, определите его как столбец динамического типа в входном потоке:
"columns": [
{
"name": "TimeGenerated",
"type": "datetime"
},
{
"name": "Message",
"type": "string"
},
{
"name": "AdditionalContext",
"type": "dynamic"
}
]
Теперь содержимое столбца AdditionalContext можно проанализировать и использовать в преобразовании KQL:
source
| extend parsedAdditionalContext = parse_json(AdditionalContext)
| extend Level = toint (parsedAdditionalContext.Level)
| extend DeviceId = tostring(parsedAdditionalContext.DeviceID)
Динамические литералы
Используйте функцию parse_json для обработки динамических литералы.
Например, следующие запросы имеют одинаковую функциональность.
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":{}}')
Специальные функции
Следующие функции доступны только в преобразованиях. Их нельзя использовать в других запросах журнала.
parse_cef_dictionary
Учитывая строку, содержащую сообщение CEF, parse_cef_dictionary разбирает свойство Extension сообщения в динамический объект ключ/значение. Точка с запятой — это зарезервированный символ, который необходимо заменить перед передачей необработанного сообщения в метод, как показано в примере.
| 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
Учитывая, что поддерживается строка, содержащая IP-адрес (IPv4 и IPv6), geo_location функция возвращает приблизительное географическое расположение, включая следующие атрибуты:
- Страна
- Регион
- Государство
- Город
- Широта
- Долгота
| extend GeoLocation = geo_location("1.0.0.5")
Это важно
Из-за характера службы геолокации IP, используемой этой функцией, она может привести к задержке приема данных при чрезмерном использовании. Соблюдайте осторожность при использовании этой функции более нескольких раз на преобразование.
Поддерживаемые утверждения
Инструкция let
Правой стороной let может быть скалярное выражение, табличное выражение или определяемая пользователем функция. Поддерживаются только определяемые пользователем функции с скалярными аргументами.
Операторы табличных выражений
Ниже приведены только поддерживаемые источники данных для инструкции KQL в преобразовании:
source, представляющий исходные данные. Рассмотрим пример.
source | where ActivityId == "383112e4-a7a8-4b94-a701-4266dfc18e41" | project PreciseTimeStamp, Messageprintоператор, который всегда создает одну строку. Рассмотрим пример.print x = 2 + 2, y = 5 | extend z = exp2(x) + exp2(y)
Поддерживаемые табличные операторы
extendprojectprintwhereparseproject-awayproject-renamedatatable-
columnifexists(используйте columnifexists вместо column_ifexists)
Поддерживаемые скалярные операторы
Поддерживаются все числовые операторы.
Поддерживаются все арифметические операторы DateTime и TimeSpan.
Поддерживаются перечисленные ниже строковые операторы.
- `=
!==~!~contains!containscontains_cs!contains_cshas!hashas_cs!has_csstartswith!startswithstartswith_cs!startswith_csendswith!endswithendswith_cs!endswith_csmatches regexin!in
Поддерживаются перечисленные ниже битовые операторы.
binary_and()binary_or()binary_xor()binary_not()binary_shift_left()binary_shift_right()
Скалярные функции
Битовые функции
Функции преобразования
Функции DateTime и TimeSpan
Динамические функции и массивы
Математические функции
Условные функции
Строковые функции
-
base64_encodestring(используйте base64_encodestring вместо base64_encode_tostring) -
base64_decodestring(используйте base64_decodestring вместо base64_decode_tostring) countofextractextract_allindexofisemptyisnotemptyparse_jsonsplitstrcatstrcat_delimstrlensubstringtolowertoupperhash_sha256
-
Типовые функции
Заключение идентификаторов в кавычки
При необходимости используйте кавычки для идентификаторов.
Дальнейшие действия
- Создайте правило сбора данных и привязку к нему из виртуальной машины с помощью агента Azure Monitor.