Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Este artigo destina-se a ajudar os usuários que estão familiarizados com o Splunk a aprender a usar a Linguagem de Consulta Kusto para gravar consultas de log com Kusto. 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 logs do Splunk e do Kusto:
| Conceito | Splunk | Kusto | Comment |
|---|---|---|---|
| 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 cache dos dados. Essa configuração afeta diretamente o desempenho das consultas e o custo da implantação. |
| partição lógica de dados | indexar | banco de dados | Permite a separação lógica dos dados. Ambas as implementações permitem uniões e junção entre essas partições. |
| metadados de evento estruturados | N/A | tabela | 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 | evento | linha | A terminologia é alterada apenas. |
| atributo de registro | campo | column | No Kusto, essa configuração é predefinida como parte da estrutura da tabela. No Splunk, cada evento tem seu próprio conjunto de campos. |
| Tipos | Datatype | Datatype | 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 | busca | 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 do momento 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(). |
Functions
A tabela a seguir especifica funções no Kusto que são equivalentes às 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 as replace funções tenham três parâmetros em ambos os produtos, os parâmetros são diferentes. |
substr |
substring() |
(1) Observe também que o Splunk usa índices baseados em um. 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 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) Em 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 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 Splunk rule é mapeado para uma tabela no Kusto, e o carimbo de data/hora padrão do Splunk é mapeado para a coluna ingestion_time() do Logs Analytics.
Pesquisa
No Splunk, você pode omitir a keyword 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 com aspas.
| Product | 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 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 o recomendamos.
| Product | 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) |
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 que são encontradas.
| Product | Operator | Example |
|---|---|---|
| Splunk | head |
Event.Rule=330009.2| head 100 |
| Kusto | limit |
Office_Hub_OHubBGTaskError| limit 100 |
Obter os primeiros n eventos ou linhas ordenadas por um campo ou coluna
Para os resultados mais baixos, no Splunk, você usa tail. No Kusto, você pode especificar a direção da ordenação usando asc.
| Product | Operator | Example |
|---|---|---|
| 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
Splunk tem uma função eval, mas não é comparável ao operador eval em Kusto. Tanto o eval operador no Splunk quanto o extend operador no Kusto dão suporte apenas a funções escalares e operadores aritméticos.
| Product | 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") |
Rename
O Kusto usa o project-rename operador para renomear um campo.
project-rename No operador, uma consulta pode tirar proveito de todos os índices predefinidos para um campo. O Splunk tem um rename operador que faz o mesmo.
| Product | 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
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.
| Product | 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 colunas excluir dos resultados. Kusto tem um operador project-away que faz o mesmo.
| Product | 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 de resumo 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 |
Participar
join no Splunk tem limitações significativas. 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á disponível.
| Product | 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 |
Classificar
A ordem de classificação padrão é crescente. Para especificar a ordem decrescente, adicione um sinal de subtração (-) antes do nome do campo. O Kusto também dá suporte à definição de onde colocar nulos, no início ou no final.
| Product | Operator | Example |
|---|---|---|
| Splunk | sort |
Event.Rule=120103| sort -Data.Hresult |
| Kusto | order by |
Office_Hub_OHubBGTaskError| order by Data_Hresult, desc |
Expansão de vários valores
O operador de expansão de vários valores é semelhante em Splunk e Kusto.
| Product | Operator | Example |
|---|---|---|
| Splunk | mvexpand |
mvexpand solutions |
| Kusto | mv-expand |
mv-expand solutions |
Facetas de resultados, 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.
| Product | 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 |
Eliminação de duplicação
No Kusto, você pode usar summarize arg_min() para reverter a ordem da qual o registro é escolhido.
| Product | 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 |
Gráfico de tempo
Kusto e Splunk usam o timechart operador para visualizar dados ao longo do tempo. No Splunk, ele agrega dados em intervalos de tempo especificados e pode ser usado com várias funções estatísticas. No Kusto, o equivalente é obtido usando as funções summarize e bin, seguidas pelo operador gráfico de linha de tempo.
| Product | 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
- Percorra um tutorial sobre a Linguagem de Consulta Kusto.