Para recopilar trazas desde tus contenedores de ECS, actualiza las definiciones de tareas, tanto para el Agent como para el contenedor de aplicaciones, como se describe a continuación.
Una vez activado, el contenedor del Datadog Agent recopila las trazas emitidas desde los otros contenedores de aplicaciones que se encuentran en ese mismo host.
Configurar el Datadog Agent para aceptar trazas
Para recopilar todas las trazas de tus contenedores de ECS en ejecución, actualiza la definición de tareas del Agent mediante los parámetros de ECS originales con la siguiente configuración.
Utiliza datadog-agent-ecs-apm.json como punto de referencia para la configuración de base requerida. En la definición de tareas del contenedor del Datadog Agent, configura las portMappings de un host en el puerto del contenedor 8126 con el protocolo tcp.
Si estás actualizando un archivo local para tu definición de tareas del Agent, registra tu definición de tareas actualizada. Al hacerlo, se creará una nueva revisión. A continuación, puedes hacer referencia a esta revisión actualizada en el servicio daemon del Datadog Agent.
Configurar tu contenedor de aplicaciones para enviar trazas al Datadog Agent
Proporcionar la dirección IP privada para la instancia EC2
Indica al rastreador la dirección IP privada de la instancia EC2 subyacente en la que se está ejecutando el contenedor de aplicaciones. Esta dirección es el nombre de host del endpoint del rastreador. El contenedor del Datadog Agent que está en el mismo host (con el puerto del host activado) recibe estas trazas.
Utiliza uno de los siguientes métodos para obtener dinámicamente la dirección IP privada:
El endpoint de metadatos de EC2 de Amazon (IMDSv1) permite detectar la dirección IP privada. Para obtener la dirección IP privada de cada host, utiliza el comando curl para la siguiente URL:
Indica el resultado de esta solicitud al rastreador configurando la variable de entorno DD_AGENT_HOST para cada contenedor de aplicaciones que envíe trazas.
Configurar el endpoint del Trace Agent
En los casos en que las variables de tu aplicación de ECS se configuran en el momento de inicio (Java, .NET y PHP), debes configurar el nombre de host del endpoint del rastreador como una variable de entorno con DD_AGENT_HOST, utilizando uno de los métodos anteriores. En los siguientes ejemplos se utiliza el endpoint de metadatos de IMDSv1, aunque es posible intercambiar la configuración si es necesario. Si tienes un script de inicio como punto de entrada, incluye esta llamada como parte del script o añádela al entryPoint de la definición de tareas de ECS.
Para otros lenguajes compatibles (Python, JavaScript, Ruby y Go), también puedes configurar el nombre de host en el código fuente de tu aplicación.
Para Python, el comando de inicio suele ser ddtrace-run python my_app.py, aunque puede variar en función del marco utilizado; por ejemplo, utilizando uWSGI o instrumentando tu código manualmente con patch_all.
Código
También puedes actualizar el código para que el rastreador configure el nombre de host explícitamente:
También puedes actualizar el código para que el rastreador configure el nombre de host explícitamente:
require'datadog'# Use 'ddtrace' if you're using v1.xrequire'net/http'Datadog.configuredo|c|c.agent.host=Net::HTTP.get(URI('http://169.254.169.254/latest/meta-data/local-ipv4'))end
Variable de momento de inicio
Actualiza el entryPoint de la definición de tareas con lo siguiente, sustituyendo tu<Go Startup Command>:
También puedes actualizar el código para que el rastreador configure el nombre de host explícitamente:
packagemainimport("net/http""io/ioutil""gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer")funcmain(){resp,err:=http.Get("http://169.254.169.254/latest/meta-data/local-ipv4")bodyBytes,err:=ioutil.ReadAll(resp.Body)host:=string(bodyBytes)iferr==nil{//set the output of the curl command to the DD_AGENT_HOST env
os.Setenv("DD_AGENT_HOST",host)// tell the trace agent the host setting
tracer.Start(tracer.WithAgentAddr(host))defertracer.Stop()}//...
}
Variable de momento de inicio
Actualiza el entryPoint de la definición de tareas con lo siguiente, sustituyendo tu <Java Startup Command>:
Para Apache y mod_php en VirtualHost o el archivo de configuración del servidor, utiliza PassEnv para configurar DD_AGENT_HOST y otras variables de entorno, como las variables del etiquetado de servicios unificado, como en el siguiente ejemplo:
Cuando el parámetro ini está configurado como clear_env=on, en el archivo de workers de grupo www.conf, también debes configurar variables de entorno para que se lean desde el host. Utiliza esta opción para configurar también DD_AGENT_HOST y otras variables de entorno, como las variables del etiquetado de servicios unificado, como en el siguiente ejemplo:
Al utilizar IMDSv2, la configuración de entryPoint equivalente tendrá la apariencia siguiente. Sustituye el <Startup Command> correspondiente en función de tu lenguaje, como se muestra en los ejemplos anteriores.