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
Vous devez d'abord activer Application Signals dans votre compte. Si ce n'est pas le cas, voyezActivez les signaux d'application dans votre compte.
Étape 2 : créer un rôle IAM
Vous devez créer un rôle IAM. Si vous avez déjà créé ce rôle, vous devrez peut-être y ajouter des autorisations.
-
Rôle de tâche ECS : 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 rôles IAM, consultez Création de rôles IAM.
É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": {} } } }
Chargez ensuite la configuration de l’agent dans le magasin de paramètres SSM. Pour ce faire, entrez la commande suivante : Dans le fichier, remplacez-le $REGION par le nom réel 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. $REGIONRemplacez-le par le nom actuel de votre région. Remplacez $TASK_ROLE_ARN et $EXECUTION_ROLE_ARN par les rôles IAM que vous avez préparés. Étape 2 : créer un rôle IAM $IMAGERemplacez-le par 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 ECR
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 à l'aide de 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.$IMAGERemplacez-la par la dernière image du référentiel d'images AWS Distro for OpenTelemetry Amazon ECR.{ "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 une dépendance au
initconteneur pour vous assurer que ce 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.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_ATTRIBUTESSpécifiez les informations suivantes sous forme de paires clé-valeur :
service.namedé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éfautUnknownServiceest utilisée.deployment.environmentdé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:defaultest 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.namesd'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-la$YOUR_APPLICATION_LOG_GROUPpar 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-2Pour 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_ENABLEDRéglez cette
trueoption pour que votre conteneur commence à envoyer des traces et des CloudWatch métriques X-Ray à Application Signals.OTEL_METRICS_EXPORTERDéfinissez sur
nonepour désactiver les autres exportateurs de mesures.OTEL_LOGS_EXPORTERRéglez sur
nonepour désactiver les autres exportateurs de journaux.OTEL_EXPORTER_OTLP_PROTOCOLDéfinissez ce paramètre
http/protobufsur pour envoyer des métriques et des traces aux signaux d'application via HTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTEnvoie des métriques au conteneur de CloudWatch démons.
Pour les applications exécutées en
hostmode, définissez ce paramètre surhttp://localhost:4316/v1/metrics.Pour les applications exécutées en
bridgemode ou enawsvpcmode, définissez ce paramètre sur http : //:4316/v1/metricsCW_CONTAINER_IP, où estCW_CONTAINER_IPl'adresse IP privée de l'instance de conteneur. EC2 Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTEnvoie des traces au conteneur de CloudWatch démons.
Pour les applications exécutées en
hostmode, définissez ce paramètre surhttp://localhost:4316/v1/traces.Pour les applications exécutées en
bridgemode ou enawsvpcmode, définissez ce paramètre sur http : //:4316/v1/tracesCW_CONTAINER_IP, où estCW_CONTAINER_IPl'adresse IP privée de l'instance de conteneur. EC2 Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_TRACES_SAMPLERRéglez ce paramètre
xraysur pour définir X-Ray comme échantillonneur de traces.OTEL_PROPAGATORSxrayDéfini comme l'un des propagateurs.JAVA_TOOL_OPTIONSDéfini sur
" -javaagent:$RemplacerAWS_ADOT_JAVA_INSTRUMENTATION_PATH"AWS_ADOT_JAVA_INSTRUMENTATION_PATHpar le chemin dans lequel l'agent d'auto-instrumentation de AWS Distro for OpenTelemetry Java est stocké. Par exemple,/otel-auto-instrumentation/javaagent.jarMontez le volume
opentelemetry-auto-instrumentationque 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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "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,
PYTHONPATHl'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'PYTHONPATHenvironnement à 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, consultez la section Le paramètre d'auto-instrumentation Python de PYTHONPATH n'est pas conforme. Pour les applications Django, des configurations supplémentaires sont requises, qui sont décrites dans la documentation OpenTelemetry Python
. Utilisez le
--noreloaddrapeau pour empêcher le rechargement automatique.Définissez la variable d'
DJANGO_SETTINGS_MODULEenvironnement sur l'emplacement dusettings.pyfichier de votre application Django. Cela garantit que OpenTelemetry vous pouvez accéder et intégrer correctement vos paramètres Django.
Si vous utilisez un serveur WSGI pour votre application Python, outre les étapes suivantes décrites dans cette section, consultez les informations Aucune donnée de signal d'application pour une application Python utilisant un serveur WSGI 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.$IMAGERemplacez-la par la dernière image du référentiel d'images AWS Distro for OpenTelemetry Amazon ECR.{ "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 une dépendance au
initconteneur pour vous assurer que ce 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.
Variable d'environnement Configuration pour activer Application Signals OTEL_RESOURCE_ATTRIBUTESSpécifiez les informations suivantes sous forme de paires clé-valeur :
service.namedé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éfautUnknownServiceest utilisée.deployment.environmentdé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:defaultest 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.namesd'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-la$YOUR_APPLICATION_LOG_GROUPpar 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-2Pour 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_ENABLEDRéglez cette
trueoption pour que votre conteneur commence à envoyer des traces et des CloudWatch métriques X-Ray à Application Signals.OTEL_METRICS_EXPORTERDéfinissez sur
nonepour désactiver les autres exportateurs de mesures.OTEL_EXPORTER_OTLP_PROTOCOLRéglez
http/protobufsur pour envoyer des métriques et des traces CloudWatch via HTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTEnvoie des métriques au conteneur de CloudWatch démons.
Pour les applications exécutées en
hostmode, définissez ce paramètre surhttp://localhost:4316/v1/metrics.Pour les applications exécutées en
bridgemode ou enawsvpcmode, définissez ce paramètre sur http : //:4316/v1/metricsCW_CONTAINER_IP, où estCW_CONTAINER_IPl'adresse IP privée de l'instance de conteneur. EC2 Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTEnvoie des traces au conteneur de CloudWatch démons.
Pour les applications exécutées en
hostmode, définissez ce paramètre surhttp://localhost:4316/v1/traces.Pour les applications exécutées en
bridgemode ou enawsvpcmode, définissez ce paramètre sur http : //:4316/v1/tracesCW_CONTAINER_IP, où estCW_CONTAINER_IPl'adresse IP privée de l'instance de conteneur. EC2 Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_TRACES_SAMPLERRéglez ce paramètre
xraysur pour définir X-Ray comme échantillonneur de traces.OTEL_TRACES_SAMPLER_ARGDéfinit le point de terminaison de l'échantillonneur de traces.
Pour les applications exécutées en
hostmode, définissez ce paramètre surhttp://localhost:2000.Pour les applications exécutées en
bridgemode ou enawsvpcmode, définissez ce paramètre surhttp://, oùCW_CONTAINER_IP:2000CW_CONTAINER_IPest 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_PROPAGATORSAjoutez
xraycomme l'un des propagateurs.OTEL_PYTHON_DISTRODéfinissez sur
aws_distropour utiliser l'instrumentation ADOT Python.OTEL_PYTHON_CONFIGURATORDéfinissez sur
aws_configurationpour utiliser la configuration ADOT Python.PYTHONPATHRemplacez
$APP_PATHpar 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_MODULENécessaire uniquement pour les applications Django. Réglez-le à l'emplacement du
settings.pyfichier de votre application Django. Remplacez$PATH_TO_SETTINGS.Montez le volume
opentelemetry-auto-instrumentation-pythonque 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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "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.namespour 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-la$YOUR_APPLICATION_LOG_GROUPpar 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-2Pour 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-pythonque 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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation-python", "containerPath": "/otel-auto-instrumentation-python", "readOnly": false } ] }
- .NET
-
Pour instrumenter votre application sur Amazon ECS à l'aide de 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.$IMAGERemplacez-la par la dernière image du référentiel d'images AWS Distro for OpenTelemetry Amazon ECR.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
initconteneur 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 une version ultérieure de l'agent AWS Distro for OpenTelemetry Auto-Instrumentation
pour .NET. Variable d'environnement Configuration pour activer Application Signals OTEL_RESOURCE_ATTRIBUTESSpécifiez les informations suivantes sous forme de paires clé-valeur :
service.namedé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éfautUnknownServiceest utilisée.deployment.environmentdé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:defaultest 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_ENABLEDRéglez cette
trueoption pour que votre conteneur commence à envoyer des traces et des CloudWatch métriques X-Ray à Application Signals.OTEL_METRICS_EXPORTERDéfinissez sur
nonepour désactiver les autres exportateurs de mesures.OTEL_LOGS_EXPORTERRéglez sur
nonepour désactiver les autres exportateurs de journaux.OTEL_EXPORTER_OTLP_PROTOCOLDéfinissez ce paramètre
http/protobufsur pour envoyer des métriques et des traces aux signaux d'application via HTTP.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTEnvoie des métriques au conteneur de CloudWatch démons.
Pour les applications exécutées en
hostmode, définissez ce paramètre surhttp://localhost:4316/v1/metrics.Pour les applications exécutées en
bridgemode ou enawsvpcmode, définissez ce paramètre sur http : //:4316/v1/metricsCW_CONTAINER_IP, où estCW_CONTAINER_IPl'adresse IP privée de l'instance de conteneur. EC2 Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_EXPORTER_OTLP_ENDPOINTEnvoie des traces au conteneur de CloudWatch démons.
Pour les applications exécutées en
hostmode, définissez ce paramètre surhttp://localhost:4316.Pour les applications exécutées en
bridgemode ou enawsvpcmode, définissez ce paramètre sur http : //:4316CW_CONTAINER_IP, où estCW_CONTAINER_IPl'adresse IP privée de l'instance de conteneur. EC2 Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTEnvoie des traces au conteneur de CloudWatch démons.
Pour les applications exécutées en
hostmode, définissez ce paramètre surhttp://localhost:4316/v1/traces.Pour les applications exécutées en
bridgemode ou enawsvpcmode, définissez ce paramètre sur http : //:4316/v1/tracesCW_CONTAINER_IP, où estCW_CONTAINER_IPl'adresse IP privée de l'instance de conteneur. EC2 Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_TRACES_SAMPLER_ARGDéfinit le point de terminaison de l'échantillonneur de traces.
Pour les applications exécutées en
hostmode, définissez ce paramètre surhttp://localhost:2000.Pour les applications exécutées en
bridgemode ou enawsvpcmode, définissez ce paramètre surhttp://, oùCW_CONTAINER_IP:2000CW_CONTAINER_IPest 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_HOMEDéfinissez l'emplacement d'installation de l'instrumentation automatique ADOT .NET.
OTEL_DOTNET_AUTO_PLUGINSRéglez sur
AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentationpour activer le plug-in Application Signals.CORECLR_ENABLE_PROFILINGDéfinissez sur
1pour activer le profileur.CORECLR_PROFILERDéfini
{918728DD-259F-4A6A-AC2B-B85E1B658318}comme le CLSID du profileur.CORECLR_PROFILER_PATHDéfinissez ce paramètre sur le chemin du profileur.
Sur Linux, réglez-le sur
${OTEL_DOTNET_AUTO_HOME}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.soSur Windows Server, définissez-le sur
${OTEL_DOTNET_AUTO_HOME}/win-x64/OpenTelemetry.AutoInstrumentation.Native.dllDOTNET_ADDITIONAL_DEPSDéfinissez ce paramètre sur le chemin du dossier de
${OTEL_DOTNET_AUTO_HOME}/AdditionalDeps.DOTNET_SHARED_STOREDéfinissez ce paramètre sur le chemin du dossier de
${OTEL_DOTNET_AUTO_HOME}/store.DOTNET_STARTUP_HOOKSDé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-instrumentationque 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=dotnet-service-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://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" } ], "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ], "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=dotnet-service-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_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 avec ESM, consultez ces étapes Setting up a Node.js application with the ESM module format avant de commencer.
Pour instrumenter votre application sur Amazon ECS à l'aide de 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.$IMAGERemplacez-la par la dernière image du référentiel d'images AWS Distro for OpenTelemetry Amazon ECR.{ "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 une dépendance au
initconteneur pour vous assurer que ce 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.
Variable d'environnement Configuration pour activer Application Signals OTEL_RESOURCE_ATTRIBUTESSpécifiez les informations suivantes sous forme de paires clé-valeur :
service.namedé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éfautUnknownServiceest utilisée.deployment.environmentdé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:defaultest 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.namesd'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-la$YOUR_APPLICATION_LOG_GROUPpar 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-2Pour 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_ENABLEDRéglez cette
trueoption pour que votre conteneur commence à envoyer des traces et des CloudWatch métriques X-Ray à Application Signals.OTEL_METRICS_EXPORTERDéfinissez sur
nonepour désactiver les autres exportateurs de mesures.OTEL_LOGS_EXPORTERRéglez sur
nonepour désactiver les autres exportateurs de journaux.OTEL_EXPORTER_OTLP_PROTOCOLRéglez sur pour
http/protobufenvoyer des métriques et des traces aux signaux d'application à l'aide d'OTLP/HTTP et de protobuf.OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINTEnvoie des métriques au conteneur de CloudWatch démons.
Pour les applications exécutées en
hostmode, définissez ce paramètre surhttp://localhost:4316/v1/metrics.Pour les applications exécutées en
bridgemode ou enawsvpcmode, définissez ce paramètre sur http : //:4316/v1/metricsCW_CONTAINER_IP, où estCW_CONTAINER_IPl'adresse IP privée de l'instance de conteneur. EC2 Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_EXPORTER_OTLP_TRACES_ENDPOINTEnvoie des traces au conteneur de CloudWatch démons.
Pour les applications exécutées en
hostmode, définissez ce paramètre surhttp://localhost:4316/v1/traces.Pour les applications exécutées en
bridgemode ou enawsvpcmode, définissez ce paramètre sur http : //:4316/v1/tracesCW_CONTAINER_IP, où estCW_CONTAINER_IPl'adresse IP privée de l'instance de conteneur. EC2 Vous pouvez récupérer cette adresse auprès du service de métadonnées d'instance (IMDS).
OTEL_TRACES_SAMPLERRéglez ce paramètre
xraysur pour définir X-Ray comme échantillonneur de traces.OTEL_TRACES_SAMPLER_ARGDéfinit le point de terminaison de l'échantillonneur de traces.
Pour les applications exécutées en
hostmode, définissez ce paramètre surhttp://localhost:2000.Pour les applications exécutées en
bridgemode ou enawsvpcmode, définissez ce paramètre surhttp://, oùCW_CONTAINER_IP:2000CW_CONTAINER_IPest 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_PROPAGATORSxrayDéfini comme l'un des propagateurs.NODE_OPTIONSDéfinie sur
--require. RemplacezAWS_ADOT_NODE_INSTRUMENTATION_PATHAWS_ADOT_NODE_INSTRUMENTATION_PATHpar le chemin où est stockée l'instrumentation automatique de AWS Distro for OpenTelemetry Node.js. Par exemple,/otel-auto-instrumentation-node/autoinstrumentation.jsMontez le volume
opentelemetry-auto-instrumentation-nodeque 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
initconteneur 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.namespour 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-la$YOUR_APPLICATION_LOG_GROUPpar 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-2Pour 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-instrumentationque 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 du module ESM
Nous fournissons un support limité pour les applications Node.js au format de module ESM. Pour en savoir plus, consultez Limitations connues concernant Node.js avec ESM.
Pour le format du module ESM, l'utilisation du
initconteneur pour injecter le SDK d'instrumentation Node.js ne s'applique pas. Pour activer les signaux d'application pour Node.js avec ESM, 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.0Dans 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
(Facultatif) Étape 7 : Surveillez l'état de santé de votre application
Une fois que vous avez activé vos applications sur Amazon ECS, vous pouvez surveiller leur état de santé. Pour de plus amples informations, veuillez consulter Surveillez l’état de fonctionnement de vos applications avec Application Signals.