Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Este artigo destina-se a ajudar utilizadores familiarizados com o Splunk a aprender a Linguagem de Consultas Kusto para escrever consultas de registo com Kusto. São feitas comparações diretas entre os dois para destacar as principais diferenças e semelhanças, para que possas construir sobre o teu conhecimento existente.
Estrutura e conceitos
A tabela seguinte compara conceitos e estruturas de dados entre os logs Splunk e Kusto:
| Concept | Splunk | Kusto | Comment |
|---|---|---|---|
| Unidade de Destacamento | cluster | cluster | O Kusto permite consultas arbitrárias entre clusters. O Splunk não o faz. |
| Caches de dados | buckets | Políticas de cache e retenção | Controla o período e o nível de cache dos dados. Esta definição afeta diretamente o desempenho das consultas e o custo da implementação. |
| Partição lógica dos dados | indexar | base de dados | Permite a separação lógica dos dados. Ambas as implementações permitem uniões e junções através destas partições. |
| Metadados de eventos estruturados | N/A | tabela | O Splunk não expõe o conceito de metadados de eventos à linguagem de pesquisa. Os registos Kusto têm o conceito de tabela, que tem colunas. Cada instância de evento é mapeada para uma linha. |
| registo | evento | linha | Apenas a mudança de terminologia. |
| Atributo de registo | campo | coluna | No Kusto, este cenário é pré-definido como parte da estrutura da tabela. No 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 | pesquisa | consulta | Os conceitos são essencialmente os mesmos entre Kusto e Splunk. |
| Tempo de Ingestão do Evento | Tempo do Sistema | ingestion_time() |
No Splunk, cada evento recebe um carimbo temporal do sistema do momento em que o evento foi indexado. No Kusto, pode definir uma política chamada 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 em Kusto que são equivalentes a funções Splunk.
| Splunk | Kusto | Comment |
|---|---|---|
strcat |
strcat() |
(1) |
split |
split() |
(1) |
if |
iff() |
(1) |
tonumber |
todouble()tolong()toint() |
(1) |
upperlower |
toupper()tolower() |
(1) |
replace |
replace_string(), replace_strings() ou replace_regex() |
(1) Embora replace as funções tenham três parâmetros em ambos os produtos, os parâmetros são diferentes. |
substr |
substring() |
(1) Note-se também que o Splunk utiliza índices baseados num só. Kusto refere índices baseados em zero. |
tolower |
tolower() |
(1) |
toupper |
toupper() |
(1) |
match |
matches regex |
(2) |
regex |
matches regex |
Em Splunk, regex é um operador. Em 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 e2 31-1. 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) Em Kusto, o equivalente de relative_time(datetimeVal, offsetVal) Splunk é datetimeVal + totimespan(offsetVal).Por exemplo, search | eval n=relative_time(now(), "-1d@d") torna-se .... | extend myTime = now() - totimespan("1d") |
(1) Em Splunk, a função é invocada usando o eval operador. Em Kusto, é usado como parte de extend ou project.
(2) Em Splunk, a função é invocada usando o eval operador. No Kusto, pode ser usado com o where operador.
Operadores
As secções seguintes apresentam exemplos de como usar diferentes operadores em Splunk e Kusto.
Observação
Nos exemplos seguintes, o campo Splunk rule mapeia para uma tabela no Kusto, e o carimbo temporal padrão do Splunk mapeia para a coluna Logs Analytics ingestion_time().
Pesquisa
No Splunk, pode omitir a search palavra-chave e especificar uma cadeia sem aspas. No Kusto, deve começar cada consulta com find, uma cadeia sem aspas é um nome de coluna, e o valor de pesquisa deve ser uma cadeia entre aspas.
| Produto | Operator | Example |
|---|---|---|
| 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) |
Filter
As consultas de registros Kusto começam com um conjunto de resultados tabulares ao qual filter é aplicado. No Splunk, filtrar é a operação padrão no índice atual. Também pode usar o where operador em Splunk, mas não o recomendamos.
| Produto | Operator | Example |
|---|---|---|
| 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) |
Obtenha n eventos ou linhas para inspeção
As consultas de registo Kusto também suportam take como alias para limit. Em Splunk, se os resultados forem ordenados, head retorna os primeiros n resultados. No Kusto, limit não está ordenado, mas devolve as primeiras n entradas encontradas.
| Produto | Operator | Example |
|---|---|---|
| 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 mais baixos, no Splunk, usa tail. No Kusto, pode especificar a direção de ordenação usando asc.
| Produto | Operator | Example |
|---|---|---|
| Splunk | head |
Event.Rule="330009.2"| sort Event.Sequence| head 20 |
| Kusto | top |
Office_Hub_OHubBGTaskError| top 20 by Event_Sequence |
Estenda o conjunto de resultados com novos campos ou colunas
Splunk tem uma função eval, mas não é comparável a um operador eval em Kusto. Tanto o eval operador em Splunk como o extend operador em Kusto suportam apenas funções escalares e operadores aritméticos.
| Produto | Operator | Example |
|---|---|---|
| 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 usa o project-rename operador para renomear um campo. No project-rename operador, uma consulta pode tirar partido de quaisquer índices pré-construídos para um campo. O Splunk tem um rename operador que faz o mesmo.
| Produto | Operator | Example |
|---|---|---|
| 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 de dados
O Splunk usa o table comando para selecionar quais as colunas a incluir nos resultados. A Kusto tem um project operador que faz o mesmo e mais.
| Produto | Operator | Example |
|---|---|---|
| Splunk | table |
Event.Rule=330009.2| table rule, state |
| Kusto | project |
Office_Hub_OHubBGTaskError| project exception, state |
O Splunk usa o fields - comando para selecionar quais as colunas a excluir dos resultados. Kusto tem um project-away operador que faz o mesmo.
| Produto | Operator | Example |
|---|---|---|
| Splunk | fields - |
Event.Rule=330009.2| fields - quota, hightest_seller |
| Kusto | project-away |
Office_Hub_OHubBGTaskError| project-away exception, state |
Aggregation
Consulte a lista de funções de agregação resumida disponíveis.
| Operador Splunk | Exemplo 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 |
Aderir
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 um número limitado de tipos de junção está disponível.
| Produto | 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] |
| 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
A ordem de classificação padrão é crescente. Para especificar a ordem decrescente, adicione um sinal menos (-) antes do nome do campo. O Kusto também suporta definir onde colocar os nulls, seja no início ou no final.
| Produto | Operator | Example |
|---|---|---|
| Splunk | sort |
Event.Rule=120103| sort -Data.Hresult |
| Kusto | order by |
Office_Hub_OHubBGTaskError| order by Data_Hresult, desc |
Multivalor expandir
O operador de expansão multivalor é semelhante tanto no Splunk como no Kusto.
| Produto | Operator | Example |
|---|---|---|
| Splunk | mvexpand |
mvexpand solutions |
| Kusto | mv-expand |
mv-expand solutions |
Facetas do resultado, campos interessantes
No Log Analytics do portal Azure, apenas a primeira coluna está exposta. Todas as colunas estão disponíveis através da API.
| Produto | Operator | Example |
|---|---|---|
| Splunk | fields |
Event.Rule=330009.2| fields App.Version, App.Platform |
| Kusto | facets |
Office_Excel_BI_PivotTableCreate| facet by App_Branch, App_Version |
Deduplicação
No Kusto, podes usar summarize arg_min() para inverter a ordem em que o registo é escolhido.
| Produto | Operator | Example |
|---|---|---|
| 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 |
Tabela temporal
Kusto e Splunk usam ambos o timechart operador para visualizar dados ao longo do tempo. No Splunk, agrega dados ao longo de intervalos de tempo especificados e pode ser usado com várias funções estatísticas. No Kusto, o equivalente é alcançado usando as funções summarize e bin, seguidas do operador timechart de renderização.
| Produto | 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 |
| Kusto | 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 |
Conteúdo relacionado
- Percorre um tutorial sobre a Linguagem de Consultas Kusto.