Déploiement à l’aide de la stratégie sidecar - 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éploiement à l’aide de la stratégie sidecar

Étape 1 : activer Application Signals dans votre compte

Vous devez d’abord activer la vigie applicative dans votre compte. Si ce n’est pas déjà fait, consultez Activation de la vigie applicative 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, il se peut que vous deviez lui 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 : Instrumenter votre application avec l' CloudWatch agent

L'étape suivante consiste à instrumenter votre application pour les signaux CloudWatch 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 une définition de sidecar d' CloudWatch agent. Pour ce faire, ajoutez un nouveau conteneur appelé ecs-cwagent à la définition de tâche de votre application. $REGIONRemplacez-le par le nom actuel de votre région. $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.

    Si vous souhaitez plutôt activer l' CloudWatch agent avec une stratégie daemon, consultez les instructions surDéploiement en utilisant la stratégie démon.

    { "name": "ecs-cwagent", "image": "$IMAGE", "essential": true, "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" } } }
  3. 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 } ] }
  4. Ajoutez une dépendance au conteneur init afin de vous assurer que ce conteneur se termine avant le démarrage du conteneur de votre application.

    "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
  5. 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.environmentCe paramètre définit l'environnement d'exécution de votre application et contrôle la Environment dimension des métriques des applications Amazon ECS dans CloudWatch. Lorsqu'il n'est pas spécifié, CloudWatch l'agent utilise automatiquement le nom du cluster Amazon ECS

    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 dans la vigie applicative, définissez une variable d’environnement supplémentaire aws.log.group.names correspondant au nom du groupe de journaux de votre application. Cela permet de corréler les suivis et les métriques de votre application avec les entrées de journaux correspondantes du groupe de journaux. Pour cette variable, remplacez $YOUR_APPLICATION_LOG_GROUP par les noms des groupes de journaux de votre application. Si vous avez plusieurs groupes de journaux, vous pouvez les séparer à l’aide d’un esperluette (&), comme dans l’exemple suivant : aws.log.group.names=log-group-1&log-group-2. Pour activer la corrélation entre les métriques et les journaux, la définition de cette variable suffit. Pour de plus amples informations, veuillez consulter Activation de la corrélation entre métriques et journaux. Pour activer la corrélation entre les suivis et les journaux, vous devez également modifier la configuration de journalisation de votre application. Pour de plus amples informations, veuillez consulter Activation de la corrélation entre suivis et journaux.

    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

    Définissez sur none pour désactiver les autres exportateurs de journaux.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Définissez sur http/protobuf pour envoyer les métriques et les suivis à la vigie applicative via HTTP.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Réglez sur http://localhost:4316/v1/metrics pour envoyer des métriques au CloudWatch sidecar.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Réglez sur http://localhost:4316/v1/traces pour envoyer des traces au CloudWatch sidecar.

    OTEL_TRACES_SAMPLER

    Définissez cette variable sur xray pour utiliser X-Ray comme échantillonneur de suivis.

    OTEL_PROPAGATORS

    Définissez xray comme l’un des propagateurs.

    JAVA_TOOL_OPTIONS

    Défini sur " -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" Remplacer AWS_ADOT_JAVA_INSTRUMENTATION_PATH par le chemin dans lequel l'agent d'auto-instrumentation de AWS Distro for OpenTelemetry Java est stocké. Par exemple, /otel-auto-instrumentation/javaagent.jar

  6. 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 suivis, utilisez l’exemple fourni pour une application Java. Si vous souhaitez activer la corrélation des journaux, reportez-vous à 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://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost: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 la vigie applicative pour vos applications Python, tenez compte des considérations suivantes.

  • Dans certaines applications conteneurisées, l’absence de la variable d’environnement PYTHONPATH peut empêcher l’application de démarrer. Pour résoudre ce problème, veillez à définir la variable d’environnement PYTHONPATH sur le 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’instrumentation automatique Python pour 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 paramètre --noreload pour empêcher le rechargement automatique.

    • Définissez la variable d’environnement DJANGO_SETTINGS_MODULE sur l’emplacement du fichier settings.py 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, en plus des étapes décrites dans cette section, consultez Aucune donnée de la vigie applicative pour les applications Python qui utilisent un serveur WSGI pour savoir comment configurer la vigie applicative afin qu’elle fonctionne correctement.

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 une définition de sidecar d' CloudWatch agent. Pour ce faire, ajoutez un nouveau conteneur appelé ecs-cwagent à la définition de tâche de votre application. $REGIONRemplacez-le par le nom actuel de votre région. $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.

    Si vous souhaitez plutôt activer l' CloudWatch agent avec une stratégie daemon, consultez les instructions surDéploiement en utilisant la stratégie démon.

    { "name": "ecs-cwagent", "image": "$IMAGE", "essential": true, "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" } } }
  3. 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 } ] }
  4. Ajoutez une dépendance au conteneur init afin de vous assurer que ce conteneur se termine avant le démarrage du conteneur de votre application.

    "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
  5. 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.environmentCe paramètre définit l'environnement d'exécution de votre application et contrôle la Environment dimension des métriques des applications Amazon ECS dans CloudWatch. Lorsqu'il n'est pas spécifié, CloudWatch l'agent utilise automatiquement le nom du cluster Amazon ECS

    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 dans la vigie applicative, définissez une variable d’environnement supplémentaire aws.log.group.names correspondant au nom du groupe de journaux de votre application. Cela permet de corréler les suivis et les métriques de votre application avec les entrées de journaux correspondantes du groupe de journaux. Pour cette variable, remplacez $YOUR_APPLICATION_LOG_GROUP par les noms des groupes de journaux de votre application. Si vous avez plusieurs groupes de journaux, vous pouvez les séparer à l’aide d’un esperluette (&), comme dans l’exemple suivant : aws.log.group.names=log-group-1&log-group-2. Pour activer la corrélation entre les métriques et les journaux, la définition de cette variable suffit. Pour de plus amples informations, veuillez consulter Activation de la corrélation entre métriques et journaux. Pour activer la corrélation entre les suivis et les journaux, vous devez également modifier la configuration de journalisation de votre application. Pour de plus amples informations, veuillez consulter Activation de la corrélation entre suivis et journaux.

    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 http/protobuf sur pour envoyer des métriques et des traces CloudWatch via HTTP.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Réglez sur http://127.0.0.1:4316/v1/metrics pour envoyer des métriques au CloudWatch sidecar.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Réglez sur http://127.0.0.1:4316/v1/traces pour envoyer des traces au CloudWatch sidecar.

    OTEL_TRACES_SAMPLER

    Définissez cette variable sur xray pour utiliser X-Ray comme échantillonneur de suivis.

    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_configurator 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 localiser les modules de votre application.

    DJANGO_SETTINGS_MODULE

    Nécessaire uniquement pour les applications Django. Définissez cette variable sur l’emplacement du fichier settings.py de votre application Django. Remplacez $PATH_TO_SETTINGS.

  6. 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 journaux avec les métriques et les suivis, utilisez l’exemple fourni pour une application Python. Si vous souhaitez activer la corrélation des journaux, reportez-vous à 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://localhost: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://localhost:4316/v1/traces" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost: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 } ] }
  7. (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émentaire aws.log.group.names pour les groupes de journaux de votre application. Cela permet de corréler les suivis et les métriques de votre application avec les entrées de journaux correspondantes. Pour cette variable, remplacez $YOUR_APPLICATION_LOG_GROUP par les noms des groupes de journaux de votre application. Si vous avez plusieurs groupes de journaux, vous pouvez les séparer à l’aide d’un esperluette (&), comme dans l’exemple suivant : aws.log.group.names=log-group-1&log-group-2. Pour activer la corrélation entre les métriques et les journaux, la définition de cette variable suffit. Pour de plus amples informations, veuillez consulter Activation de la corrélation entre métriques et journaux. Pour activer la corrélation entre les suivis et les journaux, vous devez également modifier la configuration de journalisation de votre application. Pour de plus amples informations, veuillez consulter Activation de la corrélation entre suivis et journaux.

    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://localhost: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://localhost:4316/v1/traces" }, { "name": "OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT", "value": "http://localhost: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 une définition de sidecar d' CloudWatch agent. Pour ce faire, ajoutez un nouveau conteneur appelé ecs-cwagent à la définition de tâche de votre application. $REGIONRemplacez-le par le nom actuel de votre région. $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.

    Si vous souhaitez plutôt activer l' CloudWatch agent avec une stratégie daemon, consultez les instructions surDéploiement en utilisant la stratégie démon.

    { "name": "ecs-cwagent", "image": "$IMAGE", "essential": true, "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" } } }
  3. 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 } ] }
  4. Ajoutez une dépendance au conteneur init afin de vous assurer que ce conteneur se termine avant le démarrage du conteneur de votre application.

    "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
  5. 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_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.environmentCe paramètre définit l'environnement d'exécution de votre application et contrôle la Environment dimension des métriques des applications Amazon ECS dans CloudWatch. Lorsqu'il n'est pas spécifié, CloudWatch l'agent utilise automatiquement le nom du cluster Amazon ECS

    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

    Définissez sur none pour désactiver les autres exportateurs de journaux.

    OTEL_EXPORTER_OTLP_PROTOCOL

    Définissez sur http/protobuf pour envoyer les métriques et les suivis à la vigie applicative via HTTP.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Réglez sur http://localhost:4316/v1/metrics pour envoyer des métriques au CloudWatch sidecar.

    OTEL_EXPORTER_OTLP_ENDPOINT

    Réglez sur http://localhost:4316/ pour envoyer des traces au CloudWatch sidecar.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Réglez sur http://localhost:4316/v1/traces pour envoyer des traces au CloudWatch sidecar.

    OTEL_DOTNET_AUTO_HOME

    Définissez-la sur l’emplacement d’installation de l’instrumentation automatique ADOT .NET.

    OTEL_DOTNET_AUTO_PLUGINS

    Définissez sur AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation pour activer le plug-in de la vigie applicative.

    CORECLR_ENABLE_PROFILING

    Définissez sur 1 pour activer le profileur.

    CORECLR_PROFILER

    Définissez sur {918728DD-259F-4A6A-AC2B-B85E1B658318} comme le CLSID du profileur.

    CORECLR_PROFILER_PATH

    Définissez cette variable sur le chemin du profileur.

    Sous Linux, définissez cette variable sur ${OTEL_DOTNET_AUTO_HOME}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so

    Sous Windows Server, définissez cette variable sur ${OTEL_DOTNET_AUTO_HOME}/win-x64/OpenTelemetry.AutoInstrumentation.Native.dll

    DOTNET_ADDITIONAL_DEPS

    Définissez cette variable sur le chemin du dossier de ${OTEL_DOTNET_AUTO_HOME}/AdditionalDeps.

    DOTNET_SHARED_STORE

    Définissez cette variable sur le chemin du dossier de ${OTEL_DOTNET_AUTO_HOME}/store.

    DOTNET_STARTUP_HOOKS

    Définissez cette variable sur le chemin de l’ensemble géré ${OTEL_DOTNET_AUTO_HOME}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll à exécuter avant le point d’entrée de l’application principale.

  6. 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-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://localhost:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://localhost:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost: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 } ] }

    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://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost:4316/v1/traces" }, { "name": "OTEL_EXPORTER_OTLP_ENDPOINT", "value": "http://localhost:4316" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost: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 la vigie applicative pour une application Node.js utilisant le format ESM, 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 une définition de sidecar d' CloudWatch agent. Pour ce faire, ajoutez un nouveau conteneur appelé ecs-cwagent à la définition de tâche de votre application. $REGIONRemplacez-le par le nom actuel de votre région. $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.

    Si vous souhaitez plutôt activer l' CloudWatch agent avec une stratégie daemon, consultez les instructions surDéploiement en utilisant la stratégie démon.

    { "name": "ecs-cwagent", "image": "$IMAGE", "essential": true, "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" } } }
  3. 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 } ], }
  4. Ajoutez une dépendance au conteneur init afin de vous assurer que ce conteneur se termine avant le démarrage du conteneur de votre application.

    "dependsOn": [ { "containerName": "init", "condition": "SUCCESS" } ]
  5. 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.environmentCe paramètre définit l'environnement d'exécution de votre application et contrôle la Environment dimension des métriques des applications Amazon ECS dans CloudWatch. Lorsqu'il n'est pas spécifié, CloudWatch l'agent utilise automatiquement le nom du cluster Amazon ECS

    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 dans la vigie applicative, définissez une variable d’environnement supplémentaire aws.log.group.names correspondant au nom du groupe de journaux de votre application. Cela permet de corréler les suivis et les métriques de votre application avec les entrées de journaux correspondantes du groupe de journaux. Pour cette variable, remplacez $YOUR_APPLICATION_LOG_GROUP par les noms des groupes de journaux de votre application. Si vous avez plusieurs groupes de journaux, vous pouvez les séparer à l’aide d’un esperluette (&), comme dans l’exemple suivant : aws.log.group.names=log-group-1&log-group-2. Pour activer la corrélation entre les métriques et les journaux, la définition de cette variable suffit. Pour de plus amples informations, veuillez consulter Activation de la corrélation entre métriques et journaux. Pour activer la corrélation entre les suivis et les journaux, vous devez également modifier la configuration de journalisation de votre application. Pour de plus amples informations, veuillez consulter Activation de la corrélation entre suivis et journaux.

    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

    Définissez 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 OTLP/HTTP de protobuf.

    OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT

    Réglez sur http://localhost:4316/v1/metrics pour envoyer des métriques au CloudWatch sidecar.

    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT

    Réglez sur http://localhost:4316/v1/traces pour envoyer des traces au CloudWatch sidecar.

    OTEL_TRACES_SAMPLER

    Définissez cette variable sur xray pour utiliser X-Ray comme échantillonneur de suivis.

    OTEL_PROPAGATORS

    Définissez xray comme l’un des propagateurs.

    NODE_OPTIONS

    Définie sur --require AWS_ADOT_NODE_INSTRUMENTATION_PATH. Remplacez AWS_ADOT_NODE_INSTRUMENTATION_PATH par le chemin où est stockée l'instrumentation automatique de AWS Distro for OpenTelemetry Node.js. Par exemple, /otel-auto-instrumentation-node/autoinstrumentation.js

  6. 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 suivis, utilisez l’exemple suivant pour une application Node.js. Si vous souhaitez activer la corrélation des journaux, reportez-vous à l’étape suivante.

    Dans le conteneur de votre application, ajoutez une dépendance sur le conteneur init afin de vous assurer que ce dernier se termine avant le démarrage de votre conteneur d’application.

    { "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://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost: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" } ] }
  7. (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émentaire aws.log.group.names pour les groupes de journaux de votre application. Cela permet de corréler les suivis et les métriques de votre application avec les entrées de journaux correspondantes. Pour cette variable, remplacez $YOUR_APPLICATION_LOG_GROUP par les noms des groupes de journaux de votre application. Si vous avez plusieurs groupes de journaux, vous pouvez les séparer à l’aide d’un esperluette (&), comme dans l’exemple suivant : aws.log.group.names=log-group-1&log-group-2. Pour activer la corrélation entre les métriques et les journaux, la définition de cette variable suffit. Pour de plus amples informations, veuillez consulter Activation de la corrélation entre métriques et journaux. Pour activer la corrélation entre les suivis et les journaux, vous devez également modifier la configuration de journalisation de votre application. Pour de plus amples informations, veuillez consulter Activation de la corrélation entre suivis et journaux.

    Voici un exemple. Utilisez cet exemple pour activer la corrélation des journaux lors du montage du 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://localhost:4316/v1/metrics" }, { "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT", "value": "http://localhost:4316/v1/traces" }, { "name": "OTEL_TRACES_SAMPLER", "value": "xray" }, { "name": "OTEL_TRACES_SAMPLER_ARG", "value": "endpoint=http://localhost: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 utilisant le format de module ESM

Un support limité est disponible pour les applications Node.js utilisant le 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 conteneur init pour injecter le kit SDK d’instrumentation Node.js ne s’applique pas. Pour activer la vigie applicative pour Node.js avec ESM, ignorez les étapes 1 et 3 de la procédure précédente et procédez comme suit.

Pour activer la vigie applicative pour une application Node.js avec ESM
  1. Installez les dépendances nécessaires à l’instrumentation automatique dans votre application Node.js :

    npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation npm install @opentelemetry/instrumentation@0.54.0
  2. Dans les étapes 5 et 6 de la procédure précédente, supprimez 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 5 : déployer 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 trois conteneurs dans la tâche nouvellement créée :

  • init : conteneur requis pour l’initialisation de la vigie applicative.

  • ecs-cwagent— Un conteneur exécutant l' CloudWatch agent

  • my-app : exemple de conteneur d’application 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 service.

(Facultatif) Étape 6 : surveiller l’état de votre application

Une fois vos applications activées sur Amazon ECS, vous pouvez surveiller leur état directement dans la vigie applicative. Pour de plus amples informations, veuillez consulter Surveillez l’état de fonctionnement de vos applications avec Application Signals.