Collecte de logs Go
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

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")
}

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 :

  • 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