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 de expressões regulares, consulteSintaxe 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 @timestamp, NetworkInterface
nota

Os eventos de logs JSON são nivelados durante a ingestão. Atualmente, a análise de campos JSON aninhados com uma expressão global não é suportada. 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