Hoja de referencia rápida de Splunk a Kusto

Este artículo sirve de ayuda para que los usuarios que están familiarizados con Splunk obtengan información sobre el lenguaje de consulta Kusto para escribir consultas de registro con Kusto. Las comparaciones directas se realizan entre los dos para resaltar las diferencias clave y las similitudes, por lo que puede basarse en sus conocimientos existentes.

Estructura y conceptos

En la tabla siguiente se comparan los conceptos y las estructuras de datos entre los registros de Splunk y Kusto:

Concepto Splunk Kusto Comentario
unidad de implementación cluster cluster Kusto permite consultas arbitrarias entre clústeres. Splunk no.
cachés de datos cubos Almacenamiento en caché y directivas de retención Controla el período y el nivel de almacenamiento en caché de los datos. Esta configuración afecta directamente al rendimiento de las consultas y al costo de la implementación.
partición lógica de datos índice database Permite la separación lógica de los datos. Ambas implementaciones permiten uniones y la combinación de estas particiones.
metadatos de eventos estructurados N/D table Splunk no expone el concepto de metadatos de eventos al lenguaje de búsqueda. Los registros de Kusto tienen el concepto de una tabla, que tiene columnas. Cada instancia de un evento se asigna a una fila.
registro event fila Solo cambio de terminología.
atributo record campo columna En Kusto, esta configuración está predefinida como parte de la estructura de la tabla. En Splunk, cada evento tiene su propio conjunto de campos.
types tipo de datos tipo de datos Los tipos de datos de Kusto son más explícitos porque se establecen en las columnas. Ambos tienen la capacidad de trabajar dinámicamente con tipos de datos y aproximadamente un conjunto equivalente de tipos de datos, incluida la compatibilidad con JSON.
consulta y búsqueda búsqueda Query Los conceptos básicamente son los mismos entre Kusto y Splunk.
tiempo de ingesta de eventos hora del sistema ingestion_time() En Splunk, cada evento obtiene una marca de tiempo del sistema de la hora en que se indizó el evento. En Kusto, puede definir una directiva denominada ingestion_time que expone una columna del sistema a la que se puede hacer referencia a través de la función ingestion_time().

Functions

En la tabla siguiente se especifican las funciones de Kusto equivalentes a las funciones de Splunk.

Splunk Kusto Comentario
strcat strcat() (1)
split split() (1)
if iff() (1)
tonumber todouble()
tolong()
toint()
(1)
upper
lower
toupper()
tolower()
(1)
replace replace_string(), replace_strings() o replace_regex() (1)
Aunque replace las funciones toman tres parámetros en ambos productos, los parámetros son diferentes.
substr substring() (1)
Tenga en cuenta también que Splunk utiliza índices con base uno. Kusto señala índices de base cero.
tolower tolower() (1)
toupper toupper() (1)
match matches regex (2)
regex matches regex En Splunk, regex es un operador. En Kusto, es un operador relacional.
searchmatch == En Splunk, searchmatch permite buscar la cadena exacta.
random rand()
rand(n)
La función de Splunk devuelve un número entre cero y 231-1. Kusto devuelve un número comprendido entre 0,0 y 1,0, o si se proporciona un parámetro, entre 0 y n-1.
now now() (1)
relative_time totimespan() (1)
En Kusto, el equivalente de Splunk de relative_time(datetimeVal, offsetVal) es datetimeVal + totimespan(offsetVal).
Por ejemplo, search | eval n=relative_time(now(), "-1d@d") se convierte en ... | extend myTime = now() - totimespan("1d").

(1) En Splunk, la función se invoca mediante el eval operador . En Kusto, se usa como parte de extend o project.
(2) En Splunk, la función se invoca mediante el eval operador . En Kusto, se puede usar con el where operador .

Operadores

En las secciones siguientes se proporcionan ejemplos de cómo usar diferentes operadores en Splunk y Kusto.

Nota

En los ejemplos siguientes, el campo rule Splunk se asigna a una tabla de Kusto y la marca de tiempo predeterminada de Splunk se asigna a la columna Logs Analytics ingestion_time() .

En Splunk se puede omitir la palabra clave search y especifique una cadena sin comillas. En Kusto, debe iniciar cada consulta con find, una cadena sin comillas es un nombre de columna y el valor de búsqueda debe ser una cadena entre comillas.

Producto Operador Ejemplo
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

Las consultas de registro de Kusto comienzan desde un conjunto de resultados tabulares en el que filter se aplica. En Splunk, el filtrado es la operación predeterminada del índice actual. También puede usar el where operador en Splunk, pero no se recomienda.

Producto Operador Ejemplo
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)

Obtener n eventos o filas para la inspección

Las consultas de registro de Kusto también admiten take como alias para limit. En Splunk, si se ordenan los resultados, head devuelve los primeros n resultados. En Kusto, limit no está ordenado, pero devuelve las primeras n filas que se encuentran.

Producto Operador Ejemplo
Splunk head Event.Rule=330009.2
| head 100
Kusto limit Office_Hub_OHubBGTaskError
| limit 100

Obtener los primeros n eventos o filas ordenados por un campo o columna

Para los resultados inferiores, en Splunk, se usa tail. En Kusto, puede especificar la dirección de ordenación mediante asc.

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

Extender el conjunto de resultados con nuevos campos o columnas

Splunk tiene una eval función, pero no es comparable al eval operador de Kusto. Tanto el eval operador de Splunk como el extend operador de Kusto solo admiten funciones escalares y operadores aritméticos.

Producto Operador Ejemplo
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")

Cambiar nombre

Kusto usa el operador para cambiar el project-rename nombre de un campo. En el project-rename operador , una consulta puede aprovechar los índices creados previamente para un campo. Splunk tiene un rename operador que hace lo mismo.

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

Dar formato a los resultados y la proyección

Splunk usa el table comando para seleccionar las columnas que se van a incluir en los resultados. Kusto tiene un project operador que hace lo mismo y mucho más.

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

Splunk usa el field - comando para seleccionar las columnas que se van a excluir de los resultados. Kusto tiene un project-away operador que hace lo mismo.

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

Agregación

Consulte la lista de funciones de agregación de resumen que están disponibles.

Operador Splunk Ejemplo de Splunk Operador Kusto Ejemplo 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 en Splunk tiene limitaciones sustanciales. La subconsulta tiene un límite de 10 000 resultados (establecido en el archivo de configuración de implementación) y hay disponible un número limitado de tipos de combinación.

Producto Operador Ejemplo
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

Sort

En Splunk, para ordenar en orden ascendente, debe usar el reverse operador . Kusto también admite la definición de dónde colocar valores NULL, ya sea al principio o al final.

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

Expansión de varios valores

El operador expand de varios valores es similar en Splunk y Kusto.

Producto Operador Ejemplo
Splunk mvexpand mvexpand solutions
Kusto mv-expand mv-expand solutions

Facetas de resultado, campos interesantes

En Log Analytics en Azure Portal, solo se expone la primera columna. Todas las columnas están disponibles a través de la API.

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

Desduplicar

En Kusto, puede usar summarize arg_min() para invertir el orden del que se elige el registro.

Producto Operador Ejemplo
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