Après avoir suivi les instructions d’installation de l’agent Amazon ECS, activez la collecte de traces en suivant les instructions ci-dessous.
Configurez les paramètres suivants dans la définition de tâche pour le conteneur datadog/agent
. Définissez le port du host/conteneur portMappings
sur 8126
avec le protocole tcp
:
containerDefinitions": [
{
"name": "datadog-agent",
"image": "datadog/agent:latest",
"cpu": 10,
"memory": 256,
"essential": true,
"portMappings": [
{
"hostPort": 8126,
"protocol": "tcp",
"containerPort": 8126
}
],
...
Si vous utilisez l'Agent v7.17 ou une version inférieure, ajoutez les variables d’environnement suivantes :
...
"environment": [
...
{
"name": "DD_APM_ENABLED",
"value": "true"
},
{
"name": "DD_APM_NON_LOCAL_TRAFFIC",
"value": "true"
},
...
]
...
Attribuez l’adresse IP privée utilisée par chaque instance sous-jacente sur laquelle vos conteneurs sont exécutés dans votre conteneur d’application à la variable d’environnement DD_AGENT_HOST
. Les traces de votre application seront ainsi transmises à l’Agent. L'endpoint de métadonnées d’Amazon EC2 peut être utilisé pour identifier l’adresse IP privée. Pour récupérer l’adresse IP privée de chaque host, effectuez un curl sur l’URL suivante :
curl http://169.254.169.254/latest/meta-data/local-ipv4
Définissez le résultat comme la variable d’environnement de hostname de votre Agent de trace pour chaque conteneur d’application qui transmet des traces à l’APM :
os.environ['DD_AGENT_HOST'] = <IP_PRIVÉE_EC2>
Si les variables de votre application ECS sont définies au moment du lancement, vous devez définir le hostname en tant que variable d’environnement avec DD_AGENT_HOST
. Vous pouvez également définir le hostname dans le code source de votre application pour Python, Javascript ou Ruby. Pour Java et .NET, vous pouvez définir le hostname dans la tâche ECS. Par exemple :
import requests
from ddtrace import tracer
def get_aws_ip():
r = requests.get('http://169.254.169.254/latest/meta-data/local-ipv4')
return r.text
tracer.configure(hostname=get_aws_ip())
Pour découvrir comment définir le hostname de l’Agent dans d’autres langages, consultez les exemples de la section Modifier le hostname de l’Agent.
const tracer = require('dd-trace');
const request = require('request');
request('http://169.254.169.254/latest/meta-data/local-ipv4', function(
error,
resp,
body
) {
tracer.init({ hostname: body });
});
Pour découvrir comment définir le hostname de l’Agent dans d’autres langages, consultez les exemples de la section Modifier le hostname de l’Agent.
require 'ddtrace'
require 'net/http'
Datadog.configure do |c|
c.tracer hostname: Net::HTTP.get(URI('http://169.254.169.254/latest/meta-data/local-ipv4'))
end
package main
import (
"net/http"
"io/ioutil"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
)
resp, err := http.Get("http://169.254.169.254/latest/meta-data/local-ipv4")
bodyBytes, err := ioutil.ReadAll(resp.Body)
host := string(bodyBytes)
if err == nil {
// définir la sortie de la commande curl sur l'env DD_Agent_host
os.Setenv("DD_AGENT_HOST", host)
// indiquer à l'Agent de trace le host défini
tracer.Start(tracer.WithAgentAddr(host))
defer tracer.Stop()
Copiez ce script dans le champ entryPoint
de votre définition de tâche ECS en mettant à jour les valeurs avec le fichier JAR et les flags d’argument de votre application.
"entryPoint": [
"sh",
"-c",
"export DD_AGENT_HOST=$(curl http://169.254.169.254/latest/meta-data/local-ipv4); java -javaagent:/app/dd-java-agent.jar <FLAGS_ARGUMENT_APPLICATION> -jar <FICHIER_JAR/FICHIER_WAR_APPLICATION>"
]
Pour découvrir comment définir le hostname de l’Agent dans d’autres langages, consultez les exemples de la section Modifier le hostname de l’Agent.
"entryPoint": [
"sh",
"-c",
"export DD_AGENT_HOST=$(curl http://169.254.169.254/latest/meta-data/local-ipv4); dotnet ${APP_PATH}"
]
Documentation, liens et articles supplémentaires utiles: