Instrumenter des applications Go
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

Instrumenter des applications Go

Après avoir installé l’intégration AWS et le Forwarder Datadog, suivez les étapes ci-dessous pour instrumenter votre application afin d’envoyer des métriques, des logs et des traces à Datadog.

Configuration

Installer la bibliothèque Lambda Datadog

Vous pouvez installer la bibliothèque Lambda de Datadog localement en exécutant la commande suivante :

go get github.com/DataDog/datadog-lambda-go

Configurer la fonction

  1. Définissez la variable d’environnement DD_FLUSH_TO_LOG sur true.
  2. Activez le tracing actif AWS X-Ray pour votre fonction Lambda.

Abonner le Forwarder Datadog aux groupes de logs

Pour pouvoir envoyer des métriques, traces et logs à Datadog, vous devez abonner la fonction Lambda du Forwarder Datadog à chaque groupe de logs de votre fonction.

  1. Si ce n’est pas déjà fait, installez le Forwarder Datadog.
  2. Vérifiez que l’option DdFetchLambdaTags est activée.
  3. Abonnez le Forwarder Datadog aux groupes de logs de votre fonction.

Explorer la surveillance sans serveur de Datadog

Après avoir configuré votre fonction en suivant la procédure ci-dessus, vous devriez pouvoir visualiser vos métriques, logs et traces sur la page Serverless principale.

Si vous souhaitez envoyer une métrique custom, consultez l’exemple de code ci-dessous :

package main

import (
  "github.com/aws/aws-lambda-go/lambda"
  "github.com/DataDog/datadog-lambda-go"
)

func main() {
  // Inclure la fonction handler dans un wrapper
  lambda.Start(ddlambda.WrapHandler(myHandler, nil))
}

func myHandler(ctx context.Context, event MyEvent) (string, error) {
  // Envoyer une métrique custom
  ddlambda.Metric(
    "coffee_house.order_value", // Nom de la métrique
    12.45, // Valeur de la métrique
    "product:latte", "order:online" // Tags associés
  )

  req, err := http.NewRequest("GET", "http://example.com/status")

  // Ajouter les en-têtes de tracing distribué Datadog
  ddlambda.AddTraceHeaders(ctx, req)

  client := http.Client{}
  client.Do(req)
}

Pour aller plus loin