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()
.
Pesquisar
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 |
Conteúdo relacionado
- Confira um tutorial sobre o Linguagem de Consulta Kusto.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de