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 JSON campos aninhados com uma expressão regular.
Exemplo: análise de um campo aninhado JSON
O trecho de código mostra como analisar um evento de JSON registro que foi reduzido 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 registro de VPC fluxo para extraí-lo ENI em um campo chamadoNetworkInterface
.
parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message
nota
JSONos eventos de registro são nivelados durante a ingestão. Atualmente, a análise de JSON campos aninhados com uma expressão global não é suportada. Você só pode analisar eventos de JSON log que incluam no máximo 200 campos de eventos de log. Ao analisar JSON campos aninhados, você deve formatar a expressão regular em sua consulta para corresponder ao formato do seu evento de JSON log.
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