Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Déployez à l'aide de la stratégie des démons
Étape 1 : activer Application Signals dans votre compte
Si vous n’avez pas encore activé Application Signals dans ce compte, vous devez accorder à Application Signals les autorisations nécessaires pour découvrir vos services. Pour ce faire, procédez comme suit. Cette opération ne doit être effectuée qu’une seule fois par compte.
Pour activer Application Signals pour vos applications
Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/
. Dans le panneau de navigation, choisissez Services.
Choisissez Commencer à découvrir vos services.
Cochez la case et choisissez Commencer à découvrir les services.
Si vous effectuez cette étape pour la première fois dans votre compte, le rôle AWSServiceRoleForCloudWatchApplicationSignalslié au service est créé. Ce rôle accorde à Application Signals les autorisations suivantes :
-
xray:GetServiceGraph
-
logs:StartQuery
-
logs:GetQueryResults
-
cloudwatch:GetMetricData
-
cloudwatch:ListMetrics
-
tag:GetResources
Pour plus d’informations sur ce rôle, consultez Autorisations de rôle liées au service pour les signaux d'application CloudWatch .
-
Étape 2 : Créer des rôles IAM
Vous devez créer un IAM rôle. Si vous avez déjà créé ce rôle, vous devrez peut-être y ajouter des autorisations.
-
ECSrôle de tâche : les conteneurs utilisent ce rôle pour s'exécuter. Les autorisations doivent également correspondre aux besoins de vos applications CloudWatchAgentServerPolicy.
Pour plus d'informations sur la création de IAM rôles, consultez la section Création de IAM rôles.
Étape 3 : Préparation de la configuration de CloudWatch l'agent
Préparez d’abord la configuration de l’agent avec Application Signals activé. Pour ce faire, créez un fichier local nommé /tmp/ecs-cwagent.json
.
{ "traces": { "traces_collected": { "application_signals": {} } }, "logs": { "metrics_collected": { "application_signals": {} } } }
Téléchargez ensuite cette configuration dans le SSM Parameter Store. Pour ce faire, entrez la commande suivante : Dans le fichier, remplacez $REGION
avec le nom actuel de votre région.
aws ssm put-parameter \ --name "ecs-cwagent" \ --type "String" \ --value "`cat /tmp/ecs-cwagent.json`" \ --region "
$REGION
"
Étape 4 : Déployer le CloudWatch service agent daemon
Créez la définition de tâche suivante et déployez-la sur votre cluster d'applications. Remplacez $REGION
avec le nom actuel de votre région. Remplacez $TASK_ROLE_ARN
and $EXECUTION_ROLE_ARN
avec les IAM rôles auxquels vous vous êtes préparéÉtape 2 : Créer des rôles IAM. Remplacez $IMAGE
avec le chemin d'accès à la dernière image de CloudWatch conteneur sur Amazon Elastic Container Registry. Pour plus d'informations, consultez cloudwatch-agent sur Amazon
Note
Le service daemon expose deux ports sur l'hôte, le 4316 étant utilisé comme point de terminaison pour la réception des métriques et des traces et le port 2000 comme point de terminaison de l'échantillonneur de CloudWatch traces. Cette configuration permet à l'agent de collecter et de transmettre des données de télémétrie provenant de toutes les tâches d'application exécutées sur l'hôte. Assurez-vous que ces ports ne sont pas utilisés par d'autres services sur l'hôte pour éviter les conflits.
{ "family": "ecs-cwagent-daemon", "taskRoleArn": "
$TASK_ROLE_ARN
", "executionRoleArn": "$EXECUTION_ROLE_ARN
", "networkMode": "bridge", "containerDefinitions": [ { "name": "ecs-cwagent", "image": "$IMAGE", "essential": true, "portMappings": [ { "containerPort": 4316, "hostPort": 4316 }, { "containerPort": 2000, "hostPort": 2000 } ], "secrets": [ { "name": "CW_CONFIG_CONTENT", "valueFrom": "ecs-cwagent" } ], "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-create-group": "true", "awslogs-group": "/ecs/ecs-cwagent", "awslogs-region": "$REGION
", "awslogs-stream-prefix": "ecs" } } } ], "requiresCompatibilities": [ "EC2" ], "cpu": "128", "memory": "64" }
Étape 5 : Instrumenter votre application
L'étape suivante consiste à instrumenter votre application pour les signaux d'application.
- Java
-
Pour instrumenter votre application sur Amazon ECS avec l' CloudWatch agent
Spécifiez d’abord un montage lié. Le volume sera utilisé pour partager des fichiers entre conteneurs au cours des prochaines étapes. Vous utiliserez ce montage lié plus tard dans cette procédure.
"volumes": [ { "name": "opentelemetry-auto-instrumentation" } ]
Ajoutez un nouveau conteneur
init
à la définition de tâche de votre application. Remplacez$IMAGE
avec la dernière image du référentiel d'ECRimages de AWS Distro for OpenTelemetry Amazon. { "name": "init", "image": "
$IMAGE
", "essential": false, "command": [ "cp", "/javaagent.jar", "/otel-auto-instrumentation/javaagent.jar" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }Ajoutez les variables d’environnement suivantes à votre conteneur d’application. Vous devez utiliser la version 1.32.2 ou ultérieure de l'agent AWS Distro for OpenTelemetry Auto-Instrumentation pour Java
. Variable d'environnement Configuration pour activer Application Signals OTEL_RESOURCE_ATTRIBUTES
Spécifiez les informations suivantes sous forme de paires clé-valeur :
service.name
défini le nom du service. Il sera affiché comme nom de service pour votre application dans les tableaux de bord d’Application Signals. Si vous ne fournissez pas de valeur pour cette clé, la valeur par défautUnknownService
est utilisée.deployment.environment
définit l’environnement dans lequel l’application s’exécute. Cet environnement sera affiché comme l’environnement hébergé de votre application dans les tableaux de bord Application Signals. Si vous ne le spécifiez pas, la valeur par défaut degeneric:default
est utilisée.
Cette clé d'attribut est utilisée uniquement par Application Signals et est convertie en annotations de trace X-Ray et en dimensions CloudWatch métriques.
(Facultatif) Pour activer la corrélation des journaux pour les signaux d'application, définissez une variable
aws.log.group.names
d'environnement supplémentaire comme nom de groupe de journaux pour le journal de votre application. Ce faisant, les traces et les métriques de votre application peuvent être corrélées aux entrées de journal pertinentes du groupe de journaux. Pour cette variable, remplacez$YOUR_APPLICATION_LOG_GROUP
avec les noms des groupes de journaux de votre application. Si vous avez plusieurs groupes de journaux, vous pouvez utiliser une esperluette (&
) pour les séparer comme dans cet exemple :.aws.log.group.names=log-group-1&log-group-2
Pour activer la corrélation entre les métriques et les logs, il suffit de définir cette variable environnementale actuelle. Pour de plus amples informations, veuillez consulter Activer la corrélation entre les métriques et les journaux. Pour activer la corrélation entre le suivi et le journal, vous devez également modifier la configuration de journalisation dans votre application. Pour de plus amples informations, veuillez consulter Activer la corrélation entre le traçage et le journal.OTEL_AWS_APPLICATION_SIGNALS_ENABLED
Réglez cette
true
option pour que votre conteneur commence à envoyer des traces et des CloudWatch métriques X-Ray à Application Signals.OTEL_METRICS_EXPORTER
Définissez sur
none
pour désactiver les autres exportateurs de mesures.OTEL_LOGS_EXPORTER
Réglez sur
none
pour désactiver les autres exportateurs de journaux.OTEL_EXPORTER_OTLP_PROTOCOL
Réglez sur
http/protobuf
pour envoyer des métriques et des traces aux signaux d'application à l'aide deHTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Envoie des métriques au conteneur de CloudWatch démons.
Pour les applications exécutées en
host
mode, définissez ce paramètre surhttp://localhost:4316/v1/metrics
.Pour les applications exécutées en
bridge
mode ou enawsvpc
mode, définissez ce paramètre sur http ://CW_CONTAINER_IP
:4316/v1/metrics, oùCW_CONTAINER_IP
est l'adresse IP privée de l'instance de EC2 conteneur. Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Envoie des traces au conteneur de CloudWatch démons.
Pour les applications exécutées en
host
mode, définissez ce paramètre surhttp://localhost:4316/v1/traces
.Pour les applications exécutées en
bridge
mode ou enawsvpc
mode, définissez ce paramètre sur http ://CW_CONTAINER_IP
:4316/v1/traces, oùCW_CONTAINER_IP
est l'adresse IP privée de l'instance de EC2 conteneur. Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_TRACES_SAMPLER
Réglez ce paramètre
xray
sur pour définir X-Ray comme échantillonneur de traces.OTEL_PROPAGATORS
xray
Défini comme l'un des propagateurs.JAVA_TOOL_OPTIONS
Paramétré pour
" -javaagent:$
remplacerAWS_ADOT_JAVA_INSTRUMENTATION_PATH
"AWS_ADOT_JAVA_INSTRUMENTATION_PATH
avec le chemin où est stocké l'agent d'auto-instrumentation de AWS Distro for OpenTelemetry Java. Par exemple,/otel-auto-instrumentation/javaagent.jar
Montez le volume
opentelemetry-auto-instrumentation
que vous avez défini à l’étape 1 de cette procédure. Si vous n'avez pas besoin d'activer la corrélation des journaux avec les métriques et les traces, utilisez l'exemple suivant pour une application Java. Si vous souhaitez activer la corrélation des logs, passez plutôt à l'étape suivante.{ "name": "
my-app
", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME
" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "JAVA_TOOL_OPTIONS", "value": " -javaagent:/otel-auto-instrumentation/javaagent.jar" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }
- Python
-
Avant d'activer les signaux d'application pour vos applications Python, tenez compte des points suivants.
Dans certaines applications conteneurisées,
PYTHONPATH
l'absence d'une variable d'environnement peut parfois empêcher l'application de démarrer. Pour résoudre ce problème, veillez à définir la variable d'PYTHONPATH
environnement à l'emplacement du répertoire de travail de votre application. Cela est dû à un problème connu lié à l' OpenTelemetry auto-instrumentation. Pour plus d'informations sur ce problème, voir le paramètre d'auto-instrumentation Python de n'PYTHONPATHest pas conforme. Pour les applications Django, des configurations supplémentaires sont requises, qui sont décrites dans la documentation OpenTelemetry Python
. Utilisez le
--noreload
drapeau pour empêcher le rechargement automatique.Définissez la variable d'
DJANGO_SETTINGS_MODULE
environnement sur l'emplacement dusettings.py
fichier de votre application Django. Cela garantit que OpenTelemetry vous pouvez accéder et intégrer correctement vos paramètres Django.
Si vous utilisez un WSGI serveur pour votre application Python, outre les étapes décrites dans cette section, consultez les informations Aucune donnée de signal d'application pour une application Python utilisant un WSGI serveur permettant de faire fonctionner les signaux d'application.
Pour instrumenter votre application Python sur Amazon ECS avec l' CloudWatch agent
Spécifiez d’abord un montage lié. Le volume sera utilisé pour partager des fichiers entre conteneurs au cours des prochaines étapes. Vous utiliserez ce montage lié plus tard dans cette procédure.
"volumes": [ { "name": "opentelemetry-auto-instrumentation-python" } ]
Ajoutez un nouveau conteneur
init
à la définition de tâche de votre application. Remplacez$IMAGE
avec la dernière image du référentiel d'ECRimages de AWS Distro for OpenTelemetry Amazon. { "name": "init", "image": "$IMAGE", "essential": false, "command": [ "cp", "-a", "/autoinstrumentation/.", "/otel-auto-instrumentation-python" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-python", "containerPath": "/otel-auto-instrumentation-python", "readOnly": false } ] }
Ajoutez les variables d’environnement suivantes à votre conteneur d’application.
Variable d'environnement Configuration pour activer Application Signals OTEL_RESOURCE_ATTRIBUTES
Spécifiez les informations suivantes sous forme de paires clé-valeur :
service.name
défini le nom du service. Il sera affiché comme nom de service pour votre application dans les tableaux de bord d’Application Signals. Si vous ne fournissez pas de valeur pour cette clé, la valeur par défautUnknownService
est utilisée.deployment.environment
définit l’environnement dans lequel l’application s’exécute. Cet environnement sera affiché comme l’environnement hébergé de votre application dans les tableaux de bord Application Signals. Si vous ne le spécifiez pas, la valeur par défaut degeneric:default
est utilisée.
Cette clé d'attribut est utilisée uniquement par Application Signals et est convertie en annotations de trace X-Ray et en dimensions CloudWatch métriques.
(Facultatif) Pour activer la corrélation des journaux pour les signaux d'application, définissez une variable
aws.log.group.names
d'environnement supplémentaire comme nom de groupe de journaux pour le journal de votre application. Ce faisant, les traces et les métriques de votre application peuvent être corrélées aux entrées de journal pertinentes du groupe de journaux. Pour cette variable, remplacez$YOUR_APPLICATION_LOG_GROUP
avec les noms des groupes de journaux de votre application. Si vous avez plusieurs groupes de journaux, vous pouvez utiliser une esperluette (&
) pour les séparer comme dans cet exemple :.aws.log.group.names=log-group-1&log-group-2
Pour activer la corrélation entre les métriques et les logs, il suffit de définir cette variable environnementale actuelle. Pour de plus amples informations, veuillez consulter Activer la corrélation entre les métriques et les journaux. Pour activer la corrélation entre le suivi et le journal, vous devez également modifier la configuration de journalisation dans votre application. Pour de plus amples informations, veuillez consulter Activer la corrélation entre le traçage et le journal.OTEL_AWS_APPLICATION_SIGNALS_ENABLED
Réglez cette
true
option pour que votre conteneur commence à envoyer des traces et des CloudWatch métriques X-Ray à Application Signals.OTEL_METRICS_EXPORTER
Définissez sur
none
pour désactiver les autres exportateurs de mesures.OTEL_EXPORTER_OTLP_PROTOCOL
Réglez sur
http/protobuf
pour envoyer des métriques et des traces à CloudWatch l'utilisateurHTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Envoie des métriques au conteneur de CloudWatch démons.
Pour les applications exécutées en
host
mode, définissez ce paramètre surhttp://localhost:4316/v1/metrics
.Pour les applications exécutées en
bridge
mode ou enawsvpc
mode, définissez ce paramètre sur http ://CW_CONTAINER_IP
:4316/v1/metrics, oùCW_CONTAINER_IP
est l'adresse IP privée de l'instance de EC2 conteneur. Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Envoie des traces au conteneur de CloudWatch démons.
Pour les applications exécutées en
host
mode, définissez ce paramètre surhttp://localhost:4316/v1/traces
.Pour les applications exécutées en
bridge
mode ou enawsvpc
mode, définissez ce paramètre sur http ://CW_CONTAINER_IP
:4316/v1/traces, oùCW_CONTAINER_IP
est l'adresse IP privée de l'instance de EC2 conteneur. Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_TRACES_SAMPLER
Réglez ce paramètre
xray
sur pour définir X-Ray comme échantillonneur de traces.OTEL_TRACES_SAMPLER_ARG
Définit le point de terminaison de l'échantillonneur de traces.
Pour les applications exécutées en
host
mode, définissez ce paramètre surhttp://localhost:2000
.Pour les applications exécutées en
bridge
mode ou enawsvpc
mode, définissez ce paramètre surhttp://
, oùCW_CONTAINER_IP
:2000CW_CONTAINER_IP
est l'adresse IP privée de l'instance de EC2 conteneur. Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_PROPAGATORS
Ajoutez
xray
comme l'un des propagateurs.OTEL_PYTHON_DISTRO
Définissez sur
aws_distro
pour utiliser l'instrumentation ADOT Python.OTEL_PYTHON_CONFIGURATOR
Définissez sur
aws_configuration
pour utiliser la configuration ADOT Python.PYTHONPATH
Remplacez
$APP_PATH
par l'emplacement du répertoire de travail de l'application dans le conteneur. Cela est nécessaire pour que l'interpréteur Python puisse trouver les modules de votre application.DJANGO_SETTINGS_MODULE
Nécessaire uniquement pour les applications Django. Réglez-le à l'emplacement du
settings.py
fichier de votre application Django. Remplacer$PATH_TO_SETTINGS
.Montez le volume
opentelemetry-auto-instrumentation-python
que vous avez défini à l’étape 1 de cette procédure. Si vous n'avez pas besoin d'activer la corrélation des logs avec les métriques et les traces, utilisez l'exemple suivant pour une application Python. Si vous souhaitez activer la corrélation des logs, passez plutôt à l'étape suivante.{ "name": "
my-app
", ... "environment": [ { "name": "PYTHONPATH", "value": "/otel-auto-instrumentation-python/opentelemetry/instrumentation/auto_instrumentation:$APP_PATH:/otel-auto-instrumentation-python" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP
:2000" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_PYTHON_DISTRO", "value": "aws_distro" }, { "name": "OTEL_PYTHON_CONFIGURATOR", "value": "aws_configurator" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/metrics" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME
" }, { "name": "DJANGO_SETTINGS_MODULE", "value": "$PATH_TO_SETTINGS
.settings" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-python", "containerPath": "/otel-auto-instrumentation-python", "readOnly": false } ] }(Facultatif) Pour activer la corrélation des journaux, procédez comme suit avant de monter le volume. Dans
OTEL_RESOURCE_ATTRIBUTES
, définissez une variable d'environnement supplémentaireaws.log.group.names
pour les groupes de journaux de votre application. Ce faisant, les traces et les métriques de votre application peuvent être corrélées aux entrées de journal pertinentes de ces groupes de journaux. Pour cette variable, remplacez$YOUR_APPLICATION_LOG_GROUP
avec les noms des groupes de journaux de votre application. Si vous avez plusieurs groupes de journaux, vous pouvez utiliser une esperluette (&
) pour les séparer comme dans cet exemple :.aws.log.group.names=log-group-1&log-group-2
Pour activer la corrélation entre les métriques et les logs, il suffit de définir cette variable environnementale actuelle. Pour de plus amples informations, veuillez consulter Activer la corrélation entre les métriques et les journaux. Pour activer la corrélation entre le suivi et le journal, vous devez également modifier la configuration de journalisation dans votre application. Pour de plus amples informations, veuillez consulter Activer la corrélation entre le traçage et le journal.Voici un exemple. Pour activer la corrélation des journaux, utilisez cet exemple lorsque vous montez le volume
opentelemetry-auto-instrumentation-python
que vous avez défini à l'étape 1 de cette procédure.{ "name": "
my-app
", ... "environment": [ { "name": "PYTHONPATH", "value": "/otel-auto-instrumentation-python/opentelemetry/instrumentation/auto_instrumentation:$APP_PATH:/otel-auto-instrumentation-python" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP
:2000" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_PYTHON_DISTRO", "value": "aws_distro" }, { "name": "OTEL_PYTHON_CONFIGURATOR", "value": "aws_configurator" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/metrics" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,service.name=$SVC_NAME
" }, { "name": "DJANGO_SETTINGS_MODULE", "value": "$PATH_TO_SETTINGS
.settings" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-python", "containerPath": "/otel-auto-instrumentation-python", "readOnly": false } ] }
- .NET
-
Pour instrumenter votre application sur Amazon ECS avec l' CloudWatch agent
Spécifiez d’abord un montage lié. Le volume sera utilisé pour partager des fichiers entre conteneurs au cours des prochaines étapes. Vous utiliserez ce montage lié plus tard dans cette procédure.
"volumes": [ { "name": "opentelemetry-auto-instrumentation" } ]
Ajoutez un nouveau conteneur
init
à la définition de tâche de votre application. Remplacez$IMAGE
avec la dernière image du référentiel d'ECRimages de AWS Distro for OpenTelemetry Amazon. Pour une instance de conteneur Linux, utilisez ce qui suit.
{ "name": "init", "image": "
$IMAGE
", "essential": false, "command": [ "cp", "-a", "autoinstrumentation/.", "/otel-auto-instrumentation" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }Pour une instance de conteneur Windows Server, utilisez ce qui suit.
{ "name": "init", "image": "
$IMAGE
", "essential": false, "command": [ "CMD", "/c", "xcopy", "/e", "C:\\autoinstrumentation\\*", "C:\\otel-auto-instrumentation", "&&", "icacls", "C:\\otel-auto-instrumentation", "/grant", "*S-1-1-0:R", "/T" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "C:\\otel-auto-instrumentation", "readOnly": false } ] }Ajoutez une dépendance au
init
conteneur pour vous assurer que le conteneur se termine avant le démarrage de votre conteneur d'applications."dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
Ajoutez les variables d’environnement suivantes à votre conteneur d’application. Vous devez utiliser la version 1.1.0 ou ultérieure de AWS Distro pour l'agent d' OpenTelemetryauto-instrumentation pour. NET
. Variable d'environnement Configuration pour activer Application Signals OTEL_RESOURCE_ATTRIBUTES
Spécifiez les informations suivantes sous forme de paires clé-valeur :
service.name
défini le nom du service. Il sera affiché comme nom de service pour votre application dans les tableaux de bord d’Application Signals. Si vous ne fournissez pas de valeur pour cette clé, la valeur par défautUnknownService
est utilisée.deployment.environment
définit l’environnement dans lequel l’application s’exécute. Cet environnement sera affiché comme l’environnement hébergé de votre application dans les tableaux de bord Application Signals. Si vous ne le spécifiez pas, la valeur par défaut degeneric:default
est utilisée.
Cette clé d'attribut est utilisée uniquement par Application Signals et est convertie en annotations de trace X-Ray et en dimensions CloudWatch métriques.
OTEL_AWS_APPLICATION_SIGNALS_ENABLED
Réglez cette
true
option pour que votre conteneur commence à envoyer des traces et des CloudWatch métriques X-Ray à Application Signals.OTEL_METRICS_EXPORTER
Définissez sur
none
pour désactiver les autres exportateurs de mesures.OTEL_LOGS_EXPORTER
Réglez sur
none
pour désactiver les autres exportateurs de journaux.OTEL_EXPORTER_OTLP_PROTOCOL
Réglez sur
http/protobuf
pour envoyer des métriques et des traces aux signaux d'application à l'aide deHTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Envoie des métriques au conteneur de CloudWatch démons.
Pour les applications exécutées en
host
mode, définissez ce paramètre surhttp://localhost:4316/v1/metrics
.Pour les applications exécutées en
bridge
mode ou enawsvpc
mode, définissez ce paramètre sur http ://CW_CONTAINER_IP
:4316/v1/metrics, oùCW_CONTAINER_IP
est l'adresse IP privée de l'instance de EC2 conteneur. Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_EXPORTER_OTLP_ENDPOINT
Envoie des traces au conteneur de CloudWatch démons.
Pour les applications exécutées en
host
mode, définissez ce paramètre surhttp://localhost:4316
.Pour les applications exécutées en
bridge
mode ou enawsvpc
mode, définissez ce paramètre sur http ://CW_CONTAINER_IP
4:316, oùCW_CONTAINER_IP
est l'adresse IP privée de l'instance de EC2 conteneur. Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Envoie des traces au conteneur de CloudWatch démons.
Pour les applications exécutées en
host
mode, définissez ce paramètre surhttp://localhost:4316/v1/traces
.Pour les applications exécutées en
bridge
mode ou enawsvpc
mode, définissez ce paramètre sur http ://CW_CONTAINER_IP
:4316/v1/traces, oùCW_CONTAINER_IP
est l'adresse IP privée de l'instance de EC2 conteneur. Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_TRACES_SAMPLER_ARG
Définit le point de terminaison de l'échantillonneur de traces.
Pour les applications exécutées en
host
mode, définissez ce paramètre surhttp://localhost:2000
.Pour les applications exécutées en
bridge
mode ou enawsvpc
mode, définissez ce paramètre surhttp://
, oùCW_CONTAINER_IP
:2000CW_CONTAINER_IP
est l'adresse IP privée de l'instance de EC2 conteneur. Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_DOTNET_AUTO_HOME
Réglez sur l'emplacement d'installation deADOT. NETinstrumentation automatique.
OTEL_DOTNET_AUTO_PLUGINS
Réglez sur
AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation
pour activer le plug-in Application Signals.CORECLR_ENABLE_PROFILING
Définissez sur
1
pour activer le profileur.CORECLR_PROFILER
Défini sur
{918728DD-259F-4A6A-AC2B-B85E1B658318}
comme CLSID du profileur.CORECLR_PROFILER_PATH
Définissez ce paramètre sur le chemin du profileur.
Sur Linux, réglez-le sur
${OTEL_DOTNET_AUTO_HOME}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so
Sur Windows Server, définissez-le sur
${OTEL_DOTNET_AUTO_HOME}/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll
DOTNET_ADDITIONAL_DEPS
Définissez ce paramètre sur le chemin du dossier de
${OTEL_DOTNET_AUTO_HOME}/AdditionalDeps
.DOTNET_SHARED_STORE
Définissez ce paramètre sur le chemin du dossier de
${OTEL_DOTNET_AUTO_HOME}/store
.DOTNET_STARTUP_HOOKS
Définissez ce paramètre sur le chemin de l'assembly géré
${OTEL_DOTNET_AUTO_HOME}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll
à exécuter avant le point d'entrée de l'application principale.Montez le volume
opentelemetry-auto-instrumentation
que vous avez défini à l’étape 1 de cette procédure. Pour Linux, utilisez ce qui suit.{ "name": "
my-app
", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "CORECLR_ENABLE_PROFILING", "value": "1" }, { "name": "CORECLR_PROFILER", "value": "{918728DD-259F-4A6A-AC2B-B85E1B658318}" }, { "name": "CORECLR_PROFILER_PATH", "value": "/otel-auto-instrumentation/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so" }, { "name": "DOTNET_ADDITIONAL_DEPS", "value": "/otel-auto-instrumentation/AdditionalDeps" }, { "name": "DOTNET_SHARED_STORE", "value": "/otel-auto-instrumentation/store" }, { "name": "DOTNET_STARTUP_HOOKS", "value": "/otel-auto-instrumentation/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll" }, { "name": "OTEL_DOTNET_AUTO_HOME", "value": "/otel-auto-instrumentation" }, { "name": "OTEL_DOTNET_AUTO_PLUGINS", "value": "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,service.name=aws-otel-integ-test" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP
:2000" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }Pour Windows Server, utilisez ce qui suit.
{ "name": "
my-app
", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME" }, { "name": "CORECLR_ENABLE_PROFILING", "value": "1" }, { "name": "CORECLR_PROFILER", "value": "{918728DD-259F-4A6A-AC2B-B85E1B658318}" }, { "name": "CORECLR_PROFILER_PATH", "value": "C:\\otel-auto-instrumentation\\win-x64\\OpenTelemetry.AutoInstrumentation.Native.dll" }, { "name": "DOTNET_ADDITIONAL_DEPS", "value": "C:\\otel-auto-instrumentation\\AdditionalDeps" }, { "name": "DOTNET_SHARED_STORE", "value": "C:\\otel-auto-instrumentation\\store" }, { "name": "DOTNET_STARTUP_HOOKS", "value": "C:\\otel-auto-instrumentation\\net\\OpenTelemetry.AutoInstrumentation.StartupHook.dll" }, { "name": "OTEL_DOTNET_AUTO_HOME", "value": "C:\\otel-auto-instrumentation" }, { "name": "OTEL_DOTNET_AUTO_PLUGINS", "value": "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation" }, { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,service.name=aws-otel-integ-test" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP
:2000" }, { "name": "OTEL_PROPAGATORS", "value": "tracecontext,baggage,b3,xray" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "C:\\otel-auto-instrumentation", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }
- Node.js
-
Note
Si vous activez les signaux d'application pour une application Node.js avecESM, consultez Setting up a Node.js application with the ESM module format avant de commencer ces étapes.
Pour instrumenter votre application sur Amazon ECS avec l' CloudWatch agent
Spécifiez d’abord un montage lié. Le volume sera utilisé pour partager des fichiers entre conteneurs au cours des prochaines étapes. Vous utiliserez ce montage lié plus tard dans cette procédure.
"volumes": [ { "name": "opentelemetry-auto-instrumentation-node" } ]
Ajoutez un nouveau conteneur
init
à la définition de tâche de votre application. Remplacez$IMAGE
avec la dernière image du référentiel d'ECRimages de AWS Distro for OpenTelemetry Amazon. { "name": "init", "image": "
$IMAGE
", "essential": false, "command": [ "cp", "-a", "/autoinstrumentation/.", "/otel-auto-instrumentation-node" ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ], }Ajoutez les variables d’environnement suivantes à votre conteneur d’application.
Variable d'environnement Configuration pour activer Application Signals OTEL_RESOURCE_ATTRIBUTES
Spécifiez les informations suivantes sous forme de paires clé-valeur :
service.name
défini le nom du service. Il sera affiché comme nom de service pour votre application dans les tableaux de bord d’Application Signals. Si vous ne fournissez pas de valeur pour cette clé, la valeur par défautUnknownService
est utilisée.deployment.environment
définit l’environnement dans lequel l’application s’exécute. Cet environnement sera affiché comme l’environnement hébergé de votre application dans les tableaux de bord Application Signals. Si vous ne le spécifiez pas, la valeur par défaut degeneric:default
est utilisée.
Cette clé d'attribut est utilisée uniquement par Application Signals et est convertie en annotations de trace X-Ray et en dimensions CloudWatch métriques.
(Facultatif) Pour activer la corrélation des journaux pour les signaux d'application, définissez une variable
aws.log.group.names
d'environnement supplémentaire comme nom de groupe de journaux pour le journal de votre application. Ce faisant, les traces et les métriques de votre application peuvent être corrélées aux entrées de journal pertinentes du groupe de journaux. Pour cette variable, remplacez$YOUR_APPLICATION_LOG_GROUP
avec les noms des groupes de journaux de votre application. Si vous avez plusieurs groupes de journaux, vous pouvez utiliser une esperluette (&
) pour les séparer comme dans cet exemple :.aws.log.group.names=log-group-1&log-group-2
Pour activer la corrélation entre les métriques et les logs, il suffit de définir cette variable environnementale actuelle. Pour de plus amples informations, veuillez consulter Activer la corrélation entre les métriques et les journaux. Pour activer la corrélation entre le suivi et le journal, vous devez également modifier la configuration de journalisation dans votre application. Pour de plus amples informations, veuillez consulter Activer la corrélation entre le traçage et le journal.OTEL_AWS_APPLICATION_SIGNALS_ENABLED
Réglez cette
true
option pour que votre conteneur commence à envoyer des traces et des CloudWatch métriques X-Ray à Application Signals.OTEL_METRICS_EXPORTER
Définissez sur
none
pour désactiver les autres exportateurs de mesures.OTEL_LOGS_EXPORTER
Réglez sur
none
pour désactiver les autres exportateurs de journaux.OTEL_EXPORTER_OTLP_PROTOCOL
Réglez sur pour
http/protobuf
envoyer des métriques et des traces aux signaux d'application à l'aide deOTLP/HTTPet protobuf.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT
Envoie des métriques au conteneur de CloudWatch démons.
Pour les applications exécutées en
host
mode, définissez ce paramètre surhttp://localhost:4316/v1/metrics
.Pour les applications exécutées en
bridge
mode ou enawsvpc
mode, définissez ce paramètre sur http ://CW_CONTAINER_IP
:4316/v1/metrics, oùCW_CONTAINER_IP
est l'adresse IP privée de l'instance de EC2 conteneur. Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
Envoie des traces au conteneur de CloudWatch démons.
Pour les applications exécutées en
host
mode, définissez ce paramètre surhttp://localhost:4316/v1/traces
.Pour les applications exécutées en
bridge
mode ou enawsvpc
mode, définissez ce paramètre sur http ://CW_CONTAINER_IP
:4316/v1/traces, oùCW_CONTAINER_IP
est l'adresse IP privée de l'instance de EC2 conteneur. Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_TRACES_SAMPLER
Réglez ce paramètre
xray
sur pour définir X-Ray comme échantillonneur de traces.OTEL_TRACES_SAMPLER_ARG
Définit le point de terminaison de l'échantillonneur de traces.
Pour les applications exécutées en
host
mode, définissez ce paramètre surhttp://localhost:2000
.Pour les applications exécutées en
bridge
mode ou enawsvpc
mode, définissez ce paramètre surhttp://
, oùCW_CONTAINER_IP
:2000CW_CONTAINER_IP
est l'adresse IP privée de l'instance de EC2 conteneur. Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_PROPAGATORS
xray
Défini comme l'un des propagateurs.NODE_OPTIONS
Définie sur
--require
. RemplacezAWS_ADOT_NODE_INSTRUMENTATION_PATH
AWS_ADOT_NODE_INSTRUMENTATION_PATH
avec le chemin où est stockée l'instrumentation automatique de AWS Distro for OpenTelemetry Node.js. Par exemple,/otel-auto-instrumentation-node/autoinstrumentation.js
Montez le volume
opentelemetry-auto-instrumentation-node
que vous avez défini à l’étape 1 de cette procédure. Si vous n'avez pas besoin d'activer la corrélation des journaux avec les métriques et les traces, utilisez l'exemple suivant pour une application Node.js. Si vous souhaitez activer la corrélation des logs, passez plutôt à l'étape suivante.Pour votre conteneur d'applications, ajoutez une dépendance au
init
conteneur pour vous assurer que le conteneur se termine avant le démarrage de votre conteneur d'applications.{ "name": "
my-app
", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "service.name=$SVC_NAME
" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP
:2000" }, { "name": "NODE_OPTIONS", "value": "--require /otel-auto-instrumentation-node/autoinstrumentation.js" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }(Facultatif) Pour activer la corrélation des journaux, procédez comme suit avant de monter le volume. Dans
OTEL_RESOURCE_ATTRIBUTES
, définissez une variable d'environnement supplémentaireaws.log.group.names
pour les groupes de journaux de votre application. Ce faisant, les traces et les métriques de votre application peuvent être corrélées aux entrées de journal pertinentes de ces groupes de journaux. Pour cette variable, remplacez$YOUR_APPLICATION_LOG_GROUP
avec les noms des groupes de journaux de votre application. Si vous avez plusieurs groupes de journaux, vous pouvez utiliser une esperluette (&
) pour les séparer comme dans cet exemple :.aws.log.group.names=log-group-1&log-group-2
Pour activer la corrélation entre les métriques et les logs, il suffit de définir cette variable environnementale actuelle. Pour de plus amples informations, veuillez consulter Activer la corrélation entre les métriques et les journaux. Pour activer la corrélation entre le suivi et le journal, vous devez également modifier la configuration de journalisation dans votre application. Pour de plus amples informations, veuillez consulter Activer la corrélation entre le traçage et le journal.Voici un exemple. Utilisez cet exemple pour activer la corrélation des journaux lorsque vous montez le volume
opentelemetry-auto-instrumentation
que vous avez défini à l'étape 1 de cette procédure.{ "name": "
my-app
", ... "environment": [ { "name": "OTEL_RESOURCE_ATTRIBUTES", "value": "aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP
,service.name=$SVC_NAME
" }, { "name": "OTEL_LOGS_EXPORTER", "value": "none" }, { "name": "OTEL_METRICS_EXPORTER", "value": "none" }, { "name": "OTEL_EXPORTER_OTLP_PROTOCOL", "value": "http/protobuf" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_ENABLED", "value": "true" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://CW_CONTAINER_IP
:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://CW_CONTAINER_IP
:2000" }, { "name": "NODE_OPTIONS", "value": "--require /otel-auto-instrumentation-node/autoinstrumentation.js" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ] }
Configuration d'une application Node.js au format ESM module
Nous fournissons un support limité pour les applications Node.js au format ESM module. Pour plus de détails, consultez Limitations connues concernant Node.js avec ESM.
Pour le format du ESM module, l'utilisation du
init
conteneur pour injecter l'instrumentation Node.js SDK ne s'applique pas. Pour activer les signaux d'application pour Node.js avecESM, sautez les étapes 1 et 2 de la procédure précédente et procédez comme suit.Pour activer les signaux d'application pour une application Node.js avec ESM
Installez les dépendances pertinentes dans votre application Node.js pour l'autoinstrumentation :
npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0
Dans les étapes 4 et 5 de la procédure précédente, retirez le montage du volume
opentelemetry-auto-instrumentation-node
:"mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-node", "containerPath": "/otel-auto-instrumentation-node", "readOnly": false } ]
Remplacez les options du nœud par les options suivantes.
{ "name": "NODE_OPTIONS", "value": "--import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs" }
Étape 6 : Déployez votre application
Créez une nouvelle révision de votre définition de tâche et déployez-la dans votre cluster d’applications. Vous devriez voir deux conteneurs dans la tâche nouvellement créée :
init
— Un conteneur requis pour l'initialisation des signaux d'application
— Voici l'exemple de conteneur d'applications présenté dans notre documentation. Dans vos charges de travail réelles, ce conteneur spécifique n'existe peut-être pas ou peut être remplacé par vos propres conteneurs de services.my-app