View a markdown version of this page

parse - CloudWatch Registros da Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

parse

Use parse para extrair dados de um campo de registro e criar campos extraídos que você possa processar em sua consulta. O parse comando suporta quatro modos: expressões globais, expressões regulares, logfmt e CSV.

Se fieldName for omitido, @message será usado por padrão. Você pode analisar a partir de qualquer campo nomeado especificando o nome do campo como o primeiro argumento.

Se um evento de log não corresponder ao padrão especificado, você ainda o verá nos resultados, mas sem os campos extraídos.

Modo global

Use curingas (*) como espaços reservados para valores que você deseja extrair e atribua-os aos campos nomeados com. as

Sintaxe

parse fieldName "pattern" as alias1, alias2

O número de * curingas deve ser igual ao número de aliases.

Exemplos

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álise encadeada

Extraia um campo e, em seguida, analise ainda mais o campo extraído.

parse @message "url=*" as url | parse url "/api/*/users/*" as apiVersion, userId | display apiVersion, userId

Modo Regex

Use uma expressão regular com grupos de captura nomeados para extrair campos. Para obter informações sobre a sintaxe das expressões regulares, consulte Sintaxe de expressões regulares (regex) compatíveis.

Sintaxe

parse fieldName /regex/

Use grupos de captura nomeados (?<name>...) para definir os campos extraídos.

Exemplos

Use grupos de captura nomeados para extrair campos

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

Use um grupo de captura nomeado para extrair o ENI de um log de fluxo de VPC

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

Multi-match modo

Use o modo de várias correspondências para extrair todas as correspondências de uma expressão regular de um campo, produzindo várias linhas por evento de log. Adicione a palavra-chave multi após o padrão regex.

Sintaxe

parse fieldName /regex/ multi

Exemplos

Extraia todos os endereços IP de uma linha de registro (correspondência múltipla)

parse @message /(\d+\.\d+\.\d+\.\d+)/ as ip_addr multi | stats count(*) by ip_addr

Modo Logfmt

Use parse logfmt para analisar linhas de log formatadas em logfmt em pares de valores-chave. Logfmt é um formato de registro estruturado em que cada linha contém pares separados por espaçokey=value.

Sintaxe

parse fieldName logfmt as alias

O resultado é um mapa que você acessa com notação de pontos (por exemplo,lf.level,lf.msg).

Exemplos

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

Use parse csv para analisar linhas de CSV-formatted registro em campos estruturados. Cada valor separado por vírgula é atribuído ao alias correspondente.

Sintaxe

parse fieldName csv as alias1, alias2, alias3

Exemplos

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

Extração de campo JSON

Use json field=fieldName para extração JSON em cadeia explícita de um campo de objeto analisado anteriormente. Isso permite que você extraia chaves aninhadas de um campo estruturado sem analisar novamente a mensagem bruta.

Sintaxe

json field=fieldName "key.subkey" as alias

Exemplos

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