Compartir a través de


Hoja de referencia rápida de Splunk a Kusto

Se aplica a: ✅Microsoft FabricAzure Data Explorer✅Azure MonitorMicrosoft Sentinel

Este artículo está diseñado para ayudar a los usuarios que están familiarizados con Splunk a aprender 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 conglomerado conglomerado Kusto permite consultas arbitrarias entre clústeres. Splunk no lo hace.
cachés de datos buckets 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 index base de datos Permite la separación lógica de los datos. Ambos implementaciones permiten operaciones de unión y concatenaciones entre estas particiones.
metadatos de eventos estructurados N/A table Splunk no expone el concepto de metadatos de evento al lenguaje de búsqueda. Los registros de Kusto tienen el concepto de una tabla, que tiene columnas. Cada instancia de evento se asigna a una fila.
registro evento fila Solo cambia la terminología.
atributo de registro campo column 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.
Tipos Datatype Datatype 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 buscar 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 del momento en que se indexó 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 que son 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 usa índices basados en uno. Kusto utiliza í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 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 operador where.

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, puede omitir la search palabra clave y especificar una cadena sin comilla. 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 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

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

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

Obtener n eventos o filas para 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 se ordena, pero devuelve las primeras n filas que se encuentran.

Producto Operator Example
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 Operator Example
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 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

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 Operator Example
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 qué columnas se van a incluir en los resultados. Kusto tiene un project operador que hace lo mismo y mucho más.

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

Splunk usa el fields - comando para seleccionar qué columnas excluir de los resultados. Kusto tiene un project-away operador que hace lo mismo.

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

Aggregation

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

Unirse

join en Splunk tiene limitaciones considerables. 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 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

El criterio de ordenación predeterminado es ascendente. Para especificar el orden descendente, agregue un signo menos (-) antes del nombre del campo. Kusto también admite la definición de dónde colocar valores NULL, ya sea al principio o al final.

Producto Operator Example
Splunk sort Event.Rule=120103
| sort -Data.Hresult
Kusto order by Office_Hub_OHubBGTaskError
| order by Data_Hresult, desc

Expansión de varios valores

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

Producto Operator Example
Splunk mvexpand mvexpand solutions
Kusto mv-expand mv-expand solutions

Facetas de resultados, 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 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

Desduplicar

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

Producto 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 tiempo

Kusto y Splunk usan el operador timechart para visualizar los datos con el tiempo. En Splunk, agrega datos a intervalos de tiempo especificados y se puede usar con diversas funciones estadísticas. En Kusto, el equivalente se logra mediante las funciones summarize y bin, seguido del operador de gráfico de líneas de tiempo.

Producto 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