Truques e dicas do Splunk para Kusto
Este artigo destina-se a ajudar os utilizadores que estão familiarizados com o Splunk a saber que Linguagem de Pesquisa Kusto escrever consultas de registo com o Kusto. As comparações diretas são feitas entre as duas para realçar as principais diferenças e semelhanças, para que possa basear-se nos seus conhecimentos existentes.
Estrutura e conceitos
A tabela seguinte compara conceitos e estruturas de dados entre os registos do Splunk e do Kusto:
Conceito | Splunk | Kusto | Comentário |
---|---|---|---|
unidade de implementação | cluster | cluster | O Kusto permite consultas arbitrárias entre clusters. Splunk não. |
caches de dados | registos | políticas de colocação em cache e retenção | Controla o período e o nível de colocação em cache dos dados. Esta definição afeta diretamente o desempenho das consultas e o custo da implementação. |
partição lógica de dados | índice | base de dados | Permite a separação lógica dos dados. Ambas as implementações permitem uniões e associação a estas partições. |
metadados de eventos estruturados | N/D | table | O Splunk não expõe o conceito de metadados de eventos à linguagem de pesquisa. Os registos do Kusto têm o conceito de uma tabela, que tem colunas. Cada instância de evento é mapeada para uma linha. |
gravar | evento | row | Apenas alteração de terminologia. |
atributo record | campo | coluna | No Kusto, esta definição é predefinida como parte da estrutura da tabela. Em Splunk, cada evento tem o seu próprio conjunto de campos. |
tipos | tipo de dados | tipo de dados | Os tipos de dados kusto são mais explícitos porque estã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 JSON. |
consulta e pesquisa | pesquisar | query | Os conceitos são essencialmente os mesmos entre o Kusto e o Splunk. |
hora 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, pode definir uma política denominada ingestion_time que expõe uma coluna do sistema que pode ser referenciada através da função ingestion_time( ). |
Funções
A tabela seguinte especifica funções no Kusto que são 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() ou replace_strings() replace_regex() |
(1) Embora replace as funções tomem três parâmetros em ambos os produtos, os parâmetros são diferentes. |
substr |
substring() |
(1) Tenha também em atenção que o Splunk utiliza índices baseados em um. O Kusto anota índices baseados em zero. |
tolower |
tolower() |
(1) |
toupper |
toupper() |
(1) |
match |
matches regex |
(2) |
regex |
matches regex |
Em Splunk, regex é um operador. No Kusto, é um operador relacional. |
searchmatch |
== | No Splunk, searchmatch permite procurar a cadeia exata. |
random |
rand() rand(n) |
A função de Splunk devolve um número entre zero e 231-1. O Kusto devolve um número entre 0,0 e 1,0 ou se for fornecido um parâmetro, entre 0 e n-1. |
now |
now() |
(1) |
relative_time |
totimespan() |
(1) No Kusto, o equivalente relative_time(datetimeVal, offsetVal) de Splunk é 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 com o eval
operador . No Kusto, é utilizado como parte de extend
ou project
.
(2) No Splunk, a função é invocada com o eval
operador . No Kusto, pode ser utilizado com o where
operador .
Operadores
As secções seguintes dão exemplos de como utilizar diferentes operadores no Splunk e no Kusto.
Nota
Nos exemplos seguintes, o campo rule
Splunk mapeia para uma tabela no Kusto e o carimbo de data/hora predefinido do Splunk mapeia para a coluna Logs Analytics ingestion_time()
.
Pesquisar
No Splunk, pode omitir a search
palavra-chave e especificar uma cadeia não listada. No Kusto, tem de iniciar cada consulta com find
, uma cadeia não listada é um nome de coluna e o valor de pesquisa tem de ser uma cadeia de carateres com 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) |
Filtro
As consultas de registo do Kusto começam a partir de um conjunto de resultados tabular no qual filter
é aplicado. No Splunk, a filtragem é a operação predefinida no índice atual. Também pode utilizar o where
operador no Splunk, mas não o recomendamos.
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 registo do Kusto também suportam take
como alias para limit
. Em Splunk, se os resultados forem ordenados, head
devolve os primeiros n resultados. No Kusto, limit
não é encomendado, mas devolve 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 obter os resultados mais baixos, em Splunk, utilize tail
. No Kusto, pode especificar a direção da ordenação com 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 |
Expandir o conjunto de resultados com novos campos ou colunas
O Splunk tem uma função eval
, mas não é comparável ao eval
operador no Kusto. Tanto o eval
operador em Splunk como o extend
operador no Kusto suportam apenas 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") |
Mudar o Nome
O Kusto utiliza o operador para mudar o project-rename
nome de um campo. project-rename
No operador, uma consulta pode tirar partido de todos os índices pré-criados 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 utiliza o table
comando para selecionar as colunas a 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 utiliza o field -
comando para selecionar as colunas a 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
Veja a lista de funções de agregação resumidas que estão disponíveis.
Operador Splunk | Exemplo de Splunk | Operador Kusto | Exemplo do 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 |
Participar
join
em Splunk tem limitações substanciais. A subconsulta tem um limite de 10 000 resultados (definido no ficheiro de configuração de implementação) e está disponível um número limitado de tipos de associação.
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 |
Ordenar
Em Splunk, para ordenar por ordem ascendente, tem de utilizar o reverse
operador . O Kusto também suporta a 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 valores múltiplos
O operador de expansão de vários valores é semelhante tanto no Splunk como no Kusto.
Produto | Operador | Exemplo |
---|---|---|
Splunk | mvexpand |
mvexpand solutions |
Kusto | mv-expand |
mv-expand solutions |
Facetas de resultados, campos interessantes
No Log Analytics na portal do Azure, apenas a primeira coluna é exposta. Todas as colunas estão disponíveis através 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 duplicados
No Kusto, pode utilizar summarize arg_min()
para inverter a ordem em que o registo é 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
- Percorra um tutorial sobre o Linguagem de Pesquisa Kusto.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários