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
parsefieldName"pattern" asalias1,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
parsefieldName/regex/
Use grupos de captura nomeados (?< para definir os campos extraídos.name>...)
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
parsefieldName/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
parsefieldNamelogfmt asalias
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
parsefieldNamecsv asalias1,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= 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.fieldName
Sintaxe
json field=fieldName"key.subkey" asalias
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