Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переключайте службы с помощью раскрывающегося списка Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Эта статья предназначена для того, чтобы помочь пользователям, знакомым с Splunk, узнать язык запросов Kusto для записи запросов журналов с помощью Kusto. Прямые сравнения выполняются между двумя, чтобы выделить ключевые различия и сходство, чтобы вы могли опираться на существующие знания.
Структура и понятия
В следующей таблице сравниваются понятия и структуры данных между журналами Splunk и Kusto:
| Понятие | Splunk | Кусто | Комментарий |
|---|---|---|---|
| единица развертывания | кластер | кластер | Kusto позволяет выполнять произвольные запросы между кластерами. Splunk этого не делает. |
| кэши данных | buckets | кэширование и политики хранения | Управляет периодом и уровнем кэширования для данных. Этот параметр напрямую влияет на производительность запросов и стоимость развертывания. |
| логический раздел данных | index | база данных | Разрешает логическое разделение данных. Обе реализации позволяют объединениям и соединению между этими разделами. |
| структурированные метаданные событий | N/A | table | Splunk не предоставляет концепцию метаданных событий языку поиска. Журналы Kusto имеют концепцию таблицы, которая содержит столбцы. Каждый экземпляр события сопоставляется со строкой. |
| запись | событие | строка | Только изменение терминологии |
| свойство записи | поле | column | В Kusto этот параметр предопределен как часть структуры таблицы. В Splunk каждое событие имеет собственный набор полей. |
| Типы | тип данных | тип данных | Типы данных Kusto являются более явными, так как они задаются в столбцах. Оба имеют возможность динамически работать с типами данных и примерно эквивалентным набором типов данных, включая поддержку JSON. |
| запрос и поиск | поиск | query | Основные понятия, по сути, совпадают между Kusto и Splunk. |
| Время обработки событий | системное время | ingestion_time() |
В Splunk каждое событие получает системную метку времени индексирования события. В Kusto можно определить политику с именем ingestion_time, которая предоставляет системный столбец, на который можно ссылаться через функцию ingestion_time(). |
Functions
В следующей таблице указаны функции в Kusto, эквивалентные функциям Splunk.
| Splunk | Кусто | Комментарий |
|---|---|---|
strcat |
strcat() |
(1) |
split |
split() |
(1) |
if |
iff() |
(1) |
tonumber |
todouble()tolong()toint() |
(1) |
upperlower |
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, строка без кавычек — это имя столбца, а значение подстановки должно быть заключено в кавычки.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | search |
search Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" earliest=-24h |
| Кусто | find |
find Session.Id=="c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time()> ago(24h) |
Filter
Запросы журнала Kusto начинаются с табличного результирующего набора данных, в котором filter применяется. В Splunk фильтрация — это операция по умолчанию для текущего индекса. Также можно использовать оператор where в Splunk, но мы этого не рекомендуем.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | search |
Event.Rule="330009.2" Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" _indextime>-24h |
| Кусто | 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 строки, найденные.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | head |
Event.Rule=330009.2| head 100 |
| Кусто | limit |
Office_Hub_OHubBGTaskError| limit 100 |
Получите первые n событий или строк, упорядоченных по полю или столбцу
Для получения нижних результатов в Splunk, используйте tail. В Kusto можно указать направление упорядочивания с помощью asc.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | head |
Event.Rule="330009.2"| sort Event.Sequence| head 20 |
| Кусто | top |
Office_Hub_OHubBGTaskError| top 20 by Event_Sequence |
Расширение результирующего набора с новыми полями или столбцами
Splunk имеет функцию eval, но она не сопоставима с оператором eval в Kusto. Оператор eval в Splunk и оператор extend в Kusto поддерживают только скалярные функции и арифметические операторы.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | eval |
Event.Rule=330009.2| eval state= if(Data.Exception = "0", "success", "error") |
| Кусто | extend |
Office_Hub_OHubBGTaskError| extend state = iff(Data_Exception == 0,"success" ,"error") |
Rename
Kusto использует project-rename оператор для переименования поля. В операторе project-rename запрос может использовать все предварительно созданные индексы для поля. Splunk имеет rename оператор, который выполняет то же самое.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | rename |
Event.Rule=330009.2| rename Date.Exception as execption |
| Кусто | project-rename |
Office_Hub_OHubBGTaskError| project-rename exception = Date_Exception |
Форматирование результатов и проектирование
Splunk использует table команду для выбора столбцов, которые необходимо включить в результаты. Kusto имеет project оператор, который выполняет то же самое и многое другое.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | table |
Event.Rule=330009.2| table rule, state |
| Кусто | project |
Office_Hub_OHubBGTaskError| project exception, state |
Splunk использует fields - команду для выбора столбцов, которые следует исключить из результатов. Kusto имеет оператор project-away, который делает то же самое.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | fields - |
Event.Rule=330009.2| fields - quota, hightest_seller |
| Кусто | project-away |
Office_Hub_OHubBGTaskError| project-away exception, state |
Aggregation
См. список функций агрегирования для суммирования, которые доступны.
| Оператор 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 в Splunk имеет существенные ограничения. Вложенный запрос имеет ограничение в 10 000 результатов (задано в файле конфигурации развертывания), а доступно ограниченное количество вариантов соединения.
| Продукт | Operator | Example |
|---|---|---|
| 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] |
| Кусто | 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 |
Сортировать
По умолчанию задан порядок сортировки по возрастанию. Чтобы указать порядок убывания, добавьте знак минуса (-) перед именем поля. Kusto также поддерживает определение того, где следует поместить NULL, в начале или конце.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | sort |
Event.Rule=120103| sort -Data.Hresult |
| Кусто | order by |
Office_Hub_OHubBGTaskError| order by Data_Hresult, desc |
Раскрытие многозначных данных
Оператор развёртывания многозначных значений аналогичен в Splunk и Kusto.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | mvexpand |
mvexpand solutions |
| Кусто | mv-expand |
mv-expand solutions |
Аспекты результатов, интересные поля
В Log Analytics на портале Azure предоставляется только первый столбец. Все столбцы доступны через API.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | fields |
Event.Rule=330009.2| fields App.Version, App.Platform |
| Кусто | facets |
Office_Excel_BI_PivotTableCreate| facet by App_Branch, App_Version |
Дедупликация
В Kusto можно использовать summarize arg_min() для изменения порядка выбора записи.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | dedup |
Event.Rule=330009.2| dedup device_id sortby -batterylife |
| Кусто | summarize arg_max() |
Office_Excel_BI_PivotTableCreate| summarize arg_max(batterylife, *) by device_id |
Диаграмма времени
Kusto и Splunk используют timechart оператор для визуализации данных с течением времени. В Splunk он объединяет данные с заданными интервалами времени и может использоваться с различными статистическими функциями. В Kusto эквивалент достигается с помощью функций summarize и bin, за которым следует оператор временной диаграммы.
| Продукт | Operator | Example |
|---|---|---|
| Splunk | timechart |
index=StormEvents | where StartTime >= "2007-01-01" AND StartTime <= "2007-12-31" AND DamageCrops > 0 | bin span=7d StartTime | stats count as EventCount by StartTime | timechart span=7d count as EventCount |
| Кусто | timechart |
StormEvents | where StartTime between (datetime(2007-01-01) .. datetime(2007-12-31)) and DamageCrops > 0 | summarize EventCount = count() by bin(StartTime, 7d) | render timechart |
Связанный контент
- Ознакомьтесь с руководством по языку запросов Kusto.