Folha de referências do Splunk para o Kusto

Este artigo tem a finalidade de ajudar usuários que estão familiarizados com o Splunk a aprender a Linguagem de Consulta Kusto para escrever consultas de log com o Azure Data Explorer. Comparações diretas são feitas entre os dois para realçar as principais diferenças e semelhanças, para que você possa se basear no seu conhecimento existente.

Estrutura e conceitos

A tabela a seguir compara conceitos e estruturas de dados entre os logs do Splunk e do Kusto:

Conceito Splunk Kusto Comentário
unidade de implantação cluster cluster O Kusto permite consultas arbitrárias entre clusters. Splunk não.
caches de dados buckets políticas de cache e retenção Controla o período e o nível de armazenamento em cache dos dados. Essa configuração afeta diretamente o desempenho das consultas e o custo da implantação.
partição lógica de dados índice Banco de Dados Permite a separação lógica dos dados. Ambas as implementações permitem uniões e junções entre essas partições.
metadados de eventos estruturados N/D table O Splunk não expõe o conceito de metadados de evento para a linguagem de pesquisa. Os logs do Kusto têm o conceito de uma tabela, que tem colunas. Cada instância de evento é mapeada para uma linha.
registro event linha Mudança de terminologia apenas.
atributo record field coluna No Kusto, essa configuração é predefinida como parte da estrutura da tabela. No Splunk, cada evento tem seu próprio conjunto de campos.
tipos tipo de dados tipo de dados Os tipos de dados kusto são mais explícitos porque são definidos nas colunas. Ambos têm a capacidade de trabalhar dinamicamente com tipos de dados e um conjunto aproximadamente equivalente de tipos de dados, incluindo suporte a JSON.
consulta e pesquisa pequisa Consulta Os conceitos essencialmente são os mesmos entre Kusto e Splunk.
tempo de ingestão de eventos hora do sistema ingestion_time() No Splunk, cada evento obtém um carimbo de data/hora do sistema da hora em que o evento foi indexado. No Kusto, você pode definir uma política chamada ingestion_time que expõe uma coluna do sistema que pode ser referenciada por meio da função ingestion_time( ).

Funções

A tabela a seguir especifica funções no Kusto equivalentes às funções splunk.

Splunk Kusto Comentário
strcat strcat() (1)
split split() (1)
if iff() (1)
tonumber todouble()
tolong()
toint()
(1)
upper
lower
toupper()
tolower()
(1)
replace replace_string(), replace_strings() ou replace_regex() (1)
Embora replace as funções usem três parâmetros em ambos os produtos, os parâmetros são diferentes.
substr substring() (1)
Observe também que Splunk usa índices com base em um. O Kusto observa índices baseados em zero.
tolower tolower() (1)
toupper toupper() (1)
match matches regex (2)
regex matches regex No Splunk, regex é um operador. No Kusto, é um operador relacional.
searchmatch == No Splunk, searchmatch permite pesquisar a cadeia de caracteres exata.
random rand()
rand(n)
A função do Splunk retorna um número entre zero e 231-1. O do Kusto retorna um número entre 0,0 e 1,0 ou se um parâmetro for fornecido, entre 0 e n-1.
now now() (1)
relative_time totimespan() (1)
No Kusto, o equivalente de Splunk de relative_time(datetimeVal, offsetVal) é datetimeVal + totimespan(offsetVal).
Por exemplo, search | eval n=relative_time(now(), "-1d@d") torna-se ... | extend myTime = now() - totimespan("1d").

(1) No Splunk, a função é invocada usando o eval operador . No Kusto, ele é usado como parte de extend ou project.
(2) No Splunk, a função é invocada usando o eval operador . No Kusto, ele pode ser usado com o where operador .

Operadores

As seções a seguir fornecem exemplos de como usar operadores diferentes no Splunk e no Kusto.

Observação

Nos exemplos a seguir, o campo rule Splunk é mapeado para uma tabela no Kusto e o carimbo de data/hora padrão do Splunk é mapeado para a coluna Logs Analytics ingestion_time() .

No Splunk, você pode omitir a palavra-chave search e especificar uma cadeia de caracteres sem aspas. No Kusto, você deve iniciar cada consulta com find, uma cadeia de caracteres sem aspas é um nome de coluna e o valor de pesquisa deve ser uma cadeia de caracteres entre aspas.

Produto Operador Exemplo
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)

Filtrar

As consultas de log do Kusto começam a partir de um conjunto de resultados tabular no qual filter é aplicado. No Splunk, a filtragem é a operação padrão no índice atual. Você também pode usar o where operador no Splunk, mas não recomendamos isso.

Produto Operador Exemplo
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)

Obter n eventos ou linhas para inspeção

As consultas de log do Kusto também dão suporte take como um alias para limit. No Splunk, se os resultados forem ordenados, head retornará os primeiros n resultados. No Kusto, limit não é ordenado, mas retorna as primeiras n linhas encontradas.

Produto Operador Exemplo
Splunk head Event.Rule=330009.2
| head 100
Kusto limit Office_Hub_OHubBGTaskError
| limit 100

Obter os primeiros n eventos ou linhas ordenados por um campo ou coluna

Para os resultados inferiores, no Splunk, você usa tail. No Kusto, você pode especificar a direção de ordenação usando asc.

Produto Operador Exemplo
Splunk head Event.Rule="330009.2"
| sort Event.Sequence
| head 20
Kusto top Office_Hub_OHubBGTaskError
| top 20 by Event_Sequence

Estender o conjunto de resultados com novos campos ou colunas

O Splunk tem uma eval função, mas não é comparável ao eval operador no Kusto. eval O operador no Splunk e o extend operador no Kusto dão suporte apenas a funções escalares e operadores aritméticos.

Produto Operador Exemplo
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")

Renomear

O Kusto usa o project-rename operador para renomear um campo. No operador , uma consulta pode aproveitar todos os project-rename índices predefinidos para um campo. O Splunk tem um rename operador que faz o mesmo.

Produto Operador Exemplo
Splunk rename Event.Rule=330009.2
| rename Date.Exception as execption
Kusto project-rename Office_Hub_OHubBGTaskError
| project-rename exception = Date_Exception

Formatar resultados e projeção

O Splunk usa o table comando para selecionar quais colunas incluir nos resultados. O Kusto tem um project operador que faz o mesmo e muito mais.

Produto Operador Exemplo
Splunk table Event.Rule=330009.2
| table rule, state
Kusto project Office_Hub_OHubBGTaskError
| project exception, state

O Splunk usa o field - comando para selecionar quais colunas excluir dos resultados. O Kusto tem um project-away operador que faz o mesmo.

Produto Operador Exemplo
Splunk fields - Event.Rule=330009.2
| fields - quota, hightest_seller
Kusto project-away Office_Hub_OHubBGTaskError
| project-away exception, state

Agregação

Consulte a lista de funções summarize aggregations que estão disponíveis.

Operador Splunk Exemplo de Splunk Operador Kusto Exemplo de 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 no Splunk tem limitações substanciais. A subconsulta tem um limite de 10.000 resultados (definido no arquivo de configuração de implantação) e um número limitado de tipos de junção estão disponíveis.

Produto Operador Exemplo
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

Classificar

No Splunk, para classificar em ordem crescente, você deve usar o reverse operador . O Kusto também dá suporte à definição de onde colocar nulos, seja no início ou no final.

Produto Operador Exemplo
Splunk sort Event.Rule=120103
| sort Data.Hresult
| reverse
Kusto order by Office_Hub_OHubBGTaskError
| order by Data_Hresult, desc

Expansão de múltiplos valores

O operador de expansão multivalue é semelhante no Splunk e no Kusto.

Produto Operador Exemplo
Splunk mvexpand mvexpand solutions
Kusto mv-expand mv-expand solutions

Facetas de resultado, campos interessantes

No Log Analytics, no portal do Azure, apenas a primeira coluna é exposta. Todas as colunas estão disponíveis por meio da API.

Produto Operador Exemplo
Splunk fields Event.Rule=330009.2
| fields App.Version, App.Platform
Kusto facets Office_Excel_BI_PivotTableCreate
| facet by App_Branch, App_Version

Eliminação de duplicação

No Kusto, você pode usar summarize arg_min() para reverter a ordem de qual registro é escolhido.

Produto Operador Exemplo
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