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 JSON campos anidados con una expresión regular.
Ejemplo: analizar un campo anidado JSON
El fragmento de código muestra cómo analizar un evento de JSON registro que se ha aplanado durante la ingestió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).
En el siguiente ejemplo, se utiliza un grupo de captura de un registro de VPC flujo para extraerlo en un campo denominado. ENI NetworkInterface
parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message
nota
JSONLos eventos del registro se aplanan durante la ingestión. Actualmente, no se admite el análisis de JSON campos anidados con una expresión global. Solo puede analizar los eventos de JSON registro que no incluyan más de 200 campos de eventos de registro. Al analizar JSON los campos anidados, debe formatear la expresión regular de la consulta para que coincida con el formato del evento de JSON registro.
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 loggingTime
, loggingType
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