Collecte de logs Go

Collecte de logs Go

Pour envoyer vos logs Go à Datadog, nous vous recommandons d’activer la journalisation au sein d’un fichier et de le suivre avec l’Agent Datadog. Pour ce faire, nous vous suggérons d’utiliser la configuration suivante avec la bibliothèque de journalisation open source du nom de logrus.

Nous vous encourageons fortement à configurer votre bibliothèque de journalisation afin de générer vos logs au format JSON et d’éviter de créer des 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")
}

Ajoutez des métadonnées à un log est un jeu d’enfant si vous fournissez un objet JSON à afficher dans l’événement du 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