Fazer Parsing de Registros de Log com Vários Timestamps
Alguns registros de log podem ter vários timestamps, como a hora de entrada do log, a hora de início e a hora de término de um processo ou transação que talvez você queira capturar em seus próprios campos. Depois de capturar os horários inicial e final em seus próprios campos, você pode usar o comando eval para executar a manipulação de data nesses campos, por exemplo, para obter a duração entre os dois horários. Consulte eval.
O Oracle Log Analytics tem vários campos definidos pela Oracle que permitem armazenar informações de data e hora que não são o horário real de entrada de log:
-
Horário Final do Evento
-
Horário Inicial do Evento
-
Horário da Geração do Evento
-
Horário do Primeiro Evento
-
Horário Final do Contato
-
Horário Inicial do Contrato
-
Tempo de Emissão do Alerta
-
Horário da Coleta
-
Horário da Detecção
Os dados armazenados nesses campos devem estar no formato ISO-8601:
2018-07-04T23:43:34.000ZAo criar o parser, você só pode usar a macro {TIMEDATE} uma vez para expressar o horário de entrada do log. Para obter campos adicionais de horário, extraia os dados usando um dos métodos a seguir, dependendo do seu caso de uso.
Caso 1: Seu log já tem as informações de hora e data no formato ISO-8601
Se seu log já tiver informações adicionais de data e hora no formato ISO-8601, você poderá extraí-las como strings no parser base da Definição de Campo Estendido.
Considere o seguinte log de exemplo:
July 4, 2018 23:43:12 Server1 ModuleA Transaction completed. Start=2018-07-04T23:45:34.000Z, End=2018-07-04T23:46:39.000ZO log contém informações de data e hora para entrada de log, horário inicial e horário final.
-
Para obter o horário de entrada de log, crie o parser base. Consulte Criar um Parser.
{TIMEDATE}\s(\S+)\s(\S+)\s(.*) -
Abra a caixa de diálogo Criar Origem. Consulte Criar uma Origem.
-
Selecione o parser base criado na etapa 1.
-
Forneça o caminho do arquivo para o log de exemplo.
-
Na guia Campos Estendidos, adicione as definições de campo estendido à origem de log para extrair os campos de data e hora:
-
No campo Mensagem:
Start={Event Start Time:\S+} -
No campo Mensagem:
End={Event End Time:\S+}
-
-
Salve a nova origem que você criou.
Agora você observará que os dois campos Event Start Time e Event End Time são preenchidos com os valores do log. No Log Explorer, você pode ver os horários como milissegundos desde a época.
Caso 2: Seu log não tem as informações de data e hora no formato ISO-8601
Se os campos de horário adicionais que você deseja extrair não estiverem no formato ISO-8601, siga estas etapas para fazer parsing:
Considere o arquivo de log de exemplo em que todo o arquivo é uma única entrada de log:
+---------------------------------------------------------------------------+
Application Object Library: Version : 12.2
Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
FNDWFBG: Workflow Background Process
+---------------------------------------------------------------------------+
Current system time is 04-JUL-2018 17:25:23
+---------------------------------------------------------------------------+
**Starts**04-JUL-2018 17:25:23
**Ends**04-JUL-2018 18:25:23
+---------------------------------------------------------------------------+
Start of log messages from FND_FILE
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
End of log messages from FND_FILE
+---------------------------------------------------------------------------+
Successfully resubmitted concurrent program FNDWFBG with request ID 239834523 to start at 04-JUL-2018 18:30:23 (ROUTINE=IERKWEP)
+---------------------------------------------------------------------------+
No completion options were requested.
Output file size:
0
Output is not being printed because:
The print option has been disabled for this report.
+---------------------------------------------------------------------------+
Concurrent request completed successfully
Current system time is 04-JUL-2018 18:30:23
+---------------------------------------------------------------------------+-
Crie o parser base. Consulte Criar um Parser.
.*?Current system time is {TIMEDATE}.*\*\*Starts\*\*([\S\ ]+).*?\*\*Ends\*\*([\S\ ]+).*Os campos que você deve selecionar para parsing são:
-
Versão
-
Horário Inicial do Evento
-
Horário Final do Evento
Para o log de exemplo anterior, marque a caixa de seleção Tratar arquivo inteiro como uma única entrada de log. Nenhum regex de cabeçalho é necessário.
-
-
Abra a caixa de diálogo Criar Origem de Log. Consulte Criar uma Origem.
-
Selecione o parser base criado na etapa 1.
-
Forneça o caminho do arquivo para o log de exemplo.
-
Navegue até a guia Filtros de Dados.
-
Converter Nome Abreviado do Mês para Número:
Se seu log já tiver um número de mês numérico, em vez de um nome de mês, você poderá ignorar esta etapa e ir para a etapa 7.
Se seu log tiver o nome abreviado do mês, em vez do número do mês, para converter o nome abreviado do mês para o número do mês, adicione doze filtros de dados do tipo MASK.
Para cada mês do calendário, o filtro de dados terá detalhes semelhantes como para o seguinte mês de janeiro:
-
Nome:
Jan to 01 -
Tipo:
Mask -
Expressão de Localização:
(\*\*\w+\*\*\d{2}-)(JAN)(-\d{4}) -
Expressão de Substituição:
$101$3
A máscara de dados localiza ocorrências do padrão de tempo no log:
**Starts**04-JAN-2018 17:25:23Ela captura os dados antes de
JAN, o valorJANe os dados apósJANem três grupos de captura. Os grupos de captura são indicados com os três pares de parênteses( ).Em seguida, na expressão de substituição, o valor do primeiro grupo de captura é substituído usando
$1, o valorJANé substituído por01e o terceiro grupo de captura é substituído usando$3.Depois que o filtro de dados for implementado, as informações de data e hora serão exibidas da seguinte forma:
**Starts**04-01-2018 17:25:23 -
-
Reescreva as informações de data e hora no formato ISO-8601:
Agora que as informações de hora e data estão disponíveis no tipo de dados correto, reescreva os dados de data e hora para que fiquem no formato ISO-8601 usando dois filtros de dados para o log de exemplo:
Esses dois filtros de dados devem ser posicionados após os doze filtros de dados que você criou para converter o nome abreviado do mês para o número do mês. Isso garantirá que o formato dos dados de data e hora seja avaliado depois que o nome abreviado do mês for convertido em número do mês. Use as setas para cima e para baixo para alterar a ordem dos filtros de dados.
Crie os dois seguintes filtros de dados a seguir para converter os dados de horário inicial e horário final no formato ISO-8601:
-
-
Nome:
Change shape of Starts -
Tipo:
Mask -
Expressão de Localização:
\*\*Starts\*\*(\d+)-(\d+)-(\d{4})\s(\d{2}:\d{2}:\d{2}) -
Expressão de Substituição:
\*\*Starts\*\*$3-$2-$1T$4.000Z
-
-
-
Nome:
Change shape of Ends -
Tipo:
Mask -
Expressão de Localização:
\*\*Ends\*\*(\d+)-(\d+)-(\d{4})\s(\d{2}:\d{2}:\d{2}) -
Expressão de Substituição:
\*\*Ends\*\*$3-$2-$1T$4.000Z
-
Na expressão de localização, cada elemento de hora e data é capturado. Na expressão de substituição, a ordem dos elementos de data e hora é alterada. Os valores
$1,$2,$3e$4correspondem aos grupos de captura na expressão de localização. Os grupos de captura são indicados com os pares de parênteses( ).O
.000Zestático é adicionado na expressão de substituição para armazenar o valor de data e hora no campo. Isso marca efetivamente a hora e a data no fuso horário UTC (Horário Universal Coordenado). Se em vez disso a entrada de log estava no fuso horário PST (Pacific Standard Time), o fuso horário será alterado artificialmente para UTC, mas sem a mudança real na hora.Observação
Atualmente, não é possível mudar o valor de data e hora para outro fuso horário no momento da ingestão. Mas você pode fazer isso no Log Explorer usando o comando eval:-
Depois de armazenar os horários inicial e final do evento, subtraia o horário final do horário inicial para obter a duração do evento.
-
Adicione ou subtraia a duração da diferença de tempo entre os fusos horários calculados em milissegundos.
-
Converta a saída do número de milissegundos para o formato de data e hora.
-
-
Na guia Campos Estendidos, adicione as definições de campo estendido à origem de log para extrair os campos de data e hora:
-
No campo Mensagem:
\*\*Starts\*\*{Event Start Time:\S+} -
No campo Mensagem:
\*\*Ends\*\*{Event Start Time:\S+}
-
-
Salve a nova origem de log que você criou.
Agora você pode observar que os dois campos Event Start Time e Event End Time são preenchidos com os valores de data e hora do log. No Log Explorer, você pode ver os horários como milissegundos desde a época.

