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 log e criar um campo extraído que pode ser processado na consulta. parse é compatível tanto com o modo glob usando curingas quanto com as expressões regulares. Para obter informações sobre a sintaxe das expressões regulares, consulte Sintaxe de expressões regulares (regex) compatíveis.

Você pode analisar campos JSON aninhados com uma expressão regular.

Exemplo: análise de um campo JSON aninhado

O trecho de código mostra como analisar um evento de logs JSON que foi nivelado durante a ingestão.

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

O trecho de código mostra uma consulta com uma expressão regular que extrai os valores de fieldsA e fieldsB para criar os campos extraídos fld e array.

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

Grupos de captura nomeados

Quando você usa parse com uma expressão regular, pode usar grupos de captura nomeados para capturar um padrão para um campo. A sintaxe é parse @message (?<Name>pattern)

O exemplo a seguir usa um grupo de captura em um log de fluxo da VPC para extrair o ENI para um campo denominado NetworkInterface.

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

Os eventos de logs JSON são nivelados durante a ingestão. Atualmente, não é possível analisar campos JSON aninhados com uma expressão global. Você só pode analisar eventos de logs JSON que incluam no máximo 200 campos de eventos de logs. Ao analisar campos JSON aninhados, você deve formatar a expressão regular em sua consulta para que corresponda ao formato do seu evento de logs JSON.

Exemplos do comando de análise

Use uma expressão de glob para extrair os campos @user, @method e @latency do campo de log @message e retornar a latência média para cada combinação exclusiva de @method e @user.

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

Use uma expressão regular para extrair os campos @user2, @method2 e @latency2 do campo de log @message e retornar a latência média para cada combinação exclusiva de @method2 e @user2.

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

Extrai os campos loggingTimeloggingType e loggingMessage, aplica o filtro para eventos de logs que contêm strings ERROR ou INFO e exibe apenas os campos loggingMessageloggingType para eventos que contêm uma string ERROR.

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