Памятка по преобразованию из 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 |
См. также
- Ознакомьтесь с руководством по язык запросов Kusto.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по