Utilisez une configuration personnalisée pour activer les signaux d'application sur Amazon ECS - 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.

Utilisez une configuration personnalisée pour activer les signaux d'application sur Amazon ECS

Utilisez ces instructions de configuration personnalisées pour intégrer vos applications sur Amazon ECS à CloudWatch Application Signals. Vous installez et configurez OpenTelemetry vous-même l' CloudWatch agent et AWS Distro.

Important

Seul le mode réseau awsvpc est pris en charge. Les types de lancement EC2 et Fargate sont tous deux pris en charge.

Sur les ECS clusters Amazon, Application Signals ne découvre pas automatiquement les noms de vos services. Vous devez spécifier les noms de vos services lors de la configuration personnalisée, et les noms que vous spécifiez sont ceux qui sont affichés sur les tableaux de bord des signaux d'application.

É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 : 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. Remplacez $REGION avec le nom actuel de votre région. Remplacez $IMAGEavec 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

    { "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. 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 } ] }
  4. 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

    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

    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

  5. 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://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" } ], "mountPoints": [ { "sourceVolume": "opentelemetry-auto-instrumentation", "containerPath": "/otel-auto-instrumentation", "readOnly": false } ] }
  6. (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": "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" } ], "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.

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. Remplacez $REGION avec le nom actuel de votre région. Remplacez $IMAGEavec 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

    { "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. 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 } ] }
  4. 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

    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

    Réglez ce paramètre xray sur pour définir X-Ray comme échantillonneur de traces.

    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. Remplacez$PATH_TO_SETTINGS.

  5. 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://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 } ] }
  6. (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://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 (Preview)
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. Remplacez $REGION avec le nom actuel de votre région. Remplacez $IMAGEavec 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

    { "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. 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 } ] }
  4. 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" } ]
  5. 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

    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

    Réglez sur l'emplacement d'installation deADOT. NETinstrumentation automatique.

    OTEL_DOTNET_AUTO_PLUGINS

    Réglez sur AWS.OpenTelemetry.AutoInstrumentation.Plugin, AWS.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.

  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.OpenTelemetry.AutoInstrumentation.Plugin, AWS.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://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": "/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.OpenTelemetry.AutoInstrumentation.Plugin, AWS.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://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" } ] }

É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

  • ecs-cwagent

  • my-app