Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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) |
upperlower |
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() .
Search
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 |
Contenido relacionado
- Realice un tutorial sobre el Lenguaje de Consulta Kusto.