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 loggingTime
, loggingType
e loggingMessage
, aplica o filtro para eventos de logs que contêm strings ERROR
ou INFO
e exibe apenas os campos loggingMessage
e loggingType
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