Para enviar tus logs de Go a Datadog, loguea un archivo y luego supervisa ese archivo con tu Datadog Agent. Puedes utilizar la siguiente configuración con logrus, una biblioteca de registro de código abierto.

Datadog recomienda encarecidamente que configures tu biblioteca de registro para producir tus logs en JSON y evitar la necesidad de reglas de parseo personalizadas.

Configurar tu registrador

Para una configuración de Go clásica, abre un archivo main.go y pega el siguiente código:

package main

import (
  log "github.com/sirupsen/logrus"
)

func main() {

    // use JSONFormatter
    log.SetFormatter(&log.JSONFormatter{})

    // log an event as usual with logrus
    log.WithFields(log.Fields{"string": "foo", "int": 1, "float": 1.1 }).Info("My first event from golang to stdout")
}

Puedes añadir metas a cualquier log si proporcionas un objeto JSON que desees ver en el evento de log.

Estas metas pueden ser hostname, username, customers, metric o cualquier información que pueda ayudarte a solucionar problemas y entender lo que ocurre en tu aplicación Go.

package main

import (
  log "github.com/sirupsen/logrus"
)

func main() {

    // use JSONFormatter
    log.SetFormatter(&log.JSONFormatter{})

    // log an event with logrus
    log.WithFields(log.Fields{"string": "foo", "int": 1, "float": 1.1 }).Info("My first event from golang to stdout")

  // for metadata, a common pattern is to reuse fields between logging statements by reusing
  contextualizedLog := log.WithFields(log.Fields{
    "hostname": "staging-1",
    "appname": "foo-app",
    "session": "1ce3f6v"
  })

  contextualizedLog.Info("Simple event with global metadata")
}

Configura tu Datadog Agent

Una vez que la recopilación de log está habilitada, configura la recopilación de log personalizada para supervisar tus archivos de log y enviar nuevos logs a Datadog.

  1. Crea una carpeta go.d/ en el directorio de configuración del Agent conf.d/.

  2. Crea un archivo conf.yaml en go.d/ con el siguiente contenido:

    ##Log section
    logs:
    
      - type: file
        path: "<path_to_your_go_log>.log"
        service: <service_name>
        source: go
        sourcecategory: sourcecode
    
  3. Reinicia el Agent.

  4. Ejecuta el subcomando de estado del Agent y busca go en la sección Checks para confirmar que los logs se han enviado correctamente a Datadog.

Si los logs están en formato JSON, Datadog analiza automáticamente los mensajes de log para extraer los atributos de log. Utiliza el Log Explorer para ver y solucionar los problemas de tus logs.

Conectar logs y trazas

Si APM está habilitado para esta aplicación, la correlación entre los logs de aplicación y trazas (traces) puede mejorarse siguiendo la documentación de registro de APM Go para añadir automáticamente trazas e IDs de tramos en tus logs.

Prácticas recomendadas

  • Asigna al registrador un nombre que se corresponda con la funcionalidad o servicio pertinente.
  • Utiliza los niveles de log DEBUG, INFO, WARNING y FATAL. En Datadog, FATAL de Go se asigna a un nivel de gravedad de Emergency.
  • Empieza registrando la información más importante. Amplía el alcance de tu registro con nuevas iteraciones.
  • Utiliza metas para añadir contexto a cualquier log. Esto te permite filtrar rápidamente por usuarios, clientes, atributos empresariales, etc.

Leer más