Памятка по преобразованию из Splunk в Kusto

Эта статья поможет знакомым со Splunk пользователям изучить язык запросов Kusto для написания запросов журнала на языке Kusto. Между ними выполняется прямое сравнение, чтобы выделить ключевые различия и сходства, чтобы вы могли опираться на существующие знания.

Структура и концепции

В следующей таблице сравниваются основные понятия и структуры данных между журналами Splunk и Kusto.

Концепция Splunk Kusto Комментировать
единица развертывания cluster cluster Kusto разрешает произвольные межклассовые запросы. Сплунк не.
кэши данных контейнеры политики кэширования и хранения Определяет период и уровень кэширования данных. Этот параметр напрямую влияет на производительность запросов и стоимость развертывания.
логическая секция данных index База данных Обеспечивает логическое разделение данных. В обеих реализациях можно объединять и соединять разделы.
метаданные структурированного события Н/Д table Splunk не предоставляет языку поиска концепцию метаданных событий. Журналы Kusto имеют концепцию таблицы, которая содержит столбцы. Каждый экземпляр события сопоставляется со строкой.
запись event строка Отличается только терминология.
атрибут записи поле столбец В Kusto этот параметр предварительно определен как часть табличной структуры. В Splunk каждое событие имеет собственный набор полей.
types тип данных тип данных Типы данных Kusto являются более явными, так как они задаются для столбцов. Оба имеют возможность динамической работы с типами данных и примерно эквивалентным набором типов данных, включая поддержку JSON.
запрос и поиск search query Понятия, по сути, одинаковые между Kusto и Splunk.
Время приема событий системное время ingestion_time() В Splunk каждое событие получает системную метку времени индексирования события. В Kusto можно определить политику с именем ingestion_time, которая предоставляет системный столбец, на который можно ссылаться с помощью функции ingestion_time().

Функции

В следующей таблице указаны функции в Kusto, эквивалентные функциям Splunk.

Splunk Kusto Комментировать
strcat strcat() (1)
split split() (1)
if iff() (1)
tonumber todouble()
tolong()
toint()
(1)
upper
lower
toupper()
tolower()
(1)
replace replace_string(), replace_strings() или replace_regex() (1)
Хотя replace функции принимают три параметра в обоих продуктах, параметры различаются.
substr substring() (1)
Обратите внимание, что Splunk использует индексы, отсчитываемые с единицы, Kusto отмечает отсчитываемые от нуля индексы.
tolower tolower() (1)
toupper toupper() (1)
match matches regex (2)
regex matches regex В Splunk regex является оператором. В Kusto это реляционный оператор.
searchmatch == В Splunk searchmatch позволяет выполнять поиск конкретных строк.
random rand()
rand(n)
Функция Splunk возвращает число от нуля до 231-1. Kusto возвращает число в диапазоне от 0,0 до 1,0 или, если указан параметр, в диапазоне от 0 до n-1.
now now() (1)
relative_time totimespan() (1)
В Kusto эквивалент relative_time(datetimeVal, offsetVal) Splunk имеет значение datetimeVal + totimespan(offsetVal).
Например, search | eval n=relative_time(now(), "-1d@d") становится .... | extend myTime = now() - totimespan("1d")

(1) В Splunk функция вызывается с помощью eval оператора . В Kusto он используется как часть extend или project.
(2) В Splunk функция вызывается с помощью eval оператора . В Kusto его можно использовать с оператором where .

Операторы

В следующих разделах приведены примеры использования различных операторов в Splunk и Kusto.

Примечание

В следующих примерах поле rule Splunk сопоставляется с таблицей в Kusto, а метка времени Splunk по умолчанию — со столбцом Logs Analytics ingestion_time() .

В Splunk можно опустить ключевое слово search и указать строку без кавычек. В Kusto каждый запрос должен начинаться с find, строка без кавычек — это имя столбца, а значение подстановки должно быть строкой в кавычках.

Продукт Оператор Пример
Splunk search search Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" earliest=-24h
Kusto find find Session.Id=="c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time()> ago(24h)

Фильтр

Запросы к журналам Kusto начинаются с табличного результированного набора, в котором filter применяется. В Splunk фильтрация является операцией по умолчанию в текущем индексе. Оператор также можно использовать where в Splunk, но мы не рекомендуем его использовать.

Продукт Оператор Пример
Splunk search Event.Rule="330009.2" Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" _indextime>-24h
Kusto where Office_Hub_OHubBGTaskError
| where Session_Id == "c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time() > ago(24h)

Получение n событий или строк для проверки

Запросы к журналам Kusto также поддерживаются take в качестве псевдонима для limit. В Splunk, если результаты упорядочены, head возвращает первые n результатов. В Kusto limit не упорядочено, но возвращает первые найденные n строк.

Продукт Оператор Пример
Splunk head Event.Rule=330009.2
| head 100
Kusto limit Office_Hub_OHubBGTaskError
| limit 100

Получение первых n событий или строк, упорядоченных по полю или столбцу

Для нижних результатов в Splunk используйте tail. В Kusto можно указать направление упорядочения с помощью asc.

Продукт Оператор Пример
Splunk head Event.Rule="330009.2"
| sort Event.Sequence
| head 20
Kusto top Office_Hub_OHubBGTaskError
| top 20 by Event_Sequence

Расширение результирующий набор с помощью новых полей или столбцов

Splunk имеет функцию eval , но она не сравнима с оператором eval в Kusto. eval Оператор в Splunk и extend оператор в Kusto поддерживают только скалярные функции и арифметические операторы.

Продукт Оператор Пример
Splunk eval Event.Rule=330009.2
| eval state= if(Data.Exception = "0", "success", "error")
Kusto extend Office_Hub_OHubBGTaskError
| extend state = iff(Data_Exception == 0,"success" ,"error")

Переименовать

Kusto использует оператор для project-rename переименования поля. В операторе project-rename запрос может использовать все индексы, предварительно созданные для поля. У Splunk есть rename оператор, который делает то же самое.

Продукт Оператор Пример
Splunk rename Event.Rule=330009.2
| rename Date.Exception as execption
Kusto project-rename Office_Hub_OHubBGTaskError
| project-rename exception = Date_Exception

Форматирование результатов и проекции

Splunk использует команду , table чтобы выбрать столбцы для включения в результаты. У Kusto есть project оператор, который делает то же самое и многое другое.

Продукт Оператор Пример
Splunk table Event.Rule=330009.2
| table rule, state
Kusto project Office_Hub_OHubBGTaskError
| project exception, state

Splunk использует команду , field - чтобы выбрать столбцы, которые следует исключить из результатов. Kusto имеет project-away оператор, который делает то же самое.

Продукт Оператор Пример
Splunk fields - Event.Rule=330009.2
| fields - quota, hightest_seller
Kusto project-away Office_Hub_OHubBGTaskError
| project-away exception, state

Агрегирование

См. список доступных функций агрегатов summarize .

Оператор Splunk Пример Splunk Оператор Kusto Пример Kusto
stats search (Rule=120502.*)
| stats count by OSEnv, Audience
summarize Office_Hub_OHubBGTaskError
| summarize count() by App_Platform, Release_Audience
evenstats ...
| stats count_i by time, category
| eventstats sum(count_i) AS count_total by _time_
join T2
| join kind=inner (T1) on _time
| project _time, category, count_i, count_total

Join

join В Splunk имеет существенные ограничения. Вложенный запрос имеет ограничение в 10 000 результатов (задается в файле конфигурации развертывания), и доступно ограниченное количество вариантов соединения.

Продукт Оператор Пример
Splunk join Event.Rule=120103* | stats by Client.Id, Data.Alias
| join Client.Id max=0 [search earliest=-24h Event.Rule="150310.0" Data.Hresult=-2147221040]
Kusto join cluster("OAriaPPT").database("Office PowerPoint").Office_PowerPoint_PPT_Exceptions
| where Data_Hresult== -2147221040
| join kind = inner (Office_System_SystemHealthMetadata
| summarize by Client_Id, Data_Alias)on Client_Id

Сортировка

В Splunk для сортировки по возрастанию необходимо использовать reverse оператор . Kusto также поддерживает определение места для вставки значений NULL в начале или в конце.

Продукт Оператор Пример
Splunk sort Event.Rule=120103
| sort Data.Hresult
| reverse
Kusto order by Office_Hub_OHubBGTaskError
| order by Data_Hresult, desc

Развертывание нескольких значений

Оператор развертывания с несколькими значениями аналогичен как в Splunk, так и в Kusto.

Продукт Оператор Пример
Splunk mvexpand mvexpand solutions
Kusto mv-expand mv-expand solutions

Аспекты результатов, интересные поля

В разделе Azure Monitor на портале Azure предоставляется только первый столбец. Все столбцы доступны через API.

Продукт Оператор Пример
Splunk fields Event.Rule=330009.2
| fields App.Version, App.Platform
Kusto facets Office_Excel_BI_PivotTableCreate
| facet by App_Branch, App_Version

Дедупликация

В Kusto можно использовать для summarize arg_min() изменения порядка выбора записи.

Продукт Оператор Пример
Splunk dedup Event.Rule=330009.2
| dedup device_id sortby -batterylife
Kusto summarize arg_max() Office_Excel_BI_PivotTableCreate
| summarize arg_max(batterylife, *) by device_id