Sintaxis de Búsqueda de Registros
Resumen
Un filtro de consulta se compone de términos y operadores.
Hay dos tipos de términos:
Un término único es una sola palabra como test o hello.
Una secuencia es un grupo de palabras rodeadas por comillas dobles, como "hello dolly".
Para combinar múltiples términos en una consulta compleja, puedes usar cualquiera de los siguientes operadores booleanos sensibles a mayúsculas y minúsculas:
| | |
|---|
| Operador | Descripción | Ejemplo |
AND | Intersección: ambos términos están en los eventos seleccionados (si no se agrega nada, se toma AND por defecto) | autenticación AND fallo |
OR | Unión: cualquiera de los términos está contenido en los eventos seleccionados | autenticación OR contraseña |
- | Exclusión: el siguiente término NO está en el evento (aplica a cada búsqueda de texto sin procesar individual) | autenticación AND -contraseña |
Búsqueda de texto completo
La función de búsqueda de texto completo solo está disponible en Log Management y funciona en consultas de monitor, dashboard y notebook La sintaxis de búsqueda de texto completo no se puede utilizar para definir filtros de índice, filtros de archivo, filtros de canalización, filtros de rehidratación, o en Live Tail.
Utiliza la sintaxis *:search_term para realizar una búsqueda de texto completo en todos los atributos de registro, incluyendo el mensaje de registro.
Ejemplo de término único
| Sintaxis de búsqueda | Tipo de búsqueda | Descripción |
|---|
*:hello | Texto completo | Busca en todos los atributos de registro la cadena exacta hello. |
hello | Texto libre | Busca solo en los atributos message, @title, @error.message y @error.stack la cadena exacta hello. |
Ejemplo de término de búsqueda con comodín
| Sintaxis de búsqueda | Tipo de búsqueda | Descripción |
|---|
*:hello | Texto completo | Busca en todos los atributos de registro la cadena exacta hello. |
*:hello* | Texto completo | Busca en todos los atributos de registro cadenas que comienzan con hello. Por ejemplo, hello_world. |
Varios términos con ejemplo de coincidencia exacta
| Sintaxis de búsqueda | Tipo de búsqueda | Descripción |
|---|
*:"hello world" | Texto completo | Busca en todos los atributos de registro la cadena exacta hello world |
hello world | Texto libre | Busca solo en el mensaje del registro las palabras hello y world. Por ejemplo hello beautiful world. |
Escapar caracteres especiales y espacios
Los siguientes caracteres se consideran especiales y requieren ser escapados con el carácter \: = - ! && || > >= < <= ( ) { } [ ] " * ? : \ #, y espacios.
/ no se considera un carácter especial y no necesita ser escapado.@ no se puede usar en consultas de búsqueda dentro de Logs Explorer porque está reservado para Attribute Search.
No se puede buscar caracteres especiales en un mensaje de registro. Se pueden buscar caracteres especiales cuando están dentro de un atributo.
Para buscar caracteres especiales, conviértelos en un atributo con el Grok Parser, y busca registros que contengan ese atributo.
Attribute Search
Para buscar en un atributo específico, agrega @ para especificar que estás buscando en un atributo.
Por ejemplo, si el nombre de tu atributo es url y deseas filtrar por el valor de url, ingresa:
Reserved Attributes
Reserved Attributes como host, source, status, service, trace_id y message no requieren el prefijo @. Puedes buscar estos atributos directamente:
service:web-app
status:error
host:i-1234567890abcdef0
Notas:
No es necesario definir una faceta para buscar en atributos y etiquetas.
Las búsquedas de atributos son sensibles a mayúsculas y minúsculas. Utiliza búsqueda de texto completo para obtener resultados que no distingan entre mayúsculas y minúsculas. Otra opción es usar el filtro lowercase con tu analizador Grok mientras analizas para obtener resultados que no distingan entre mayúsculas y minúsculas durante la búsqueda.
Buscar un valor de atributo que contenga caracteres especiales requiere escapar o usar comillas dobles.
- Por ejemplo, para un atributo
my_attribute con el valor hello:world, busca usando: @my_attribute:hello\:world o @my_attribute:"hello:world". - Para coincidir con un solo carácter especial o espacio, utiliza el Wildcard
?. Por ejemplo, para un atributo my_attribute con el valor hello world, busca usando: @my_attribute:hello?world.
Ejemplos:
| Consulta de búsqueda | Descripción |
|---|
@http.url_details.path:"/api/v1/test" | Busca todos los registros que coincidan con /api/v1/test en el atributo http.url_details.path. |
@http.url:/api\-v1/* | Busca todos los registros que contengan un valor en el atributo http.url que comience con /api-v1/ |
@http.status_code:[200 TO 299] @http.url_details.path:/api\-v1/* | Busca todos los registros que contengan un valor http.status_code entre 200 y 299, y que contengan un valor en el atributo http.url_details.path que comience con /api-v1/ |
-@http.status_code:* | Busca todos los registros que no contengan el atributo http.status_code |
Busca utilizando notación CIDR
El Enrutamiento Inter-Dominio Sin Clase (CIDR) es una notación que permite a los usuarios definir un rango de direcciones IP (también llamados bloques CIDR) de manera concisa. CIDR se utiliza comúnmente para definir una red (como una VPC) o una subred (como una subred pública/privada dentro de una VPC).
Los usuarios pueden utilizar la función CIDR() para consultar atributos en los registros utilizando notación CIDR. La función CIDR() necesita recibir un atributo de registro como parámetro para filtrar, seguido de uno o múltiples bloques CIDR.
Ejemplos
CIDR(@network.client.ip,13.0.0.0/8) coincide y filtra registros que tienen direcciones IP en el campo network.client.ip que caen bajo el bloque CIDR 13.0.0.0/8.CIDR(@network.ip.list,13.0.0.0/8, 15.0.0.0/8) coincide y filtra registros que tienen cualquier dirección IP en un atributo de arreglo network.ip.list que caen bajo los bloques CIDR 13.0.0.0/8 o 15.0.0.0/8.source:pan.firewall evt.name:reject CIDR(@network.client.ip, 13.0.0.0/8) coincidiría y filtraría eventos de rechazo del firewall de Palo Alto que se originan en la subred 13.0.0.0/8source:vpc NOT(CIDR(@network.client.ip, 13.0.0.0/8)) CIDR(@network.destination.ip, 15.0.0.0/8) mostrará todos los registros de VPC que no se originan en la subred 13.0.0.0/8 pero están designados para la subred de destino 15.0.0.0/8 porque quieres analizar el tráfico de red en tus entornos entre subredes
La función CIDR() admite tanto notaciones CIDR IPv4 como IPv6 y funciona en Log Explorer, Live Tail, widgets de registro en Dashboards, monitores de registro y configuraciones de registro.
Wildcard
Puede utilizar Wildcards con búsqueda de texto libre. Sin embargo, solo busca términos en el mensaje del registro, el texto en la columna content en Log Explorer. Consulta Búsqueda de texto completo si quieres buscar un valor en un atributo de registro.
Multi-character Wildcard
Para realizar una búsqueda con Wildcard de múltiples caracteres en el mensaje del registro (la columna content en Log Explorer), usa el símbolo * de la siguiente manera:
service:web* coincide con cada mensaje de registro que tiene un servicio que comienza con web.web* coincide con todos los mensajes de registro que comienzan con web.*web coincide con todos los mensajes de registro que terminan con web.
Nota: Los Wildcards solo funcionan como Wildcards fuera de las comillas dobles. Por ejemplo, "*test*" coincide con un registro que tiene la cadena *test* en su mensaje. *test* coincide con un registro que tiene la cadena test en cualquier parte de su mensaje.
Las búsquedas Wildcard funcionan dentro de etiquetas y atributos (con o sin facetas) con esta sintaxis. Esta consulta devuelve todos los servicios que terminan con la cadena mongo:
Las búsquedas Wildcard también se pueden usar para buscar en el texto plano de un registro que no es parte de un atributo de registro. Por ejemplo, esta consulta devuelve todos los registros con contenido (mensaje) que contienen la cadena NETWORK:
Sin embargo, este término de búsqueda no devuelve registros que contienen la cadena NETWORK si está en un atributo de registro y no es parte del mensaje del registro.
Buscar Wildcard
Al buscar un valor de atributo o etiqueta que contenga caracteres especiales o que requiera escape o comillas dobles, use el Wildcard ? para coincidir con un solo carácter especial o espacio. Por ejemplo, para buscar un atributo my_attribute con el valor hello world: @my_attribute:hello?world.
Valores numéricos
Para buscar en un atributo numérico, primero agrégalo como faceta. Luego puede usar operadores numéricos (<,>, <= o >=) para realizar una búsqueda en facetas numéricas.
Por ejemplo, recupere todos los registros que tienen un tiempo de respuesta superior a 100 ms con:
Puede buscar un atributo numérico dentro de un rango específico. Por ejemplo, recupere todos sus errores 4xx con:
@http.status_code:[400 TO 499]
Sus registros heredan etiquetas de hosts y integrations que las generan. Pueden ser utilizadas en la búsqueda y también como facetas:
test está buscando la cadena “test”.env:(prod OR test) coincide con todos los registros que tienen la etiqueta env:prod o la etiqueta env:test(env:prod AND -version:beta) coincide con todos los registros que contienen la etiqueta env:prod y que no contienen la etiqueta version:beta
Si sus etiquetas no siguen las mejores prácticas de etiquetas y no utilizan la sintaxis key:value, use esta consulta de búsqueda:
Arreglos
En el siguiente ejemplo, al hacer clic en el valor Peter en la faceta, se devuelven todos los registros que contienen un atributo users.names, cuyo valor es Peter o un arreglo que contiene Peter:
Nota: La búsqueda también se puede utilizar en atributos de arreglo no facetados utilizando una sintaxis equivalente.
En el siguiente ejemplo, los registros de CloudWatch para Windows contienen un arreglo de objetos JSON bajo @Event.EventData.Data. No puede crear una faceta en un arreglo de objetos JSON, pero puede buscar utilizando la siguiente sintaxis.
@Event.EventData.Data.Name:ObjectServer coincide con todos los registros con la clave Name y el valor ObjectServer.
Búsqueda de arreglo anidado
Para buscar un campo anidado en un atributo de arreglo, utiliza el prefijo @ con la ruta completa del atributo. El Explorador de registros coincide con cualquier elemento en el arreglo:
@network.ip.attributes.ip:2a02\:1810* coincide con todos los registros donde al menos un elemento en el arreglo network.ip.attributes tiene un campo ip que comienza con 2a02:1810.
Para buscar registros donde un arreglo contiene múltiples valores específicos, enumere los valores entre paréntesis:
@user_perms:(4 6) coincide con todos los registros donde el arreglo user_perms contiene tanto 4 como 6.
Para buscar registros donde un arreglo contiene cualquier valor dentro de un rango, use una consulta de rango:
@user_perms:[2 TO 6] coincide con todos los registros donde el arreglo user_perms contiene al menos un valor entre 2 y 6.
Campos calculados
Los campos calculados funcionan como atributos de registro y pueden ser utilizados para búsqueda, agregación, visualización y definición de otros campos calculados. Utilice el prefijo # para referenciar los nombres de los campos calculados.
Saved Views
Saved Views contienen su consulta de búsqueda, columnas, horizonte temporal y faceta.
Lectura adicional
Más enlaces, artículos y documentación útiles: