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
- Définissez la variable d’environnement
DD_FLUSH_TO_LOG
sur true
. - Activez le tracing actif AWS X-Ray pour votre fonction Lambda.
- 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.WrapFunction(myHandler, nil))
/* OR with manual configuration options
lambda.Start(ddlambda.WrapFunction(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.
- Si ce n’est pas déjà fait, installez le Forwarder Datadog.
- 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.WrapFunction(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
Documentation, liens et articles supplémentaires utiles: