

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.

# Migration de l'instrumentation X-Ray vers l' OpenTelemetry instrumentation
<a name="xray-sdk-migration"></a>

**Note**  
Avis de SDK/Daemon maintenance de X-Ray — Le 25 février 2026, le AWS X-Ray SDKs/Daemon passera en mode maintenance, où les versions du SDK et du Daemon de X-Ray AWS seront limitées uniquement pour résoudre les problèmes de sécurité. Pour plus d'informations sur le calendrier de support, consultez[Chronologie du support pour le SDK et Daemon X-Ray](xray-sdk-daemon-timeline.md).

 X-Ray est en train de devenir OpenTelemetry (OTel) sa principale norme d'instrumentation pour le suivi et l'observabilité des applications. Ce changement stratégique s'aligne sur les AWS meilleures pratiques du secteur et offre aux clients une solution plus complète, flexible et tournée vers l'avenir pour répondre à leurs besoins en matière d'observabilité. OpenTelemetry, largement adoptée dans le secteur, permet de suivre les demandes sur divers systèmes, y compris ceux extérieurs AWS qui peuvent ne pas s'intégrer directement à X-Ray. 

Ce chapitre fournit des recommandations pour une transition en douceur et souligne l'importance de migrer vers des solutions OpenTelemetry basées pour garantir un support continu et un accès aux dernières fonctionnalités en matière d'instrumentation et d'observabilité des applications.

Il est recommandé de l'adopter OpenTelemetry comme solution d'observabilité pour l'instrumentation de votre application.

**Topics**
+ [Compréhension OpenTelemetry](#migration-to-opentelemetry)
+ [Comprendre les OpenTelemetry concepts relatifs à la migration](#opentelemetry-concepts)
+ [Présentation de la migration](#migration-overview)
+ [Migration de X-Ray Daemon vers un AWS CloudWatch agent ou un collecteur OpenTelemetry](#xray-Daemon-migration)
+ [Migration vers Java OpenTelemetry](xray-migration-opentelemetry.md)
+ [Migrer vers OpenTelemetry Go](manual-instrumentation-go.md)
+ [Migrer vers OpenTelemetry Node.js](migrate-xray-to-opentelemetry-nodejs.md)
+ [Migrer vers OpenTelemetry .NET](introduction-dotnet.md)
+ [Migrer vers OpenTelemetry Python](migrate-xray-to-opentelemetry-python.md)
+ [Migrer vers OpenTelemetry Ruby](migrate-xray-to-opentelemetry-ruby.md)

## Compréhension OpenTelemetry
<a name="migration-to-opentelemetry"></a>

OpenTelemetry est un cadre d'observabilité standard qui fournit des protocoles et des outils standardisés pour la collecte de données de télémétrie. Il propose une approche unifiée pour l'instrumentation, la génération, la collecte et l'exportation de données de télémétrie telles que les métriques, les journaux et les traces.

Lorsque vous migrez de X-Ray SDKs vers OpenTelemetry, vous bénéficiez des avantages suivants :
+ Support amélioré du framework et de l'instrumentation de bibliothèque
+ Support pour d'autres langages de programmation
+ Capacités d'instrumentation automatique
+ Options de configuration d'échantillonnage flexibles
+ Collecte unifiée de métriques, de journaux et de traces

Le OpenTelemetry collecteur offre davantage d'options pour les formats de collecte de données et les destinations d'exportation que le daemon X-Ray.

### OpenTelemetry soutien dans AWS
<a name="opentelemetry-support"></a>

AWS propose plusieurs solutions pour travailler avec OpenTelemetry :
+ AWS Distro pour OpenTelemetry

  Exportez OpenTelemetry les traces sous forme de segments vers X-Ray.

  Pour plus d'informations, consultez [AWS Distro for OpenTelemetry](https://aws-otel.github.io/).
+ CloudWatch Signaux d'application

  Exportez OpenTelemetry des traces et des métriques personnalisées pour surveiller l'état de santé des applications.

  Pour plus d'informations, consultez la section [Utilisation des signaux d'application](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Monitoring-Sections.html).
+ CloudWatch OTel Point final

  Exportez OpenTelemetry les traces vers X-Ray à l'aide du point de OTel terminaison HTTP avec une OpenTelemetry instrumentation native.

  Pour plus d'informations, consultez la section [Utilisation des OTel points de terminaison.](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-OTLPEndpoint.html)

#### Utilisation OpenTelemetry avec AWS CloudWatch
<a name="opentelemetry-with-cloudwatch"></a>

AWS CloudWatch prend en charge les OpenTelemetry traces via l'instrumentation des applications côté client et les AWS CloudWatch services natifs tels que les signaux d'application, les traces, les cartes, les métriques et les journaux. Pour de plus amples informations, veuillez consulter [OpenTelemetry](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-OpenTelemetry-Sections.html).

## Comprendre les OpenTelemetry concepts relatifs à la migration
<a name="opentelemetry-concepts"></a>

Le tableau suivant fait correspondre les concepts X-Ray à leurs OpenTelemetry équivalents. La compréhension de ces mappages vous aide à traduire votre instrumentation X-Ray existante en OpenTelemetry :


|  Concept X-Ray | OpenTelemetry concept | 
| --- | --- | 
| Enregistreur X-Ray | Fournisseur de traceurs et traceurs | 
| Plug-ins de service | Détecteur de ressources | 
| Segment | Espagne (serveur) | 
| Sous-segment | Span (hors serveur) | 
| Règles d'échantillonnage aux rayons X | OpenTelemetry Échantillonnage (personnalisable) | 
| Émetteur de rayons X | Span Exporter (personnalisable) | 
| Annotations/Métadonnées | Attributes | 
| Instrumentation de bibliothèque | Instrumentation de bibliothèque | 
| Contexte de X-Ray Trace | Contexte de Span | 
| Propagation du contexte de X-Ray Trace | Propagation du contexte de trace du W3C | 
| Échantillonnage de traces par rayons X | OpenTelemetry Échantillonnage de | 
| N/A | Traitement Span | 
| N/A | Baggage | 
| Démon X-Ray | OpenTelemetry Collectionneur | 

**Note**  
Pour plus d'informations sur OpenTelemetry les concepts, consultez la [OpenTelemetry documentation](https://opentelemetry.io/docs).

### Comparaison des fonctionnalités
<a name="feature-comparison"></a>

Le tableau suivant indique les fonctionnalités prises en charge dans les deux services. Utilisez ces informations pour identifier les lacunes que vous devez combler lors de la migration :


| Fonctionnalité | Instrumentation X-Ray | OpenTelemetry instrumentation | 
| --- | --- | --- | 
| Instrumentation de bibliothèque | Pris en charge | Pris en charge | 
| Échantillonnage aux rayons X | Pris en charge | Pris en charge dans OTel Java/.net/GO<br />Pris en charge dans ADOT Java/. NET/Python/Node.js | 
| Propagation du contexte de X-Ray Trace | Pris en charge | Pris en charge | 
| Détection des ressources | Pris en charge | Pris en charge | 
| Annotations de segments | Pris en charge | Pris en charge | 
| Métadonnées du segment | Pris en charge | Pris en charge | 
| Instrumentation automatique à code zéro | Pris en charge en Java | Pris en charge en OTel Java/. NET/Python/Node.js<br />Pris en charge dans ADOT Java/. NET/Python/Node.js | 
| Création manuelle de traces | Pris en charge | Pris en charge | 

### Configuration et configuration du traçage
<a name="tracing-setup-configuration"></a>

Pour créer des traces dans OpenTelemetry, vous avez besoin d'un traceur. Vous obtenez un traceur en initialisant un *fournisseur de traceurs* dans votre application. Cela est similaire à la façon dont vous utilisez le X-Ray Recorder pour configurer X-Ray et créer des segments et des sous-segments dans un X-Ray Trace.

**Note**  
Le OpenTelemetry *Tracer Provider* propose davantage d'options de configuration que le X-Ray Recorder.

#### Comprendre la structure des données de trace
<a name="trace-data"></a>

Après avoir compris les concepts de base et les mappages de fonctionnalités, vous pouvez en apprendre davantage sur les détails de mise en œuvre spécifiques tels que la structure des données de trace et l'échantillonnage.

OpenTelemetry utilise des *étendues plutôt que* des segments et des sous-segments pour structurer les données de suivi. Chaque travée inclut les composants suivants :
+ Nom
+ Identifiant unique
+ Horodatages de début et de fin
+ Type d'envergure
+ Contexte de Span
+ Attributs (métadonnées clé-valeur)
+ Événements (journaux horodatés)
+ Liens vers d'autres spans
+ Informations sur le statut
+ Références relatives à l'espace parent

Lorsque vous migrez vers OpenTelemetry, vos travées sont automatiquement converties en segments ou sous-segments X-Ray. Cela garantit que votre expérience de CloudWatch console existante reste inchangée.

##### Utilisation des attributs span
<a name="span-attributes"></a>

Le SDK X-Ray propose deux méthodes pour ajouter des données aux segments et sous-segments :

Annotations  
Paires clé-valeur indexées pour le filtrage et la recherche

Métadonnées  
Paires clé-valeur contenant des données complexes qui ne sont pas indexées pour la recherche

Par défaut, les attributs OpenTelemetry span sont convertis en métadonnées dans les données brutes de X-Ray. Pour convertir des attributs spécifiques en annotations, ajoutez leurs clés à la liste des `aws.xray.annotations` attributs.
+ Pour plus d'informations sur OpenTelemetry les concepts, voir [OpenTelemetry Traces](https://opentelemetry.io/docs/concepts/signals/traces/)
+ Pour plus de détails sur la façon dont OpenTelemetry les données sont mappées aux données X-Ray, [OpenTelemetry voir Traduction du modèle de données X-Ray](https://aws-otel.github.io/docs/getting-started/X-Ray#otel-to-X-Ray-data-model-translation-behavior-of-aws-X-Ray-exporter)

### Détecter les ressources dans votre environnement
<a name="resource-detection"></a>

OpenTelemetry utilise *des détecteurs de ressources* pour collecter des métadonnées sur les ressources qui génèrent des données de télémétrie. Ces métadonnées sont stockées sous forme d'*attributs de ressource*. Par exemple, une entité produisant de la télémétrie peut être un cluster Amazon ECS ou une instance Amazon EC2, et les attributs de ressources qui peuvent être enregistrés à partir de ces entités peuvent inclure l'ARN du cluster Amazon ECS ou l'ID d'instance Amazon EC2.
+ Pour plus d'informations sur les types de ressources pris en charge, voir [OpenTelemetry Conventions sémantiques des ressources](https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/)
+ Pour plus d'informations sur les plug-ins du service X-Ray, consultez [Configuration du SDK X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python-configuration.html)

### Gestion des stratégies d'échantillonnage
<a name="sampling"></a>

L'échantillonnage de traces vous aide à gérer les coûts en collectant des données à partir d'un sous-ensemble représentatif de demandes plutôt que de toutes les demandes. Les deux, OpenTelemetry ainsi que X-Ray, prennent en charge l'échantillonnage, mais l'implémentent différemment.

**Note**  
L'échantillonnage de moins de 100 % des traces réduit vos coûts d'observabilité tout en conservant des informations pertinentes sur les performances de votre application.

OpenTelemetry fournit plusieurs stratégies d'échantillonnage intégrées et vous permet de créer des stratégies personnalisées. Vous pouvez également configurer un X-Ray *Remote Sampler* dans certains langages du SDK pour utiliser les règles d'échantillonnage X-Ray avec. OpenTelemetry

Les stratégies d'échantillonnage supplémentaires OpenTelemetry sont les suivantes :
+ Échantillonnage basé sur les parents — Respecte la décision d'échantillonnage de l'intervalle parent avant d'appliquer des stratégies d'échantillonnage supplémentaires
+ Échantillonnage basé sur le ratio d'identification des traces — >Échantillonne de manière aléatoire un pourcentage spécifié de plages
+ Échantillonnage de la queue — Applique les règles d'échantillonnage pour compléter les traces dans le OpenTelemetry collecteur
+ Échantillonneurs personnalisés — Implémentez votre propre logique d'échantillonnage à l'aide de l'interface d'échantillonnage

Pour plus d'informations sur les règles d'échantillonnage X-Ray, voir [Règles d'échantillonnage dans la console X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-console-sampling.html)

Pour plus d'informations sur l'échantillonnage de OpenTelemetry la queue, voir [Processeur d'échantillonnage de la queue](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor)

### Gestion du contexte de suivi
<a name="trace-context-management"></a>

X-Ray SDKs gère le contexte du segment pour gérer correctement les relations parent-enfant entre les segments et les sous-segments d'une trace. OpenTelemetry utilise un mécanisme similaire pour s'assurer que les travées ont la bonne étendue parent. Il stocke et propage les données de suivi dans le contexte d'une demande. Par exemple, lorsque votre application traite une demande et crée un intervalle de serveur pour représenter cette demande, OpenTelemetry elle stocke l'intervalle de serveur dans le OpenTelemetry contexte afin que, lorsqu'un intervalle enfant est créé, celui-ci puisse faire référence à l'intervalle du contexte en tant que parent.

### Propagation du contexte de trace
<a name="context-propagation"></a>

X-Ray et OpenTelemetry Use utilisent les en-têtes HTTP pour propager le contexte de trace entre les services. Cela vous permet de relier les données de suivi générées par différents services et de conserver les décisions d'échantillonnage.

Le SDK X-Ray propage automatiquement le contexte de trace à l'aide de l'en-tête X-Ray Trace. Lorsqu'un service en appelle un autre, l'en-tête de trace contient le contexte nécessaire pour maintenir les relations parent-enfant entre les traces.

OpenTelemetry prend en charge plusieurs formats d'en-tête de trace pour la propagation du contexte, notamment :
+ Contexte de trace du W3C (par défaut)
+ En-tête X-Ray Trace
+ Autres formats personnalisés

**Note**  
Vous pouvez configurer OpenTelemetry pour utiliser un ou plusieurs formats d'en-tête. Par exemple, utilisez le X-Ray Propagator pour envoyer le contexte de trace aux AWS services qui prennent en charge le X-Ray Propagator.

Configurez et utilisez le X-Ray Propagator pour activer le suivi entre les AWS services. Cela vous permet de propager le contexte de trace aux points de terminaison API Gateway et aux autres services compatibles avec X-Ray.
+ Pour plus d'informations sur les en-têtes de trace X-Ray, consultez la section [En-tête de traçage](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader) dans le guide du développeur de X-Ray
+ Pour plus d'informations sur OpenTelemetry la propagation du [contexte, voir Contexte et propagation du contexte](https://opentelemetry.io/docs/concepts/context-propagation/) dans la OpenTelemetry documentation

### Utilisation de l'instrumentation de bibliothèque
<a name="library-instrumentations"></a>

X-Ray et OpenTelemetry Supply Library Instrumentation qui nécessitent un minimum de modifications de code pour ajouter du traçage à vos applications.

X-Ray fournit des fonctionnalités d'instrumentation de bibliothèque. Cela vous permet d'ajouter des instruments X-Ray prédéfinis avec un minimum de modifications du code d'application. Ces instruments prennent en charge des bibliothèques spécifiques telles que le AWS SDK et les clients HTTP, ainsi que des frameworks Web tels que Spring Boot ou Express.js.

OpenTelemetryles bibliothèques d'instrumentation génèrent des étendues détaillées pour vos bibliothèques par le biais de crochets de bibliothèque ou de modifications automatiques du code, nécessitant un minimum de modifications de code.

Pour déterminer si OpenTelemetry Library Instrumentations prend en charge votre bibliothèque, recherchez-la dans le OpenTelemetry registre à [OpenTelemetry Registry](https://opentelemetry.io/ecosystem/registry/).

### Exporter des traces
<a name="exporting-traces"></a>

X-Ray et OpenTelemetry utilisez différentes méthodes pour exporter les données de trace.

#### Exportation de X-Ray Trace
<a name="xray-export"></a>

Le X-Ray SDKs utilise un émetteur pour envoyer des données de trace :
+ Envoie des segments et des sous-segments au X-Ray Daemon
+ Utilise le protocole UDP pour des E/S non bloquantes
+ Configuré par défaut dans le SDK

#### OpenTelemetry exportation de traces
<a name="opentelemetry-export"></a>

OpenTelemetry utilise des *Span Exporters* configurables pour envoyer des données de suivi :
+ *Utilise les protocoles *http/proto.buf ou* grpc*
+ Les exportations s'étendent vers les points de terminaison surveillés par le OpenTelemetry collecteur ou l'agent CloudWatch 
+ Permet des configurations d'exportation personnalisées

### Traitement et transmission des traces
<a name="receiving-processing-exporting"></a>

X-Ray et OpenTelemetry Supply fournissent des composants pour recevoir, traiter et transmettre les données de suivi.

#### Traitement des traces X-Ray
<a name="xray-processing"></a>

Le X-Ray Daemon gère le traitement des traces :
+ Écoute le trafic UDP provenant de X-Ray SDKs
+ Lots, segments et sous-segments
+ Télécharge des lots vers le service X-Ray

#### OpenTelemetry traitement des traces
<a name="opentelemetry-processing"></a>

Le OpenTelemetry Collector gère le traitement des traces :
+ Reçoit les traces des services instrumentés
+ Traite et modifie éventuellement les données de suivi
+ Envoie les traces traitées à différents backends, y compris X-Ray

**Note**  
L' AWS CloudWatch agent peut également recevoir et envoyer OpenTelemetry des traces à X-Ray. Pour plus d'informations, consultez la section [Collecter des métriques et des traces avec OpenTelemetry](AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-OpenTelemetry-metrics.html).

### Traitement de l'OpenTelemetryenvergure (concept spécifique)
<a name="span-processing"></a>

OpenTelemetry utilise les processeurs Span pour modifier les spans au fur et à mesure de leur création :
+ Permet de lire et de modifier les travées lors de leur création ou de leur achèvement
+ Active une logique personnalisée pour la gestion de l'intervalle

### OpenTelemetryBagages (concept spécifique)
<a name="baggage"></a>

OpenTelemetryLa fonction Baggage permet la propagation de données clé-valeur :
+ Permet de transmettre des données arbitraires à côté du contexte de trace
+ Utile pour diffuser des informations spécifiques à une application au-delà des limites des services

Pour plus d'informations sur le OpenTelemetry Collector, voir [OpenTelemetry Collector](https://opentelemetry.io/docs/collector/)

Pour plus d'informations sur les concepts de X-Ray, voir les [concepts de X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html) dans le X-Ray Developer Guide

## Présentation de la migration
<a name="migration-overview"></a>

Cette section fournit une vue d'ensemble des modifications de code requises pour la migration. La liste ci-dessous contient des instructions spécifiques à la langue et les étapes de migration de X-Ray Daemon.

**Important**  
Pour effectuer une migration complète de l'instrumentation X-Ray vers l' OpenTelemetry instrumentation, vous devez :  
Remplacez l'utilisation du SDK X-Ray par une solution OpenTelemetry 
Remplacez le daemon X-Ray par l' CloudWatch agent ou le OpenTelemetry collecteur (avec X-Ray Exporter)
+ [Migration vers Java OpenTelemetry](xray-migration-opentelemetry.md)
+ [Migrer vers OpenTelemetry Go](manual-instrumentation-go.md)
+ [Migrer vers OpenTelemetry Node.js](migrate-xray-to-opentelemetry-nodejs.md)
+ [Migrer vers OpenTelemetry .NET](introduction-dotnet.md)
+ [Migrer vers OpenTelemetry Python](migrate-xray-to-opentelemetry-python.md)
+ [Migrer vers OpenTelemetry Ruby](migrate-xray-to-opentelemetry-ruby.md)

### Recommandations pour les applications nouvelles et existantes
<a name="new-applications"></a>

Pour les applications nouvelles et existantes, il est recommandé d'utiliser les solutions suivantes pour activer le suivi dans vos applications :

Instrumentation  
+ OpenTelemetry SDKs
+ AWS Distro pour instrumentation OpenTelemetry 

Collecte de données  
+ OpenTelemetry Collectionneur
+ CloudWatch Agent

Après la migration vers des solutions OpenTelemetry basées, votre CloudWatch expérience restera la même. Vous pourrez toujours consulter vos traces dans le même format sur les pages Traces et Trace Map de la CloudWatch console, ou récupérer vos données de trace via le [X-Ray APIs](https://docs.aws.amazon.com/xray/latest/devguide/xray-api.html).

### Modification de la configuration du suivi
<a name="tracing-setup-migration"></a>

Vous devez remplacer la configuration X-Ray par une OpenTelemetry configuration.


**Comparaison entre X-Ray et OpenTelemetry configuration**  

| Fonctionnalité | Kit de développement X-Ray | OpenTelemetry | 
| --- | --- | --- | 
| Configurations par défaut |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/xray/latest/devguide/xray-sdk-migration.html)  |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/xray/latest/devguide/xray-sdk-migration.html)  | 
| Configurations manuelles |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/xray/latest/devguide/xray-sdk-migration.html)  |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/fr_fr/xray/latest/devguide/xray-sdk-migration.html)  | 

### Modifications apportées aux instruments de bibliothèque
<a name="library-instrumentation-migration"></a>

Mettez à jour votre code pour utiliser OpenTelemetry Library Instrumentation au lieu de X-Ray Library Instrumentation pour le AWS SDK, les clients HTTP, les frameworks Web et d'autres bibliothèques. Cela génère OpenTelemetry des Traces au lieu de X-Ray Traces.

**Note**  
Les modifications de code varient en fonction de la langue et de la bibliothèque. Reportez-vous aux guides de migration spécifiques aux langues pour obtenir des instructions détaillées.

### Modifications apportées à l'instrumentation de l'environnement Lambda
<a name="lambda-instrumentation-migration"></a>

Pour l'utiliser OpenTelemetry dans vos fonctions Lambda, choisissez l'une des options de configuration suivantes :

1. Utilisez une couche Lambda d'auto-instrumentation :
   + Couche [AWS Lambda](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-Enable-LambdaMain.html) (recommandée) pour OpenTelemetry
**Note**  
Pour utiliser uniquement le traçage, définissez la variable d'environnement Lambda. `OTEL_AWS_APPLICATION_SIGNALS_ENABLED=false`
   + [AWS couche Lambda gérée pour ADOT](https://aws-otel.github.io/docs/getting-started/lambda)

1. Configuration manuelle OpenTelemetry de votre fonction Lambda :
   + Configuration d'un processeur Simple Span avec un X-Ray UDP Span Exporter
   + Configuration d'un propagateur X-Ray Lambda

### Création manuelle de données de trace
<a name="manually-creating-trace-data"></a>

Remplacez les segments et sous-segments de X-Ray par des OpenTelemetry Spans :
+ Utiliser un OpenTelemetry traceur pour créer des spans
+ Ajouter des attributs à Spans (équivalent aux métadonnées et aux annotations de X-Ray)

**Important**  
Lorsqu'il est envoyé à X-Ray :  
Les étendues de serveurs sont converties en segments X-Ray
Les autres spans sont convertis en sous-segments X-Ray
Les attributs sont convertis en métadonnées par défaut

Pour convertir un attribut en annotation, ajoutez sa clé à la liste des `aws.xray.annotations` attributs. Pour plus d'informations, voir [Activer les annotations X-Ray personnalisées](https://aws-otel.github.io/docs/getting-started/x-ray#enable-the-customized-x-ray-annotations).

## Migration de X-Ray Daemon vers un AWS CloudWatch agent ou un collecteur OpenTelemetry
<a name="xray-Daemon-migration"></a>

Vous pouvez utiliser l' CloudWatch agent ou le OpenTelemetry collecteur pour recevoir les traces de vos applications instrumentées et les envoyer à X-Ray.

**Note**  
Les versions 1.300025.0 et ultérieures de l' CloudWatch agent peuvent collecter des traces. OpenTelemetry L'utilisation de l' CloudWatch agent au lieu du X-Ray Daemon réduit le nombre d'agents à gérer. Pour plus d'informations, consultez la section [Collecte de métriques, de journaux et de traces avec l' CloudWatch agent](AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html).

**Topics**
+ [Migration sur Amazon EC2 ou sur des serveurs locaux](#ec2-onprem-migration)
+ [Migration sur Amazon ECS](#ecs-migration)
+ [Migration sur Elastic Beanstalk](#beanstalk-migration)

### Migration sur Amazon EC2 ou sur des serveurs locaux
<a name="ec2-onprem-migration"></a>

**Important**  
Arrêtez le processus X-Ray Daemon avant d'utiliser l' CloudWatch agent ou le OpenTelemetry collecteur pour éviter les conflits de ports.

#### Configuration existante de X-Ray Daemon
<a name="xray-daemon-setup"></a>

##### Installation du daemon
<a name="install-daemon"></a>

Votre utilisation actuelle de X-Ray Daemon a été installée à l'aide de l'une des méthodes suivantes :

Installation manuelle  
Téléchargez et exécutez le fichier exécutable depuis le bucket Amazon S3 du daemon X-Ray.

Installation automatique  
Utilisez ce script pour installer le daemon lors du lancement d'une instance :  

```
#!/bin/bash
curl https://s3.us-east-2.amazonaws.com/aws-xray-assets.us-east-2/xray-daemon/aws-xray-daemon-3.x.rpm \
    -o /home/ec2-user/xray.rpm
yum install -y /home/ec2-user/xray.rpm
```

##### Configuration du démon
<a name="configure-daemon"></a>

Votre utilisation actuelle de X-Ray Daemon a été configurée à l'aide de l'une des méthodes suivantes :
+ Arguments de ligne de commande
+ Fichier de configuration (`xray-daemon.yaml`)

**Example Utilisation d'un fichier de configuration**  

```
./xray -c ~/xray-daemon.yaml
```

##### Exécution du démon
<a name="run-daemon"></a>

Votre utilisation actuelle de X-Ray Daemon a été lancée avec la commande suivante :

```
~/xray-daemon$ ./xray -o -n us-east-1
```

##### Supprimer le daemon
<a name="uninstall-daemon"></a>

Pour supprimer le daemon X-Ray de votre instance Amazon EC2, procédez comme suit :

1. Arrêtez le service daemon :

   ```
   systemctl stop xray
   ```

1. Supprimez le fichier de configuration :

   ```
   rm ~/{{path}}/{{to}}/xray-daemon.yaml
   ```

1. S'il est configuré, supprimez le fichier journal :
**Note**  
L'emplacement du fichier journal dépend de votre configuration :  
Configuration de la ligne de commande : `/var/log/xray-daemon.log`
Fichier de configuration : Vérifiez le `LogPath` réglage

#### Configuration de l' CloudWatch agent
<a name="setup-cloudwatch-agent"></a>

##### Installation de l'agent
<a name="cloudwatch-installation"></a>

Pour les instructions d'installation, reportez-vous à [la section Installation de l' CloudWatch agent sur un serveur local](AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html#install-CloudWatch-Agent-iam_user-first).

##### Configuration de l'agent
<a name="cloudwatch-configuration"></a>

1. Créez un fichier de configuration pour activer la collecte de traces. Pour plus d'informations, consultez la section [Création du fichier de configuration de l' CloudWatch agent](AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file.html).

1. Configurez les autorisations IAM :
   + Attachez un rôle IAM ou spécifiez les informations d'identification de l'agent. Pour plus d'informations, consultez la section [Configuration des rôles IAM](AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html#install-CloudWatch-Agent-iam_permissions-first).
   + Assurez-vous que le rôle ou les informations d'identification incluent l'`xray:PutTraceSegments`autorisation.

##### Démarrage de l'agent
<a name="cloudwatch-start"></a>

Pour obtenir des instructions sur le démarrage de l'agent, reportez-vous à la section [Démarrage de l' CloudWatch agent à l'aide de la ligne de commande](AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html#start-CloudWatch-Agent-EC2-commands-fleet).

#### Configuration du OpenTelemetry collecteur
<a name="setup-otel-collector"></a>

##### Installation du collecteur
<a name="otel-installation"></a>

Téléchargez et installez le OpenTelemetry collecteur adapté à votre système d'exploitation. Pour obtenir des instructions, reportez-vous à la section [Installation du collecteur](https://opentelemetry.io/docs/collector/installation/).

##### Configuration du collecteur
<a name="otel-configuration"></a>

Configurez les composants suivants dans votre collecteur :
+ extension awsproxy

  Nécessaire pour l'échantillonnage aux rayons X
+ OTel récepteurs

  Recueille les traces de votre application
+ exportateur de rayons X

  Envoie des traces à X-Ray

**Example Configuration du collecteur d'échantillons — otel-collector-config .yaml**  

```
extensions:
  awsproxy:
    endpoint: 127.0.0.1:2000
  health_check:

receivers:
  otlp:
    protocols:
      grpc:
        endpoint: 127.0.0.1:4317
      http:
        endpoint: 127.0.0.1:4318

processors:
  batch:

exporters:
  awsxray:
    region: 'us-east-1'

service:
  pipelines:
    traces:
      receivers: [otlp]
      exporters: [awsxray]
  extensions: [awsproxy, health_check]
```

**Important**  
Configurez AWS les informations d'identification avec l'`xray:PutTraceSegments`autorisation. Pour plus d'informations, consultez la section [Spécification des informations d'identification](sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials).

##### Démarrage du collecteur
<a name="otel-start"></a>

Lancez le collecteur avec votre fichier de configuration :

```
otelcol --config=otel-collector-config.yaml
```

### Migration sur Amazon ECS
<a name="ecs-migration"></a>

**Important**  
Votre rôle de tâche doit être `xray:PutTraceSegments` autorisé pour tous les collecteurs que vous utilisez.  
Arrêtez tout conteneur X-Ray Daemon existant avant d'exécuter l' CloudWatch agent ou le conteneur OpenTelemetry collecteur sur le même hôte afin d'éviter les conflits de ports.

#### Utilisation de l' CloudWatch agent
<a name="ecs-cloudwatch"></a>

1. Obtenez l'image Docker dans la galerie [publique Amazon ECR.](https://gallery.ecr.aws/cloudwatch-agent/cloudwatch-agent)

1. Créez un fichier de configuration nommé `cw-agent-otel.json` :

   ```
   {
     "traces": {
       "traces_collected": {
         "xray": {
           "tcp_proxy": {
             "bind_address": "0.0.0.0:2000"
           }
         },
         "otlp": {
           "grpc_endpoint": "0.0.0.0:4317",
           "http_endpoint": "0.0.0.0:4318"
         }
       }
     }
   }
   ```

1. Stockez la configuration dans le magasin de paramètres de Systems Manager :

   1. Ouvrez le fichier [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)

   1. Choisissez **Créer un paramètre**

   1. Entrez les valeurs suivantes :
      + Nom : `/ecs/cwagent/otel-config`
      + Niveau : Standard
      + Type : Chaîne
      + Type de données : Texte
      + Valeur : [Collez la configuration cw-agent-otel .json ici]

1. Créez une définition de tâche en utilisant le mode réseau en pont :

   Dans votre définition de tâche, la configuration dépend du mode de mise en réseau que vous utilisez. La mise en réseau par pont est le mode par défaut et peut être utilisé dans votre VPC par défaut. Dans un réseau en pont, définissez la variable d'`OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`environnement pour indiquer au OpenTelemetry SDK quels sont le point de terminaison et le port de l' CloudWatch agent. Vous devez également créer un lien entre le conteneur de votre application et le conteneur Collector pour que les traces soient envoyées depuis le OpenTelemetry SDK de votre application vers le conteneur Collector.   
**Example CloudWatch définition de la tâche de l'agent**  

   ```
   {
       "containerDefinitions": [
           {
               "name": "cwagent",
               "image": "public.ecr.aws/cloudwatch-agent/cloudwatch-agent:latest",
               "portMappings": [
                   {
                       "containerPort": 4318,
                       "hostPort": 4318,
                       "protocol": "tcp"
                   },
                   {
                       "containerPort": 4317,
                       "hostPort": 4317,
                       "protocol": "tcp"
                   },
                   {
                       "containerPort": 2000,
                       "hostPort": 2000,
                       "protocol": "tcp"
                   }
               ],
               "secrets": [
                   {
                       "name": "CW_CONFIG_CONTENT",
                       "valueFrom": "/ecs/cwagent/otel-config"
                   }
               ]
           },
           {
               "name": "application",
               "image": "APPLICATION_IMAGE",
               "links": ["cwagent"],
               "environment": [
                   {
                       "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT",
                       "value": "http://cwagent:4318/v1/traces"
                   }
               ]
           }
       ]
   }
   ```

Pour plus d'informations, consultez [Déploiement de l' CloudWatch agent pour collecter des métriques au niveau de l'instance Amazon EC2 sur](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/deploy-container-insights-ECS-instancelevel.html) Amazon ECS.

#### Utilisation du OpenTelemetry collecteur
<a name="ecs-otel"></a>

1. Obtenez l'image Docker `otel/opentelemetry-collector-contrib` depuis [Docker Hub](https://hub.docker.com/r/otel/opentelemetry-collector-contrib).

1. Créez un fichier de configuration appelé `otel-collector-config.yaml` en utilisant le même contenu que celui indiqué dans la section **Amazon EC2 consacrée à la configuration du collecteur**, mais mettez à jour les points de terminaison à utiliser `0.0.0.0` à la place de. `127.0.0.1`

1. Pour utiliser cette configuration dans Amazon ECS, vous pouvez la stocker dans le magasin de paramètres Systems Manager. Accédez d'abord à la console Systems Manager Parameter Store, puis choisissez **Create new parameter**. Créez un nouveau paramètre avec les informations suivantes :
   + Nom :/ecs/otel/config(ce nom sera référencé dans la définition de tâche pour le collecteur)
   + Niveau : Standard
   + Type : Chaîne
   + Type de données : Texte
   + Valeur : [Collez la configuration otel-collector-config .yaml ici]

1. Créez une définition de tâche pour déployer le OpenTelemetry collecteur en utilisant le mode réseau en pont comme exemple.

   Dans la définition de la tâche, la configuration dépend du mode réseau que vous utilisez. La mise en réseau par pont est le mode par défaut et peut être utilisé dans votre VPC par défaut. Dans un réseau en pont, définissez la variable d'`OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`environnement pour indiquer au OpenTelemetry SDK quels sont le point de terminaison et le port du OpenTelemetry collecteur. Vous devez également créer un lien entre le conteneur de votre application et le conteneur Collector pour que les traces soient envoyées depuis le OpenTelemetry SDK de votre application vers le conteneur Collector.   
**Example OpenTelemetry définition de la tâche du collecteur**  

   ```
   {
       "containerDefinitions": [
           {
               "name": "otel-collector",
               "image": "otel/opentelemetry-collector-contrib",
               "portMappings": [
                   {
                       "containerPort": 2000,
                       "hostPort": 2000
                   },
                   {
                       "containerPort": 4317,
                       "hostPort": 4317
                   },
                   {
                       "containerPort": 4318,
                       "hostPort": 4318
                   }
               ],
               "command": [
                   "--config",
                   "env:SSM_CONFIG"
               ],
               "secrets": [
                   {
                       "name": "SSM_CONFIG",
                       "valueFrom": "/ecs/otel/config"
                   }
               ]
           },
           {
               "name": "application",
               "image": "APPLICATION_IMAGE",
               "links": ["otel-collector"],
               "environment": [
                   {
                       "name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT",
                       "value": "http://otel-collector:4318/v1/traces"
                   }
               ]
           }
       ]
   }
   ```

### Migration sur Elastic Beanstalk
<a name="beanstalk-migration"></a>

**Important**  
Arrêtez le processus X-Ray Daemon avant d'utiliser l' CloudWatch agent pour éviter les conflits de ports.

Votre intégration X-Ray Daemon existante a été activée à l'aide de la console Elastic Beanstalk ou en configurant X-Ray Daemon dans le code source de votre application à l'aide d'un fichier de configuration.

#### Utilisation de l' CloudWatch agent
<a name="beanstalk-cloudwatch"></a>

Sur la plateforme Amazon Linux 2, configurez l' CloudWatch agent à l'aide d'un fichier `.ebextensions` de configuration :

1. Créez un répertoire nommé `.ebextensions` à la racine de votre projet

1. Créez un fichier nommé `cloudwatch.config` dans le `.ebextensions` répertoire avec le contenu suivant :

   ```
   files:
     "/opt/aws/amazon-cloudwatch-agent/etc/config.json":
       mode: "0644"
       owner: root
       group: root
       content: |
         {
           "traces": {
             "traces_collected": {
               "otlp": {
                 "grpc_endpoint": "12.0.0.1:4317",
                 "http_endpoint": "12.0.0.1:4318"
               }
             }
           }
         }
   container_commands:
     start_agent:
       command: /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -c file:/opt/aws/amazon-cloudwatch-agent/etc/config.json -s
   ```

1. Incluez le `.ebextensions` répertoire dans le bundle de sources de votre application lors du déploiement

Pour plus d'informations sur les fichiers de configuration d'Elastic Beanstalk[, consultez la section Personnalisation avancée](elasticbeanstalk/latest/dg/ebextensions.html) de l'environnement avec les fichiers de configuration.