parse - Amazon CloudWatch Logs

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

Use parse para extraer datos de un campo de registro y crear un campo extraído que pueda procesar en su consulta. parse admite tanto el modo glob con caracteres comodín como expresiones regulares. Para obtener información acerca de la sintaxis de la expresión regular, consulte Sintaxis de expresiones regulares (regex) compatibles.

Puede analizar los campos JSON anidados con una expresión regular.

Ejemplo: análisis de un campo JSON anidado

El fragmento de código muestra cómo analizar un evento de registro JSON que se ha aplanado durante la incorporación.

{'fieldsA': 'logs', 'fieldsB': [{'fA': 'a1'}, {'fA': 'a2'}]}

El fragmento de código muestra una consulta con una expresión regular que extrae los valores de fieldsA y fieldsB con el objetivo de crear los campos extraídos fld y array.

parse @message "'fieldsA': '*', 'fieldsB': ['*']" as fld, array

Grupos de captura con nombres

Cuando se usa parse con una expresión regular, puede usar grupos de captura con nombre para capturar un patrón en un campo. La sintaxis es parse @message (?<Name>pattern)

El siguiente ejemplo usa un grupo de captura en un registro de flujo de la VPC para extraer el ENI en un campo denominado NetworkInterface.

parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message
nota

Los eventos de registro JSON se aplanan durante la ingesta. Actualmente, no se admite el análisis de campos JSON anidados con una expresión glob. Solo puede analizar eventos de registro JSON que no incluyan más de 200 campos de eventos de registro. Cuando analice los campos JSON anidados, debe dar formato a la expresión regular de la consulta para que coincida con el formato de su evento de registro JSON.

Ejemplos del comando para analizar

Utilice una expresión glob para extraer los campos @user@method y @latency del campo de registro @message y devolver la latencia promedio para cada combinación única de @method y @user.

parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user

Utilice una expresión regular para extraer los campos @user2@method2 y @latency2 del campo de registro @message y devolver la latencia promedio para cada combinación única de @method2 y @user2.

parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2

Extrae los campos loggingTimeloggingType y loggingMessage, filtra hasta los eventos de registro que contienen cadenas ERROR o INFO y, a continuación, muestra solo los campos loggingMessage y loggingType para los eventos que contienen una cadena ERROR.

FIELDS @message | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage | FILTER loggingType IN ["ERROR", "INFO"] | DISPLAY loggingMessage, loggingType = "ERROR" as isError