Un registro de evento deja un atributo de timestamp , que le indica el momento exacto en que ocurrió un determinado evento. La marca de tiempo es fundamental para ordenar un evento, ya que le permite buscar en el registro períodos de tiempo específicos, lo que le permite descubrir qué y cuándo ocurrió un evento.
La marca de tiempo tiene muchos formatos sin un solo estándar. Aparecen al principio del registro de eventos en la mayoría de los casos, pero a veces pueden aparecer mucho más tarde en el log o no aparecer en absoluto.
- De forma predeterminada, New Relic asigna el valor del atributo de log
timestamp
(una palabra clave reservada) en el momento exacto en que se ingiere el log . Esto se conoce como tiempo de ingesta. - Cuando el registro no tiene un atributo
timestamp
, New Relic asigna una timestamp en el momento de la ingesta. - Iniciar sesión en formato JSON contiene algún atributo que identifica la timestamp, como
timestamp
,log_timestamp
,time
, etc. - Si recibimos un registro JSON con un formato timestamp compatible, anulamos nuestra timestamp ingesta con el atributo JSON.
Formato timestamp de registro admitido
Hay dos opciones para anular manualmente el comportamiento predeterminado para asignar el valor timestamp
contenido en el log.
- Si recibimos un logcon formato JSON que contiene un atributo
timestamp
en uno de nuestros formatos de hora admitidos, se anulará la timestamp de ingesta. En su lugar, se utilizará el valor timestamp del atributo JSON. - Puede utilizar reglas de análisis para anular el valor de ingesta
timestamp
. Las reglas de análisis le permiten extraer datos para formatear su timestamp con uno de nuestros formatos admitidos. También puede utilizardatetime
tipo Grok y unpattern
para definir el formato timestamp personalizado en su log.
Admitimos dos formatos timestamp :
Marca de tiempo admitida en el registro JSON
Si recibimos un log con formato JSON con un atributo timestamp
, anulamos el valor de ingesta predeterminado timestamp
con el valor JSON original. Si no hay ningún campo timestamp o el campo tiene un formato incorrecto, el log se almacenará con la timestamp de ingesta. Tenga en cuenta que una carga con marca de tiempo anterior a 48 horas se descarta.
La marca de tiempo se convierte a milisegundos de época Unix y se almacena internamente como un tipo de datos largo, con la palabra clave reservada timestamp
. Dependiendo del formato del cuerpo JSON, el campo timestamp se puede asignar en cuatro lugares diferentes:
Dentro del conjunto simplificado de atributos del cuerpo del mensaje JSON al enviar un único objeto JSON.
Dentro del objeto común en el conjunto detallado de atributos del cuerpo del mensaje JSON al enviar uno o más objetos JSON. La timestamp se aplica a todos los mensajes de registro de este JSON.
Dentro de cada mensaje de log en el objeto log en el conjunto detallado de atributos del cuerpo del mensaje JSON al enviar uno o más objetos JSON. La marca de tiempo solo se aplica a ese mensaje de registro.
Dentro del campo JSON “mensaje” cuando es un mensaje JSON válido. Nuestras capacidades
analizarán cualquier atributo de mensaje como JSON. El atributo JSON resultante en el mensaje analizado se agregará al log.
A continuación se muestran algunos ejemplos de registro JSON con un atributo timestamp
válido que anula la ingesta timestamp
:
Establecer log timestamp con reglas de análisis
Puede utilizar reglas de análisis en la ingesta para anular la ingesta timestamp
con el valor contenido en el log. Las reglas de análisis extraen nuestros formatos de hora admitidos con expresiones Grok simples o usando el tipo datetime
Grok y pattern
para definir el formato timestamp personalizado en su log.
El nombre del atributo extraído por la expresión debe ser timestamp
y su tipo de datos debe ser cadena o largo. Si no se proporciona el tipo de datos, la timestamp predeterminada es una cadena. Para la marca de tiempo de época con precisión de microsegundos o nanosegundos, debe incluir el tipo de datos long
aunque la precisión timestamp se reduzca a milisegundos.
Si la timestamp en su log es una época Unix o timestamp con formato ISO8601, puede usar los patrones predeterminados de Grok para que coincidan. Por ejemplo:
- Para extraer una timestamp de época de Unix, puede utilizar cualquier expresión que coincida con el valor, como
NUMBER
,NOTSPACE
,DATA
oGREEDYDATA
. - Para extraer una timestamp con formato ISO8601, debe utilizar la expresión
TIMESTAMP_ISO8601
Grok.
Puede utilizar el tipo Grok datetime
para analizar la marca de tiempo en formatos no admitidos. Para hacer esto, debe incluir el tipo datetime
Grok con el pattern
que coincida con el formato timestamp de su registro. El pattern
debe utilizar los patrones simples de fecha y hora de Java que se encuentran aquí. A continuación se muestran ejemplos que muestran cómo las expresiones de Grok transforman formatos timestamp no admitidos en formatos admitidos:
|
| Expresión grok |
---|---|---|
17/11/2023 23:55:25.674 | MM/dd/aaaa HH:mm:ss.SSS |
|
17-11-2023 23:55:25 | MM-dd-aaaa HH:mm:ss |
|
17/11/2023 09:55:25 | MM/dd/aaaa h:mm:ss a |
|
A continuación se muestran algunos ejemplos sobre cómo analizar el timestamp
de su registro utilizando reglas de análisis de ingesta: