Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
parse
Utilízalo parse para extraer datos de un campo de registro y crear campos extraídos que puedas procesar en tu consulta. El parse comando admite cuatro modos: expresiones globales, expresiones regulares, logfmt y CSV.
Si fieldName se omite, @message se usa de forma predeterminada. Puede analizar cualquier campo con nombre especificando el nombre del campo como primer argumento.
Si un evento de registro no coincide con el patrón especificado, seguirá apareciendo en los resultados, pero sin los campos extraídos.
Modo global
Usa comodines (*) como marcadores de posición para los valores que quieras extraer y asígnalos con ellos a los campos con nombre. as
Sintaxis
parsefieldName"pattern" asalias1,alias2
El número de * comodines debe ser igual al número de alias.
Ejemplos
parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user
parse @logStream "*/*/*/*" as env, service, instance, shard | stats count(*) by env, service
Análisis encadenado
Extraiga un campo y, a continuación, analice más a fondo el campo extraído.
parse @message "url=*" as url | parse url "/api/*/users/*" as apiVersion, userId | display apiVersion, userId
Modo Regex
Utilice una expresión regular con grupos de captura con nombre para extraer los campos. Para obtener información acerca de la sintaxis de la expresión regular, consulte Sintaxis de expresiones regulares (regex) compatibles.
Sintaxis
parsefieldName/regex/
Utilice grupos de captura con nombre (?< para definir los campos extraídos.name>...)
Ejemplos
Utilice grupos de captura con nombre para extraer los campos
parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2
Usa un grupo de captura con nombre para extraer el ENI de un registro de flujo de la VPC
parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message
Multi-match mode
Utilice el modo de coincidencia múltiple para extraer todas las coincidencias de una expresión regular de un campo, lo que generará varias filas por evento de registro. Agregue la palabra clave multi después del patrón de expresiones regulares.
Sintaxis
parsefieldName/regex/ multi
Ejemplos
Extraiga todas las direcciones IP de una línea de registro (coincidencia múltiple)
parse @message /(\d+\.\d+\.\d+\.\d+)/ as ip_addr multi | stats count(*) by ip_addr
Modo Logfmt
Se usa parse logfmt para analizar líneas de registro con formato logfmt en pares clave-valor. Logfmt es un formato de registro estructurado en el que cada línea contiene pares separados por espacios. key=value
Sintaxis
parsefieldNamelogfmt asalias
El resultado es un mapa al que se accede con notación de puntos (por ejemplo,). lf.level lf.msg
Ejemplos
parse @message logfmt as lf | filter lf.level = "error" | display lf.msg, lf.duration
parse @message logfmt as lf | stats count(*) by lf.host
Modo CSV
Se usa parse csv para analizar líneas de CSV-formatted registro y convertirlas en campos estructurados. Cada valor separado por comas se asigna al alias correspondiente.
Sintaxis
parsefieldNamecsv asalias1,alias2,alias3
Ejemplos
parse @message csv as timestamp, level, message | filter level = "ERROR" | display timestamp, message
parse @message csv as host, method, path, status, duration | stats avg(duration) by method
Extracción de campos JSON
Se usa json field= para la extracción explícita de JSON encadenados de un campo de objeto previamente analizado. Esto te permite extraer claves anidadas de un campo estructurado sin tener que volver a analizar el mensaje sin procesar.fieldName
Sintaxis
json field=fieldName"key.subkey" asalias
Ejemplos
parse @message /(?<payload>\{.*\})/ as payload | json field=payload "user.name" as username | display username
json field=requestContext "identity.sourceIp" as caller_ip | stats count(*) by caller_ip