Pour envoyer vos logs Go à Datadog, activez la journalisation au sein d’un fichier et suivez ce fichier avec l’Agent Datadog. Pour ce faire, il est recommandé d’utiliser la configuration suivante avec la bibliothèque de journalisation open source logrus.

Datadog vous recommande fortement de configurer votre bibliothèque de journalisation de façon à générer vos logs au format JSON. Vous n’aurez ainsi pas besoin de créer de règles de parsing personnalisées.

Configurer votre logger

Pour une configuration Go classique, ouvrez un fichier main.go et collez le code suivant :

package main

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

func main() {

    // utiliser le JSONFormatteur
    log.SetFormatter(&log.JSONFormatter{})

    // enregistrer comme d'habitude un événement avec logrus
    log.WithFields(log.Fields{"string": "foo", "int": 1, "float": 1.1 }).Info("Mon premier événement de golang à stdout")
}

Vous pouvez ajouter des métadonnées à un log en fournissant l’objet JSON à afficher dans l’événement de log.

Ces métadonnées peuvent correspondre à hostname, username, customers, metric ou à toute autre information facilitant de dépannage et la compréhension du fonctionnement de votre application Go.

package main

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

func main() {

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

    // enregistrer comme d'habitude un événement avec logrus
    log.WithFields(log.Fields{"string": "foo", "int": 1, "float": 1.1 }).Info("Mon premier événement de golang à stdout")
  // Pour les métadonnées, un schéma récurrent consiste à réutiliser les champs entre les déclarations de journalisation en réutilisant
  contextualizedLog := log.WithFields(log.Fields{
    "hostname": "staging-1",
    "appname": "foo-app",
    "session": "1ce3f6v"
  })

  contextualizedLog.Info("Événement simple avec des métadonnées globales")
}

Associer vos logs à vos traces

Si l’APM est activée pour cette application, vous pouvez améliorer la corrélation entre vos logs et vos traces d’application en suivant les instructions de journalisation GO pour l’APM afin d’ajouter automatiquement des identifiants de trace et de span à vos logs.

Configurer votre Agent Datadog

Créez un fichier go.d/conf.yaml dans votre dossier conf.d/ avec le contenu suivant :

##Section des logs
logs:

  - type: file
    path: "/path/to/your/go/log.log"
    service: go
    source: go
    sourcecategory: sourcecode

Concepts avancés

Voici quelques conseils pour tirer pleinement profit de votre collecte de logs Go :

  • Attribuez toujours au logger un nom correspondant à la fonctionnalité ou au service que vous essayez de fournir.
  • Enregistrez beaucoup de données de DEBUG et loguez plus précisément les données INFO, WARNING et FATAL, car il s’agit des niveaux de logs que vous obtiendrez dans vos environnements de production.
  • Commencez doucement et essayez de créer d’abord des logs pour les données importantes, plutôt que de voir les choses en grand. Ajoutez ensuite ce qui vous manque après en avoir discuté avec votre équipe.
  • Utilisez des métadonnées. Ajoutez du contexte à tous vos logs afin de rapidement filtrer les utilisateurs, les clients ou les attributs métiers capitaux.

Pour aller plus loin