Instrumenter des applications Go

Instrumenter des applications Go

Configuration requise

Si vous n’avez pas encore réalisé la configuration :

Après avoir installé l'intégration AWS et le Forwarder Datadog, suivez ces étapes 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.
  3. Incorporez la fonction Lambda de votre gestionnaire à l’aide du wrapper fourni par la bibliothèque Lambda de Datadog.
    package main
    
    import (
      "github.com/aws/aws-lambda-go/lambda"
      "github.com/DataDog/datadog-lambda-go"
    )
    
    func main() {
      // Wrap your lambda handler like this
      lambda.Start(ddlambda.WrapHandler(myHandler, nil))
      /* OR with manual configuration options
      lambda.Start(ddlambda.WrapHandler(myHandler, &ddlambda.Config{
        BatchInterval: time.Second * 15
        APIKey: "my-api-key",
      }))
      */
    }
    
    func myHandler(ctx context.Context, event MyEvent) (string, error) {
      // ...
    }
    

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. Abonnez le Forwarder Datadog aux groupes de logs de votre fonction.

Tagging de service unifié

Bien que cette opération soit facultative, nous vous recommandons fortement d’ajouter les tags env, service et version à vos applications sans serveur. Pour ce faire, suivez la documentation relative au tagging de service unifié.

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.

Surveiller une logique opérationnelle personnalisée

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
  )

  // Envoyer une métrique custom avec un timestamp
  ddlambda.MetricWithTimestamp(
    "coffee_house.order_value", // Nom de la métrique
    12.45, // Valeur de la métrique
    time.Now(), // Timestamp (dans les 20 dernières minutes)
    "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 en savoir plus sur l’envoi de métriques custom, consultez cette page.

Pour aller plus loin