Los logs no muestran la marca temporal prevista
Por defecto, cuando la API de entrada de Datadog recibe logs, se genera una marca temporal y se añade como atributo de fecha. Sin embargo, esta marca temporal predeterminada no siempre refleja la marca real que podría estar contenida en el propio log. En esta guía, aprenderás cómo anular la marca temporal predeterminada por la marca temporal real.
Marca temporal indicada
La marca temporal del log se encuentra en la parte superior del panel del log. Las marcas temporales se almacenan en UTC y se muestran en la zona horaria local del usuario. En la captura de pantalla anterior, el perfil local está configurado en UTC+1
, por lo que la hora a la que se recibió el log es 11:06:16.807 UTC
.
Es posible que la marca temporal no muestre el valor esperado porque la zona horaria está mal configurada. Para comprobar si este es el caso, ve a Preferences (Preferencias) y mira en la sección Time zone (Zona horaria).
Si la zona horaria es correcta, extrae la marca temporal del mensaje para anular la que se muestra en el log.
Logs sin procesar
Si tus logs sin procesar no muestran la marca temporal correcta en Datadog, extrae la marca temporal correcta de los logs sin procesar y reasígnala.
- Ve a Pipelines de logs y haz clic en el pipeline que procesa los logs.
- Haz clic en Add Processor (Agregar procesador).
- Selecciona el tipo de procesador Grok Parser (Analizador Grok).
- Utiliza date() matcher para extraer la fecha y pasarla a un atributo de fecha personalizado. Consulta el siguiente ejemplo, así como ejemplos de parseo de fechas, para obtener más detalles.
En un ejemplo de log como este:
2017-12-13 11:01:03 EST | INFO | (tagger.go:80 in Init) | starting the tagging system
Añade una regla de parseo como:
MyParsingRule %{date("yyyy-MM-dd HH:mm:ss z"):date} \| %{word:severity} \| \(%{notSpace:logger.name}:%{integer:logger.line}[^)]*\) \|.*
El resultado de la extracción de MyParsingRule
:
{
"date": 1513180863000,
"logger": {
"line": 80,
"name": "tagger.go"
},
"severity": "INFO"
}
El atributo date
almacena el valor mytimestamp
.
Definir un reasignador de fecha de log
Añade un Reasignador de fecha de log para asegurarte de que el valor del atributo date
anula la marca temporal actual del log.
- Ve a Pipelines de logs y haz clic en el pipeline que procesa los logs.
- Haz clic en Add Processor (Agregar procesador).
- Selecciona Date remapper (Reasignador de fecha) como el tipo de procesador.
- Introduce un nombre para el procesador.
- Agrega date (fecha) a la sección Set date attribute(s) (Establecer atributos de fecha).
- Haz clic en Create (Crear).
El siguiente log generado en 06:01:03 EST
, que corresponde a 11:01:03 UTC
, se visualiza correctamente como 12:01:03 (la zona horaria mostrada es UTC+1 en este caso).
Nota: Cualquier modificación en un pipeline solo afecta a los nuevos logs, ya que todo el procesamiento se realiza en la ingesta.
Logs de JSON
Los logs de JSON se analizan automáticamente en Datadog. Dado que el atributo status
del log es un atributo reservado, pasa por operaciones de preprocesamiento para los logs de JSON.
En el ejemplo siguiente, la marca temporal real del log es el valor del atributo mytimestamp
y no la marca temporal del log Dec 13, 2017 at 14:16:45.158
.
Para asegurarte de que el valor del atributo mytimestamp
anula la marca temporal actual del log que se está mostrando, debes añadirlo como atributo de fecha.
- Ve a tu Pipeline de logs.
- Sitúate sobre Preprocessing for JSON Logs (Preprocesamiento para logs de JSON) y haz clic en el icono del lápiz.
- Añade
mytimestamp
a la lista de atributos de fecha. El reasignador de fechas busca cada uno de los atributos reservados en el orden en que aparecen en la lista. Para asegurarte de que la fecha procede del atributo mytimestamp
, colócalo en primer lugar en la lista. - Haz clic en Save (Guardar).
Hay formatos de fecha específicos que deben seguirse para que la reasignación funcione. Los formatos de fecha reconocidos son: ISO8601, UNIX (el formato EPOCH de milisegundos) y RFC3164.
Si utilizas un formato de fecha diferente, consulta Formato de fecha personalizado.
Nota: Cualquier modificación en el pipeline solo afecta a los nuevos logs, ya que todo el procesamiento se realiza en la ingesta.
Si el formato de fecha no es admitido por defecto por el reasignador, puedes analizar la fecha utilizando un Analizador Grok y luego convertirla a un formato compatible.
- Ve al Pipeline que está procesando los logs. Si todavía no tienes un pipeline configurado para esos logs, crea un nuevo pipeline para ello.
- Haz clic en Add Processor (Agregar procesador).
- Selecciona el tipo de procesador Grok Parser (Analizador Grok).
- Define la regla de parseo en función de tu formato de fecha. Consulta estos ejemplos de parseo de fechas para más detalles.
- En la sección Advanced Settings (Configuración avanzada), añade
mytimestamp
a la sección Extract from
para que este analizador se aplique únicamente al atributo personalizado mytimestamp
. - Haz clic en Create (Crear).
- Añade un Reasignador de fecha de log para asignar la marca temporal correcta a los nuevos logs.
Más enlaces, artículos y documentación útiles: