Consulta de registro de Splunk en Azure MonitorSplunk to Azure Monitor log query

Este artículo sirve de ayuda para que los usuarios que están familiarizados con Splunk obtengan información sobre el lenguaje de consulta de Kusto para escribir consultas de registro en Azure Monitor.This article is intended to assist users who are familiar with Splunk to learn the Kusto query language to write log queries in Azure Monitor. Se realizan comparaciones directas entre ambos para conocer las principales diferencias y similitudes donde puede aprovechar los conocimientos que posee.Direct comparisons are made between the two to understand key differences and also similarities where you can leverage your existing knowledge.

Estructura y conceptosStructure and concepts

En la tabla siguiente se comparan los conceptos y las estructuras de datos en los registros de Splunk y Azure Monitor.The following table compares concepts and data structures between Splunk and Azure Monitor logs.

ConceptoConcept SplunkSplunk Azure MonitorAzure Monitor ComentarioComment
Unidad de implementaciónDeployment unit clustercluster clustercluster Azure Monitor permite consultas arbitrarias entre clústeres.Azure Monitor allows arbitrary cross cluster queries. Splunk no lo permite.Splunk does not.
Memorias caché de datosData caches cubosbuckets Directivas de retención y almacenamiento en cachéCaching and retention policies Controla el período y el nivel de almacenamiento en caché de los datos.Controls the period and caching level for the data. Este valor afecta directamente al rendimiento de las consultas y al costo de la implementación.This setting directly impacts the performance of queries and cost of the deployment.
Partición lógica de los datosLogical partition of data índiceindex databasedatabase Permite la separación lógica de los datos.Allows logical separation of the data. Ambas implementaciones permiten uniones y la combinación de estas particiones.Both implementations allow unions and joining across these partitions.
Metadatos de eventos estructuradosStructured event metadata N/DN/A tabletable Splunk no tiene el concepto que se expone al lenguaje de búsqueda de metadatos de eventos.Splunk does not have the concept exposed to the search language of event metadata. Los registros de Azure Monitor siguen el concepto de tabla, con columnas.Azure Monitor logs has the concept of a table, which has columns. Cada instancia de un evento se asigna a una fila.Each event instance is mapped to a row.
Registro de datosData record eventevent filarow Solo cambio de terminología.Terminology change only.
Atributo de registro de datosData record attribute campofield columnacolumn En Azure Monitor, se predefine como parte de la estructura de la tabla.In Azure Monitor, this is predefined as part of the table structure. En Splunk, cada evento tiene su propio conjunto de campos.In Splunk, each event has its own set of fields.
TiposTypes tipo de datosdatatype tipo de datosdatatype Los tipos de datos de Azure Monitor son más explícitos, ya que se establecen en las columnas.Azure Monitor datatypes are more explicit as they are set on the columns. Ambos tienen la capacidad de trabajar dinámicamente con tipos de datos y con un conjunto más o menos equivalente de tipos de datos, lo que incluye la compatibilidad con JSON.Both have the ability to work dynamically with data types and roughly equivalent set of datatypes including JSON support.
Búsqueda y consultaQuery and search búsquedasearch Queryquery Los conceptos son esencialmente los mismos en Azure Monitor y Splunk.Concepts are essentially the same between both Azure Monitor and Splunk.
Tiempo de ingesta de eventosEvent ingestion time Hora del sistemaSystem Time ingestion_time()ingestion_time() En Splunk, cada evento obtiene una marca de tiempo del sistema del tiempo en que el evento se indexó.In Splunk, each event gets a system timestamp of the time that the event was indexed. En Azure Monitor, se 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().In Azure Monitor, you can define a policy called ingestion_time that exposes a system column that can be referenced through the ingestion_time() function.

FunctionsFunctions

En la tabla siguiente se especifican las funciones de Azure Monitor que son equivalentes a funciones de Splunk.The following table specifies functions in Azure Monitor that are equivalent to Splunk functions.

SplunkSplunk Azure MonitorAzure Monitor ComentarioComment
strcatstrcat strcat()strcat() (1)(1)
splitsplit split()split() (1)(1)
ifif iff()iff() (1)(1)
tonumbertonumber todouble()todouble()
tolong()tolong()
toint()toint()
(1)(1)
upperupper
lowerlower
toupper()toupper()
tolower()tolower()
(1)(1)
replacereplace replace()replace() (1)(1)
Tenga también en cuenta que aunque replace() usa tres parámetros en ambos productos, los parámetros son diferentes.Also note that while replace() takes three parameters in both products, the parameters are different.
substrsubstr substring()substring() (1)(1)
Tenga en cuenta también que Splunk utiliza índices con base uno.Also note that Splunk uses one-based indices. Azure Monitor usa índices con base cero.Azure Monitor notes zero-based indices.
tolowertolower tolower()tolower() (1)(1)
touppertoupper toupper()toupper() (1)(1)
matchmatch matches regexmatches regex (2)(2)
regexregex matches regexmatches regex En Splunk, regex es un operador.In Splunk, regex is an operator. En Azure Monitor, es un operador relacional.In Azure Monitor, it's a relational operator.
searchmatchsearchmatch == En Splunk, searchmatch permite buscar la cadena exacta.In Splunk, searchmatch allows searching for the exact string.
randomrandom rand()rand()
rand(n)rand(n)
La función de Splunk devuelve un número entre cero y 231-1.Splunk's function returns a number from zero to 231-1. Azure Monitor devuelve un número entre 0,0 y 1,0, o si se ha proporcionado un parámetro, entre 0 y n-1.Azure Monitor' returns a number between 0.0 and 1.0, or if a parameter provided, between 0 and n-1.
ahoranow now()now() (1)(1)
relative_timerelative_time totimespan()totimespan() (1)(1)
En Azure Monitor, el equivalente de Splunk de relative_time (datetimeVal, offsetVal) es datetimeVal + totimespan(offsetVal).In Azure Monitor, Splunk's equivalent of relative_time(datetimeVal, offsetVal) is datetimeVal + totimespan(offsetVal).
Por ejemplo, search | eval n=relative_time(now(), "-1d@d") se convierte en ... | extend myTime = now() - totimespan("1d").For example, search | eval n=relative_time(now(), "-1d@d") becomes ... | extend myTime = now() - totimespan("1d").

(1) En Splunk, se invoca la función con el operador eval.(1) In Splunk, the function is invoked with the eval operator. En Azure Monitor, se usa como parte de extend o project.In Azure Monitor, it is used as part of extend or project.
(2) En Splunk, se invoca la función con el operador eval.(2) In Splunk, the function is invoked with the eval operator. En Azure Monitor, se puede usar con el operador where.In Azure Monitor, it can be used with the where operator.

OperadoresOperators

En las secciones siguientes se proporcionan ejemplos del uso de distintos operadores entre Splunk y Azure Monitor.The following sections give examples of using different operators between Splunk and Azure Monitor.

Nota

Para el ejemplo siguiente, el campo de Splunk rule se asigna a una tabla de Azure Monitor y la marca de tiempo predeterminada de Splunk se asigna a la columna ingestion_time() de Logs Analytics.For the purpose of the following example, the Splunk field rule maps to a table in Azure Monitor, and Splunk's default timestamp maps to the Logs Analytics ingestion_time() column.

En Splunk se puede omitir la palabra clave search y especifique una cadena sin comillas.In Splunk, you can omit the search keyword and specify an unquoted string. En Azure Monitor todas las consultas deben comenzar por find, una cadena sin comillas es un nombre de columna y el valor de búsqueda debe ser una cadena entre comillas.In Azure Monitor you must start each query with find, an unquoted string is a column name, and the lookup value must be a quoted string.

SplunkSplunk searchsearch search Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" earliest=-24h
Azure MonitorAzure Monitor findfind find Session.Id=="c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time()> ago(24h)

FilterFilter

Las consultas de registro de Azure Monitor comienzan en un conjunto de resultados tabulares donde se establece el filtro.Azure Monitor log queries start from a tabular result set where the filter. En Splunk, el filtrado es la operación predeterminada del índice actual.In Splunk, filtering is the default operation on the current index. En Splunk también se puede usar el operador where, pero no es aconsejable.You can also use where operator in Splunk, but it is not recommended.

SplunkSplunk searchsearch Event.Rule="330009.2" Session.Id="c8894ffd-e684-43c9-9125-42adc25cd3fc" _indextime>-24h
Azure MonitorAzure Monitor wherewhere Office_Hub_OHubBGTaskError
| where Session_Id == "c8894ffd-e684-43c9-9125-42adc25cd3fc" and ingestion_time() > ago(24h)

Obtención de n eventos o filas para su inspecciónGetting n events/rows for inspection

Las consultas de registro de Azure Monitor también admiten take como alias para limit.Azure Monitor log queries also support take as an alias to limit. En Splunk, si los resultados están ordenados, head devolverá los primeros n resultados.In Splunk, if the results are ordered, head will return the first n results. En Azure Monitor, el límite no está ordenado, pero devuelve las n primeras filas que se encuentran.In Azure Monitor, limit is not ordered but returns the first n rows that are found.

SplunkSplunk headhead Event.Rule=330009.2
| head 100
Azure MonitorAzure Monitor limitlimit Office_Hub_OHubBGTaskError
| limit 100

Obtención de los n primeros eventos o filas ordenados por una columna o campoGetting the first n events/rows ordered by a field/column

Para los resultados inferiores, en Splunk se usa tail.For bottom results, in Splunk you use tail. En Azure Monitor se puede especificar la dirección de ordenación con asc.In Azure Monitor you can specify the ordering direction with asc.

SplunkSplunk headhead Event.Rule="330009.2"
| sort Event.Sequence
| head 20
Azure MonitorAzure Monitor toptop Office_Hub_OHubBGTaskError
| top 20 by Event_Sequence

Extensión del conjunto de resultados con nuevos campos o columnasExtending the result set with new fields/columns

Splunk también tiene una función eval, que no se debe comparar con el operador eval.Splunk also has an eval function, which is not to be comparable with the eval operator. Tanto el operador eval de Splunk como el operador extend de Azure Monitor solo admiten operadores aritméticos y funciones escalares.Both the eval operator in Splunk and the extend operator in Azure Monitor only support scalar functions and arithmetic operators.

SplunkSplunk evaleval Event.Rule=330009.2
| eval state= if(Data.Exception = "0", "success", "error")
Azure MonitorAzure Monitor extendextend Office_Hub_OHubBGTaskError
| extend state = iif(Data_Exception == 0,"success" ,"error")

Cambiar nombreRename

Azure Monitor usa el operador project-rename para cambiar el nombre de un campo.Azure Monitor uses the project-rename operator to rename a field. project-rename permite a la consulta aprovechar los índices pregenerados para un campo.project-rename allows the query to take advantage of any indexes pre-built for a field. Splunk tiene el operador rename para hacer lo mismo.Splunk has a rename operator to do the same.

SplunkSplunk renamerename Event.Rule=330009.2
| rename Date.Exception as execption
Azure MonitorAzure Monitor project-renameproject-rename Office_Hub_OHubBGTaskError
| project-rename exception = Date_Exception

Formato de resultados o proyecciónFormat results/Projection

Splunk no parece tener un operador similar a project-away.Splunk does not seem to have an operator similar to project-away. Puede usar la interfaz de usuario para filtrar campos y eliminarlos.You can use the UI to filter away fields.

SplunkSplunk tabletable Event.Rule=330009.2
| table rule, state
Azure MonitorAzure Monitor projectproject
project-awayproject-away
Office_Hub_OHubBGTaskError
| project exception, state

AgregaciónAggregation

Consulte Agregaciones en consultas de registros de Azure Monitor para conocer las distintas funciones de agregación.See the Aggregations in Azure Monitor log queries for the different aggregation functions.

SplunkSplunk statsstats search (Rule=120502.*)
| stats count by OSEnv, Audience
Azure MonitorAzure Monitor summarizesummarize Office_Hub_OHubBGTaskError
| summarize count() by App_Platform, Release_Audience

JoinJoin

En Splunk, la combinación tiene limitaciones importantes.Join in Splunk has significant limitations. La subconsulta tiene un límite de 10 000 resultados (definido en el archivo de configuración de implementación), y existe un número limitado de tipos de combinación.The subquery has a limit of 10000 results (set in the deployment configuration file), and there a limited number of join flavors.

SplunkSplunk joinjoin Event.Rule=120103* | stats by Client.Id, Data.Alias | join Client.Id max=0 [search earliest=-24h Event.Rule="150310.0" Data.Hresult=-2147221040]
Azure MonitorAzure Monitor joinjoin 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

SortSort

En Splunk, para ordenar de forma ascendente es preciso usar el operador reverse.In Splunk, to sort in ascending order you must use the reverse operator. Azure Monitor también permite definir dónde se colocan valores NULL, al principio o al final.Azure Monitor also supports defining where to put nulls, at the beginning or at the end.

SplunkSplunk sortsort Event.Rule=120103
| sort Data.Hresult
| reverse
Azure MonitorAzure Monitor order byorder by Office_Hub_OHubBGTaskError
| order by Data_Hresult, desc

Expansión de varios valoresMultivalue expand

Se trata de un operador similar en Splunk y Azure Monitor.This is a similar operator in both Splunk and Azure Monitor.

SplunkSplunk mvexpandmvexpand mvexpand foo
Azure MonitorAzure Monitor mvexpandmvexpand mvexpand foo

Facetas de resultados, campos interesantesResults facets, interesting fields

En Log Analytics en Azure Portal, solo se expone la primera columna.In Log Analytics in the Azure portal, only the first column is exposed. Todas las columnas están disponibles a través de la API.All columns are available through the API.

SplunkSplunk fieldsfields Event.Rule=330009.2
| fields App.Version, App.Platform
Azure MonitorAzure Monitor facetsfacets Office_Excel_BI_PivotTableCreate
| facet by App_Branch, App_Version

DesduplicaciónDe-duplicate

Puede usar summarize arg_min() en su lugar para invertir el orden en que se elige el registro.You can use summarize arg_min() instead to reverse the order of which record gets chosen.

SplunkSplunk dedupdedup Event.Rule=330009.2
| dedup device_id sortby -batterylife
Azure MonitorAzure Monitor summarize arg_max()summarize arg_max() Office_Excel_BI_PivotTableCreate
| summarize arg_max(batterylife, *) by device_id

Pasos siguientesNext steps