Déployez à l'aide de la stratégie des démons - Amazon CloudWatch

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
  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans le panneau de navigation, choisissez Services.

  3. Choisissez Commencer à découvrir vos services.

  4. 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. 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 avec l' CloudWatch agent
  1. 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" } ]
  2. 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 } ] }
  3. 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éfaut UnknownService 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 de generic: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 en awsvpc 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 en awsvpc 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

    xrayDéfini comme l'un des propagateurs.

    JAVA_TOOL_OPTIONS

    Paramétré pour " -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" remplacer 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

  4. 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'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, 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_MODULEenvironnement sur l'emplacement du settings.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
  1. 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" } ]
  2. 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 } ] }
  3. 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éfaut UnknownService 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 de generic: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 en awsvpc 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 en awsvpc 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 en awsvpc mode, définissez ce paramètre surhttp://CW_CONTAINER_IP:2000, 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_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.

  4. 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 } ] }
  5. (Facultatif) Pour activer la corrélation des journaux, procédez comme suit avant de monter le volume. DansOTEL_RESOURCE_ATTRIBUTES, définissez une variable d'environnement supplémentaire aws.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
  1. 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" } ]
  2. 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 } ] }
  3. 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" } ]
  4. 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éfaut UnknownService 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 de generic: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 en awsvpc 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 en awsvpc mode, définissez ce paramètre sur http ://CW_CONTAINER_IP4: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 en awsvpc 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 en awsvpc mode, définissez ce paramètre surhttp://CW_CONTAINER_IP:2000, 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_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.

  5. 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
  1. 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" } ]
  2. 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 } ], }
  3. 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éfaut UnknownService 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 de generic: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 en awsvpc 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 en awsvpc 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 en awsvpc mode, définissez ce paramètre surhttp://CW_CONTAINER_IP:2000, 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_PROPAGATORS

    xrayDéfini comme l'un des propagateurs.

    NODE_OPTIONS

    Définie sur --require AWS_ADOT_NODE_INSTRUMENTATION_PATH. Remplacez 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

  4. 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" } ] }
  5. (Facultatif) Pour activer la corrélation des journaux, procédez comme suit avant de monter le volume. DansOTEL_RESOURCE_ATTRIBUTES, définissez une variable d'environnement supplémentaire aws.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
  1. 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
  2. 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

  • my-app— 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.