Exportation de traces sans collecteur à l'aide de AWS Distro for OpenTelemetry (ADOT) SDKs - 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.

Exportation de traces sans collecteur à l'aide de AWS Distro for OpenTelemetry (ADOT) SDKs

Vous pouvez utiliser l'ADOT SDKs pour passer à l'absence de collecteur et pour envoyer des traces directement au point de terminaison OTLP (pour les traces).

Note

Application Signals inclut des fonctionnalités de recherche de transactions. Pour éviter les coûts supplémentaires, désactivez les signaux d'application dans le SDK ADOT et conservez OTEL_AWS_APPLICATION_SIGNALS_ENABLED la valeur false (paramètre par défaut).

Prérequis

Assurez-vous que Transaction Search est activé pour envoyer des spans au point de terminaison X-Ray OTLP. Pour plus d'informations, consultez Commencer à utiliser Transaction Search.

Configurer les autorisations IAM pour Amazon EC2

Suivez ces étapes pour associer la politique AWSXrayWriteOnlyPolicy IAM au rôle IAM de votre instance Amazon EC2  :

  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Choisissez Rôles, puis recherchez et sélectionnez le rôle utilisé par votre EC2 instance Amazon.

  3. Sous l'onglet Autorisations, choisissez Ajouter des autorisations, puis Joindre des politiques.

  4. À l'aide du champ de recherche, recherchez la AWSXrayWriteOnlyPolicy politique.

  5. Sélectionnez la AWSXrayWriteOnlyPolicy politique et choisissez Ajouter des autorisations.

Configurer les autorisations IAM pour les hôtes sur site

Suivez ces étapes pour créer un utilisateur IAM qui pourra être utilisé pour fournir des autorisations à vos hôtes sur site.

  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Choisissez Utilisateurs, puis Créer un utilisateur.

  3. Choisissez Utilisateurs, puis Créer un utilisateur.

  4. Dans Détails de l'utilisateur, dans Nom d'utilisateur, entrez le nom du nouvel utilisateur IAM. Il s'agit du nom de connexion AWS qui sera utilisé pour authentifier votre hôte.

  5. Choisissez Suivant.

  6. Sur la page Définir les autorisations, sous Options d'autorisations, sélectionnez Joindre directement les politiques.

  7. Dans la liste des politiques d'autorisation, sélectionnez la AWSXrayWriteOnlyPolicy politique à ajouter à votre utilisateur.

  8. Choisissez Suivant.

  9. Sur la page Réviser et créer, assurez-vous que vous êtes satisfait du nom d'utilisateur et que la AWSXrayWriteOnlyPolicy politique figure dans le résumé des autorisations.

  10. Choisissez Create user (Créer un utilisateur).

  11. Créez et récupérez votre clé AWS d'accès et votre clé secrète :

    1. Dans le volet de navigation de la console IAM, choisissez Utilisateurs, puis sélectionnez le nom d'utilisateur de l'utilisateur que vous avez créé à l'étape précédente.

    2. Sur la page de l'utilisateur, choisissez l'onglet Informations d'identification de sécurité.

    3. Dans la section Clés d'accès, choisissez Créer une clé d'accès.

    4. Pour l'étape 1 de création d'une clé d'accès, choisissez Command Line Interface (CLI).

    5. Pour l'étape 2 de création d'une clé d'accès, entrez éventuellement une balise, puis choisissez Next.

    6. Pour l'étape 3 de création d'une clé d'accès, sélectionnez Télécharger le fichier .csv pour enregistrer un fichier .csv avec la clé d'accès et la clé d'accès secrète de votre utilisateur IAM. Vous avez besoin de ces informations pour les prochaines étapes.

    7. Sélectionnez Exécuté.

  12. Configurez vos AWS informations d'identification sur votre hôte local en saisissant la commande suivante. Remplacez ACCESS_KEY_ID et SECRET_ACCESS_ID par votre clé d'accès et votre clé d'accès secrète nouvellement générées à partir du fichier .csv que vous avez téléchargé à l'étape précédente.

    $ aws configure AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json

Activation d'ADOT SDKs

Vous pouvez activer les traces de votre application à envoyer directement au point de terminaison OTLP depuis le SDK AWS Distro for OpenTelemetry (ADOT) sur Java, Node.js, Python et .Net.

Java
  1. Téléchargez la dernière version de l'agent d'auto-instrumentation de AWS Distro pour OpenTelemetry Java. Vous pouvez télécharger la dernière version à l'aide de cette commande :

    curl -L -O https://github.com/aws-observability/aws-otel-java-instrumentation/releases/latest/download/aws-opentelemetry-agent.jar

    Pour voir toutes les versions publiées, voir les aws-otel-java-instrumentation versions.

  2. Pour activer l'exportateur qui envoie directement les traces au point de terminaison des traces X-Ray OTLP et pour optimiser les avantages, utilisez les variables d'environnement pour fournir des informations supplémentaires avant de démarrer votre application.

  3. Pour la variable OTEL_RESOURCE_ATTRIBUTES, spécifiez les informations suivantes sous forme de paires clé-valeur :

    (Facultatif) service.name définit le nom du service. Il sera affiché comme nom de service pour votre application dans les tableaux de bord des signaux d'application. Lorsque vous ne fournissez aucune valeur pour cette clé, la valeur par défaut UnknownService est utilisée.

    (Facultatif) deployment.environment définit l'environnement dans lequel l'application s'exécute. Il sera affiché sous la forme de l'environnement Hosted In de votre application. Lorsque vous ne le spécifiez pas, l'une des valeurs par défaut suivantes est utilisée :

    • S'il s'agit d'une instance qui fait partie d'un groupe Auto Scaling, elle est définie sur ec2:name-of-Auto-Scaling-group

    • S'il s'agit d'une EC2 instance Amazon qui ne fait pas partie d'un groupe Auto Scaling, elle est définie sur ec2:default

    • S'il s'agit d'un hôte local, il est configuré sur generic:default

    Cette variable d'environnement est utilisée uniquement par Application Signals et est convertie en annotations de trace X-Ray et en dimensions CloudWatch métriques

  4. Pour la OTEL_EXPORTER_OTLP_TRACES_ENDPOINT variable, spécifiez le point de terminaison des traces X-Ray OTLP :https://xray.[AWSRegion].amazonaws.com/v1/traces. Par exemple :

    export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://xray.us-west-2.amazonaws.com/v1/traces"
  5. Pour la JAVA_TOOL_OPTIONS variable, spécifiez le chemin où l'agent d'auto-instrumentation de AWS Distro for OpenTelemetry Java est stocké.

    export JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH"

    Par exemple :

    export AWS_ADOT_JAVA_INSTRUMENTATION_PATH="./aws-opentelemetry-agent.jar"
  6. Pour la OTEL_METRICS_EXPORTER variable, il est recommandé de définir la valeur sur none.

  7. Pour la OTEL_LOGS_EXPORTER variable, il est recommandé de définir la valeur sur none.

  8. Pour la OTEL_TRACES_EXPORTER variable, vous devez définir la valeur pour otlp (c'est facultatif et c'est la valeur par défaut si cette variable d'environnement n'est pas définie).

  9. Pour la OTEL_EXPORTER_OTLP_PROTOCOL variable, vous devez définir la valeur sur http/protobuf (c'est facultatif et c'est la valeur par défaut si cette variable d'environnement n'est pas définie). Le point de terminaison OTLP X-Ray ne prend actuellement en charge que le protocole HTTP.

  10. Votre application devrait maintenant fonctionner avec l'instrumentation AWS Distro for OpenTelemetry Java et générera des spans. Ces intervalles sont enregistrés aws/spans CloudWatch LogsLogGroup dans le dossier de votre compte. Vous pouvez également consulter les traces et les métriques corrélées à vos intervalles dans la console CloudWatch Traces and Metrics.

  11. Démarrez votre application avec les variables d'environnement que vous avez définies. Voici un exemple de script de démarrage.

    (Remarque : La configuration suivante ne prend en charge que les versions 1.32.2 et ultérieures de l'agent d' OpenTelemetry auto-instrumentation AWS Distro pour Java.)

    JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" \ OTEL_METRICS_EXPORTER=none \ OTEL_LOGS_EXPORTER=none \ OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \ OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \ java -jar $MY_JAVA_APP.jar
Node.js
  1. Téléchargez la dernière version de l'agent AWS Distro for OpenTelemetry JavaScript Auto-Instrumentation pour Node.js. Vous pouvez effectuer l'installation à l'aide de la commande suivante :

    npm install @aws/aws-distro-opentelemetry-node-autoinstrumentation

    Pour obtenir des informations sur toutes les versions publiées, consultez AWS Distro pour l' OpenTelemetry JavaScript instrumentation.

  2. Pour activer l'exportateur qui envoie directement les traces au point de terminaison OTLP X-Ray et pour optimiser les avantages, utilisez les variables d'environnement pour fournir des informations supplémentaires avant de démarrer votre application.

  3. Pour la variable OTEL_RESOURCE_ATTRIBUTES, spécifiez les informations suivantes sous forme de paires clé-valeur :

    (Facultatif) service.name définit le nom du service. Il sera affiché comme nom de service pour votre application dans les tableaux de bord des signaux d'application. Lorsque vous ne fournissez aucune valeur pour cette clé, la valeur par défaut UnknownService est utilisée.

    (Facultatif) 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. Lorsque vous ne spécifiez pas cette variable, l'une des valeurs par défaut suivantes est utilisée :

    • S'il s'agit d'une instance qui fait partie d'un groupe Auto Scaling, elle est définie sur ec2:name-of-Auto-Scaling-group

    • S'il s'agit d'une EC2 instance Amazon qui ne fait pas partie d'un groupe Auto Scaling, elle est définie sur ec2:default

    • S'il s'agit d'un hôte local, il est configuré sur generic:default

    Cette variable d'environnement est utilisée uniquement par Application Signals et est convertie en annotations de trace X-Ray et en dimensions CloudWatch métriques.

  4. Pour la OTEL_EXPORTER_OTLP_TRACES_ENDPOINT variable, spécifiez le point de terminaison des traces X-Ray OTLP :https://xray.[AWSRegion].amazonaws.com/v1/traces.

    Par exemple :

    export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://xray.us-west-2.amazonaws.com/v1/traces"
  5. Pour la OTEL_METRICS_EXPORTER variable, il est recommandé de définir la valeur sur none. Les métriques des signaux d'application sont générées par le point de terminaison OTLP.

  6. Pour la OTEL_LOGS_EXPORTER variable, il est recommandé de définir la valeur sur none.

  7. Pour la OTEL_TRACES_EXPORTER variable, vous devez définir la valeur pour otlp (c'est facultatif et c'est la valeur par défaut si cette variable d'environnement n'est pas définie).

  8. Pour la OTEL_EXPORTER_OTLP_PROTOCOL variable, vous devez définir la valeur sur http/protobuf (c'est facultatif et c'est la valeur par défaut si cette variable d'environnement n'est pas définie). Le point de terminaison OTLP X-Ray ne prend actuellement en charge que le protocole HTTP.

  9. Votre application devrait maintenant fonctionner avec l'instrumentation AWS Distro for OpenTelemetry Java et générera des spans. Ces intervalles sont enregistrés aws/spans CloudWatch LogsLogGroup dans le dossier de votre compte. Vous pouvez également consulter les traces et les métriques corrélées à vos intervalles dans la console CloudWatch Traces and Metrics.

  10. Démarrez votre application avec les variables d'environnement que vous avez définies. Voici un exemple de script de démarrage.

    (Remarque : remplacez $ SVC_NAME par le nom de votre application. Il s'affiche sous forme de nom de l'application.

    OTEL_METRICS_EXPORTER=none \ OTEL_LOGS_EXPORTER=none \ OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \ OTEL_RESOURCE_ATTRIBUTES="service.name=$SVC_NAME" \ node —require '@aws/aws-distro-opentelemetry-node-autoinstrumentation/register' your-application.js
Python
  1. Téléchargez la dernière version de l'agent d'auto-instrumentation AWS Distro for OpenTelemetry Python. Vous pouvez effectuer l'installation à l'aide de la commande suivante :

    pip install aws-opentelemetry-distro
  2. Pour permettre à l'exportateur d'envoyer directement des traces au point de terminaison OTLP X-Ray et pour optimiser les avantages, utilisez les variables d'environnement pour fournir des informations supplémentaires avant de démarrer votre application.

  3. Pour la variable OTEL_RESOURCE_ATTRIBUTES, spécifiez les informations suivantes sous forme de paires clé-valeur :

    (Facultatif) service.name définit le nom du service. Il sera affiché comme nom de service pour votre application dans les tableaux de bord des signaux d'application. Lorsque vous ne fournissez aucune valeur pour cette clé, la valeur par défaut UnknownService est utilisée.

    (Facultatif) 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. Lorsque vous ne le spécifiez pas, l'une des valeurs par défaut suivantes est utilisée :

    • S'il s'agit d'une instance qui fait partie d'un groupe Auto Scaling, elle est définie sur ec2:name-of-Auto-Scaling-group

    • S'il s'agit d'une EC2 instance Amazon qui ne fait pas partie d'un groupe Auto Scaling, elle est définie sur ec2:default

    • S'il s'agit d'un hôte local, il est configuré sur generic:default

    Cette variable d'environnement est utilisée uniquement par Application Signals et est convertie en annotations de trace X-Ray et en dimensions CloudWatch métriques.

  4. Pour la OTEL_EXPORTER_OTLP_TRACES_ENDPOINT variable, spécifiez le point de terminaison des traces X-Ray OTLP :https://xray.[AWSRegion].amazonaws.com/v1/traces.

    Par exemple :

    export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://xray.us-west-2.amazonaws.com/v1/traces"
  5. Pour la OTEL_METRICS_EXPORTER variable, il est recommandé de définir la valeur sur none. Les métriques des signaux d'application sont générées par le point de terminaison OTLP.

  6. Pour la OTEL_LOGS_EXPORTER variable, il est recommandé de définir la valeur sur none.

  7. Pour la OTEL_TRACES_EXPORTER variable, vous devez définir la valeur pour otlp (c'est facultatif et c'est la valeur par défaut si cette variable d'environnement n'est pas définie).

  8. Pour la OTEL_EXPORTER_OTLP_PROTOCOL variable, vous devez définir la valeur sur http/protobuf (c'est facultatif et c'est la valeur par défaut si cette variable d'environnement n'est pas définie). Le point de terminaison OTLP X-Ray ne prend actuellement en charge que le protocole HTTP.

  9. Votre application devrait maintenant fonctionner avec l'instrumentation AWS Distro for OpenTelemetry Java et générera des spans. Ces intervalles sont enregistrés aws/spans CloudWatch LogsLogGroup dans le dossier de votre compte. Vous pouvez également consulter les traces et les métriques corrélées à vos intervalles dans la console CloudWatch Traces and Metrics.

  10. Démarrez votre application avec les variables d'environnement que vous avez définies. Voici un exemple de script de démarrage.

    (Remarque : remplacez $ SVC_NAME par le nom de votre application et remplacez $ PYTHON_APP par l'emplacement et le nom de votre application.

    OTEL_METRICS_EXPORTER=none \ OTEL_LOGS_EXPORTER=none \ OTEL_PYTHON_DISTRO=aws_distro \ OTEL_PYTHON_CONFIGURATOR=aws_configurator \ OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \ OTEL_RESOURCE_ATTRIBUTES="service.name=$SVC_NAME" \ opentelemetry-instrument python $MY_PYTHON_APP.py
.Net

Pour activer l'exportateur qui envoie directement les traces au point de terminaison des traces X-Ray OTLP et pour optimiser les avantages, définissez les variables d'environnement afin de fournir des informations supplémentaires avant de démarrer votre application. Ces variables sont également nécessaires pour configurer l'instrumentation .NET.

  1. Remplacez dotnet-service-name la variable d'OTEL_RESOURCE_ATTRIBUTESenvironnement par le nom du service de votre choix.

  2. Configurez OTEL_TRACES_EXPORTER=none.

  3. Configurez OTEL_AWS_SIG_V4_ENABLED=true.

    Un exemple pour Linux.

    export INSTALL_DIR=OpenTelemetryDistribution export CORECLR_ENABLE_PROFILING=1 export CORECLR_PROFILER={918728DD-259F-4A6A-AC2B-B85E1B658318} export CORECLR_PROFILER_PATH=${INSTALL_DIR}/linux-x64/OpenTelemetry.AutoInstrumentation.Native.so export DOTNET_ADDITIONAL_DEPS=${INSTALL_DIR}/AdditionalDeps export DOTNET_SHARED_STORE=${INSTALL_DIR}/store export DOTNET_STARTUP_HOOKS=${INSTALL_DIR}/net/OpenTelemetry.AutoInstrumentation.StartupHook.dll export OTEL_DOTNET_AUTO_HOME=${INSTALL_DIR} export OTEL_DOTNET_AUTO_PLUGINS="AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation" export OTEL_TRACES_EXPORTER=none export OTEL_AWS_SIG_V4_ENABLED=true export OTEL_RESOURCE_ATTRIBUTES=service.name=dotnet-service-name export OTEL_METRICS_EXPORTER=none export OTEL_LOGS_EXPORTER=none export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces

    Un exemple pour Windows Server.

    $env:INSTALL_DIR = "OpenTelemetryDistribution" $env:CORECLR_ENABLE_PROFILING = 1 $env:CORECLR_PROFILER = "{918728DD-259F-4A6A-AC2B-B85E1B658318}" $env:CORECLR_PROFILER_PATH = Join-Path $env:INSTALL_DIR "win-x64/OpenTelemetry.AutoInstrumentation.Native.dll" $env:DOTNET_ADDITIONAL_DEPS = Join-Path $env:INSTALL_DIR "AdditionalDeps" $env:DOTNET_SHARED_STORE = Join-Path $env:INSTALL_DIR "store" $env:DOTNET_STARTUP_HOOKS = Join-Path $env:INSTALL_DIR "net/OpenTelemetry.AutoInstrumentation.StartupHook.dll" $env:OTEL_DOTNET_AUTO_HOME = $env:INSTALL_DIR $env:OTEL_DOTNET_AUTO_PLUGINS = "AWS.Distro.OpenTelemetry.AutoInstrumentation.Plugin, AWS.Distro.OpenTelemetry.AutoInstrumentation" $env:OTEL_TRACES_EXPORTER=none $env:OTEL_AWS_SIG_V4_ENABLED=true $env:OTEL_RESOURCE_ATTRIBUTES=service.name=dotnet-service-name $env:OTEL_METRICS_EXPORTER=none $env:OTEL_LOGS_EXPORTER=none $env:OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf $env:OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces
  4. Démarrez votre application avec les variables d'environnement.

  5. (Facultatif) Vous pouvez également utiliser les scripts d'installation fournis pour faciliter l'installation et la configuration du package d'instrumentation automatique AWS Distro for OpenTelemetry .NET.

    Pour Linux, téléchargez et installez le script d'installation de Bash depuis la page des GitHub versions :

    # Download and Install curl -L -O https://github.com/aws-observability/aws-otel-dotnet-instrumentation/releases/latest/download/aws-otel-dotnet-install.sh chmod +x ./aws-otel-dotnet-install.sh ./aws-otel-dotnet-install.sh # Instrument . $HOME/.otel-dotnet-auto/instrument.shexport OTEL_RESOURCE_ATTRIBUTES=service.name=dotnet-service-name

    Pour Windows Server, téléchargez et installez le script PowerShell d'installation depuis la page GitHub des versions :

    # Download and Install $module_url = "https://github.com/aws-observability/aws-otel-dotnet-instrumentation/releases/latest/download/AWS.Otel.DotNet.Auto.psm1" $download_path = Join-Path $env:temp "AWS.Otel.DotNet.Auto.psm1" Invoke-WebRequest -Uri $module_url -OutFile $download_path Import-Module $download_path Install-OpenTelemetryCore # Instrument Import-Module $download_path Register-OpenTelemetryForCurrentSession -OTelServiceName "dotnet-service-name" Register-OpenTelemetryForIIS

    Vous pouvez trouver le NuGet package du package d'auto-instrumentation AWS Distro pour OpenTelemetry .NET dans le dépôt officiel NuGet . Assurez-vous de consulter le fichier README pour obtenir des instructions.