

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Migración de la instrumentación de rayos X a la instrumentación OpenTelemetry
<a name="xray-sdk-migration"></a>

**nota**  
Aviso de SDK/Daemon mantenimiento de X-Ray: el 25 de febrero de 2026, el AWS X-Ray SDKs/Daemon entrará en modo de mantenimiento, donde AWS se limitarán las versiones de X-Ray SDK y Daemon para abordar únicamente los problemas de seguridad. Para obtener más información sobre la cronología del soporte, consulte [Cronología de X-Ray SDK y Daemon Support](xray-sdk-daemon-timeline.md).

 X-Ray está pasando a ser OpenTelemetry (OTel) su principal estándar de instrumentación para el rastreo y la observabilidad de las aplicaciones. Este cambio estratégico se alinea AWS con las mejores prácticas de la industria y ofrece a los clientes una solución más completa, flexible y preparada para el futuro para sus necesidades de observabilidad. OpenTelemetrySu amplia adopción en la industria permite rastrear las solicitudes en diversos sistemas, incluidos aquellos externos AWS que pueden no integrarse directamente con X-Ray. 

En este capítulo se ofrecen recomendaciones para una transición fluida y se hace hincapié en la importancia de migrar a soluciones OpenTelemetry basadas en sistemas para garantizar el soporte y el acceso continuos a las funciones más recientes en materia de observabilidad e instrumentación de aplicaciones.

Se recomienda adoptarla OpenTelemetry como solución de observabilidad para instrumentar su aplicación.

**Topics**
+ [Comprensión OpenTelemetry](#migration-to-opentelemetry)
+ [Comprensión OpenTelemetry de los conceptos de migración](#opentelemetry-concepts)
+ [Información general sobre la migración](#migration-overview)
+ [Migración de X-Ray Daemon a AWS CloudWatch agente o recopilador OpenTelemetry](#xray-Daemon-migration)
+ [Migración a Java OpenTelemetry](xray-migration-opentelemetry.md)
+ [Migre a OpenTelemetry Go](manual-instrumentation-go.md)
+ [Migre a Node.js OpenTelemetry](migrate-xray-to-opentelemetry-nodejs.md)
+ [Migre a.NET OpenTelemetry](introduction-dotnet.md)
+ [Migrar a OpenTelemetry Python](migrate-xray-to-opentelemetry-python.md)
+ [Migre a Ruby OpenTelemetry](migrate-xray-to-opentelemetry-ruby.md)

## Comprensión OpenTelemetry
<a name="migration-to-opentelemetry"></a>

OpenTelemetry es un marco de observabilidad estándar del sector que proporciona protocolos y herramientas estandarizados para recopilar datos de telemetría. Ofrece un enfoque unificado para instrumentar, generar, recopilar y exportar datos de telemetría como métricas, registros y rastros.

Al migrar de X-Ray SDKs a OpenTelemetry, obtiene los siguientes beneficios:
+ Soporte mejorado con el marco y la instrumentación de bibliotecas
+ Soporte para lenguajes de programación adicionales
+ Capacidades de instrumentación automática
+ Opciones de configuración de muestreo flexibles
+ Recopilación unificada de métricas, registros y rastros

El OpenTelemetry recopilador ofrece más opciones para los formatos de recopilación de datos y los destinos de exportación que el daemon X-Ray.

### OpenTelemetry soporte en AWS
<a name="opentelemetry-support"></a>

AWS proporciona múltiples soluciones para trabajar con OpenTelemetry:
+ AWS Distro para OpenTelemetry

  Exporte OpenTelemetry trazas como segmentos a X-Ray.

  Para obtener más información, consulte [AWS Distro for OpenTelemetry](https://aws-otel.github.io/).
+ CloudWatch Señales de aplicación

  Exporte OpenTelemetry trazas y métricas personalizadas para supervisar el estado de las aplicaciones.

  Para obtener más información, consulte [Trabajo con Application Signals](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Monitoring-Sections.html).
+ CloudWatch OTel Punto final

  Exporte OpenTelemetry las trazas a X-Ray mediante el OTel punto final HTTP con OpenTelemetry instrumentación nativa.

  Para obtener más información, consulte [Uso de puntos OTel finales](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-OTLPEndpoint.html).

#### Utilización con OpenTelemetry AWS CloudWatch
<a name="opentelemetry-with-cloudwatch"></a>

AWS CloudWatch admite los OpenTelemetry rastreos a través de la instrumentación de aplicaciones del lado del cliente y de AWS CloudWatch servicios nativos, como Application Signals, Trace, Map, Metrics y Logs. Para obtener más información, consulte [OpenTelemetry](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-OpenTelemetry-Sections.html).

## Comprensión OpenTelemetry de los conceptos de migración
<a name="opentelemetry-concepts"></a>

La siguiente tabla mapea los conceptos de X-Ray con sus OpenTelemetry equivalentes. Comprender estos mapeos le ayuda a traducir su instrumentación de rayos X existente a: OpenTelemetry


|  Concepto de X-Ray | OpenTelemetry concepto | 
| --- | --- | 
| Grabadora de X-Ray | Proveedor de rastreador y rastreadores | 
| Complementos del servicio | Detectores de recursos | 
| Segmento | (Servidor) Intervalo | 
| Subsegmento | Intervalo (sin servidor) | 
| Reglas de muestreo de X-Ray | OpenTelemetry Muestreo (personalizable) | 
| Emisor de X-Ray | Exportador de intervalos (personalizable) | 
| Anotaciones/metadatos | Atributos | 
| Instrumentación de biblioteca | Instrumentación de biblioteca | 
| Contexto de rastro de X-Ray | Contexto del intervalo | 
| Propagación de contexto del rastro de X-Ray | Propagación de contexto de rastro de W3C | 
| Muestreo del rastro de X-Ray | OpenTelemetry Muestreo de rastros | 
| N/A | Procesamiento del intervalo | 
| N/A | Equipaje | 
| Daemon de X-Ray | OpenTelemetry Coleccionista | 

**nota**  
Para obtener más información sobre OpenTelemetry los conceptos, consulte la [OpenTelemetry documentación](https://opentelemetry.io/docs).

### Comparación de características
<a name="feature-comparison"></a>

En la tabla siguiente se muestran las características admitidas en ambos servicios. Utilice esta información para identificar las brechas que necesite abordar durante la migración:


| Característica | Instrumentación de X-Ray | OpenTelemetry instrumentación | 
| --- | --- | --- | 
| Instrumentación de biblioteca | Soportado |  compatible | 
| Muestreo de X-Ray |  compatible |  Compatible con java/.net/GO OTel  Compatible con ADOT Java/. NET/Python/Node.js | 
| Propagación de contexto del rastro de X-Ray | Soportado |  compatible | 
| Detección de recursos | Soportado |  compatible | 
| Anotaciones de segmentos | Soportado |  compatible | 
| Metadatos del segmento | Soportado |  compatible | 
| Instrumentación automática sin código | Compatible con Java |  Compatible con OTel Java/. NET/Python/Node.js Compatible con ADOT Java/. NET/Python/Node.js | 
| Creación de rastros manuales | Soportado |  compatible | 

### Instalación y configuración del rastro
<a name="tracing-setup-configuration"></a>

Para crear trazas OpenTelemetry, necesitas un rastreador. Para obtener un rastreador, debe inicializar un *proveedor de rastreadores* en la aplicación. Esto es similar a la forma en que se utiliza la grabadora de X-Ray para configurar X-Ray y crear segmentos y subsegmentos en un rastro de X-Ray.

**nota**  
El OpenTelemetry *Tracer Provider* ofrece más opciones de configuración que el grabador de rayos X.

#### Descripción de la estructura de datos de rastros
<a name="trace-data"></a>

Tras comprender los conceptos básicos y las asignaciones de características, podrá obtener información sobre los detalles específicos de la implementación, como la estructura de los datos de rastros y el muestreo.

OpenTelemetry utiliza *tramos* en lugar de segmentos y subsegmentos para estructurar los datos de rastreo. Cada intervalo incluye los siguientes componentes:
+ Name
+ ID único
+ Marcas de tiempo de inicio y finalización
+ Tipo de intervalo
+ Contexto del intervalo
+ Atributos (metadatos clave-valor)
+ Eventos (registros con fecha y hora)
+ Enlaces a otros intervalos
+ Información del estado
+ Referencias de intervalo principal

Al migrar a OpenTelemetry, los tramos se convierten automáticamente en segmentos o subsegmentos de X-Ray. Esto garantiza que su experiencia de CloudWatch consola actual permanezca inalterada.

##### Uso de atributos de intervalo
<a name="span-attributes"></a>

El SDK de X-Ray ofrece dos formas de agregar datos a segmentos y subsegmentos:

Anotaciones  
Pares clave-valor que se indexan para filtrar y buscar

Metadatos  
Pares clave-valor que contienen datos complejos que no están indexados para la búsqueda

De forma predeterminada, los atributos OpenTelemetry span se convierten en metadatos en los datos sin procesar de X-Ray. Para convertir atributos específicos en anotaciones, agregue sus claves a la lista de atributos `aws.xray.annotations`.
+ Para obtener más información sobre OpenTelemetry los conceptos, consulte [OpenTelemetry Traces](https://opentelemetry.io/docs/concepts/signals/traces/)
+ Para obtener más información sobre cómo OpenTelemetry los datos se asignan a los datos de rayos X, consulte [OpenTelemetry Traducción de modelos de datos de rayos X](https://aws-otel.github.io/docs/getting-started/X-Ray#otel-to-X-Ray-data-model-translation-behavior-of-aws-X-Ray-exporter)

### Detección de recursos en el entorno
<a name="resource-detection"></a>

OpenTelemetry usa *Resource Detectors* para recopilar metadatos sobre los recursos que generan datos de telemetría. Estos metadatos se almacenan como *atributos de recurso*. Por ejemplo, una entidad que produce telemetría podría ser un clúster de Amazon ECS o una instancia de Amazon EC2, y los atributos de recursos que se pueden registrar desde estas entidades pueden incluir el ARN del clúster de Amazon ECS o el ID de instancia de Amazon EC2.
+ Para obtener información sobre los tipos de recursos compatibles, consulte Convenciones semánticas [OpenTelemetry de recursos](https://opentelemetry.io/docs/reference/specification/resource/semantic_conventions/)
+ Para obtener información acerca de los complementos del servicio de X-Ray, consulte [Configuración del SDK de X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python-configuration.html),

### Administración de las estrategias de muestreo
<a name="sampling"></a>

El muestreo de rastros le ayuda a administrar los costos al recopilar datos de un subconjunto representativo de solicitudes en lugar de todas las solicitudes. OpenTelemetry Tanto X-Ray como X-Ray admiten el muestreo, pero lo implementan de manera diferente.

**nota**  
El muestreo de menos del 100 % de los rastros reduce los costos de observabilidad y, al mismo tiempo, mantiene una visión significativa del rendimiento de la aplicación.

OpenTelemetry proporciona varias estrategias de muestreo integradas y le permite crear estrategias personalizadas. También puede configurar un *muestreador remoto* de rayos X en algunos lenguajes del SDK para utilizar las reglas de muestreo de rayos X. OpenTelemetry

Las estrategias de muestreo adicionales OpenTelemetry son las siguientes:
+ Muestreo basado en el principal: respeta la decisión de muestreo del intervalo principal antes de aplicar estrategias de muestreo adicionales
+ Muestreo basado en la proporción de rastros: >Muestrea aleatoriamente un porcentaje específico de intervalos
+ Muestreo de cola: aplica las reglas de muestreo para completar las trazas en el OpenTelemetry colector
+ Muestreadores personalizados: implemente su propia lógica de muestreo mediante la interfaz de muestreo

Para obtener información sobre las reglas de muestreo de X-Ray, consulte [Reglas de muestreo en la consola de X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-console-sampling.html).

Para obtener información sobre el muestreo de OpenTelemetry la cola, consulte el [procesador de muestreo de la cola](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/tailsamplingprocessor)

### Administración del contexto de rastros
<a name="trace-context-management"></a>

X-Ray SDKs gestiona el contexto del segmento para gestionar correctamente las relaciones padre-hijo entre los segmentos y los subsegmentos de una traza. OpenTelemetry utiliza un mecanismo similar para garantizar que los tramos tengan el intervalo principal correcto. Almacena y propaga los datos de rastreo en todo el contexto de una solicitud. Por ejemplo, cuando la aplicación procesa una solicitud y crea un intervalo de servidor que represente esa solicitud, OpenTelemetry almacenará el intervalo de servidores en el OpenTelemetry contexto de modo que, cuando se cree un intervalo secundario, dicho intervalo secundario pueda hacer referencia al intervalo del contexto como su principal.

### Propagación del contexto de rastro
<a name="context-propagation"></a>

Tanto X-Ray como yo OpenTelemetry utilizan encabezados HTTP para propagar el contexto de rastreo en todos los servicios. Esto le permite vincular los datos de rastros generados por diferentes servicios y mantener las decisiones de muestreo.

El SDK de X-Ray propaga automáticamente el contexto de rastro mediante el encabezado de rastro de X-Ray. Cuando un servicio llama a otro, el encabezado de rastro contiene el contexto necesario para mantener las relaciones principal-secundario entre los rastros.

OpenTelemetry admite varios formatos de encabezados de rastreo para la propagación del contexto, entre los que se incluyen:
+ Contexto de rastro de W3C (predeterminado)
+ Encabezado de rastro de X-Ray
+ Otros formatos personalizados

**nota**  
Puede configurarlo OpenTelemetry para usar uno o más formatos de encabezado. Por ejemplo, utilice el propagador de rayos X para enviar el contexto de rastreo a AWS los servicios que admiten el rastreo de rayos X.

Configure y utilice el propagador de rayos X para permitir el rastreo entre AWS los servicios. Esto le permite propagar el contexto de rastros a los puntos de conexión de API Gateway y otros servicios compatibles con X-Ray.
+ Para obtener información acerca de los encabezados de rastro de X-Ray, consulte [Encabezado de rastreo](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader) en la Guía para desarrolladores de X-Ray.
+ Para obtener información sobre la propagación OpenTelemetry del contexto, consulte [Contexto y propagación del contexto en la](https://opentelemetry.io/docs/concepts/context-propagation/) documentación OpenTelemetry 

### Uso de la instrumentación de biblioteca
<a name="library-instrumentations"></a>

Tanto X-Ray como OpenTelemetry yo proporcionan instrumentación de biblioteca que requiere cambios mínimos en el código para añadir el rastreo a sus aplicaciones.

X-Ray proporciona funcionalidades de instrumentación de biblioteca. Esto le permite agregar instrumentaciones de X-Ray prediseñadas con cambios mínimos en el código de la aplicación. Estas instrumentaciones son compatibles con bibliotecas específicas, como el AWS SDK y los clientes HTTP, así como con marcos web como Spring Boot o Express.js.

OpenTelemetryLas bibliotecas de instrumentación generan extensiones detalladas para sus bibliotecas mediante enlaces a las bibliotecas o mediante la modificación automática del código, lo que requiere cambios mínimos en el código.

[Para determinar si Library Instrumentations OpenTelemetry es compatible con su biblioteca, búsquela en el OpenTelemetry Registro de Registry. OpenTelemetry ](https://opentelemetry.io/ecosystem/registry/)

### Exportación de rastros
<a name="exporting-traces"></a>

X-Ray y OpenTelemetry utilizan diferentes métodos para exportar los datos de rastreo.

#### Exportación de rastros de X-Ray
<a name="xray-export"></a>

Los X-Ray SDKs utilizan un emisor para enviar datos de rastreo:
+ Envía segmentos y subsegmentos al daemon de X-Ray
+ Utiliza UDP para E/S sin bloqueo
+ Configurado de forma predeterminada en el SDK

#### OpenTelemetry exportación de trazas
<a name="opentelemetry-export"></a>

OpenTelemetry utiliza *Span Exporters* configurables para enviar datos de rastreo:
+ Usa los protocolos *http/protobuf* o *grpc*
+ Exporta los tramos a los puntos finales supervisados por el OpenTelemetry recopilador o el agente CloudWatch 
+ Permite configurar los exportadores de forma personalizada

### Procesamiento y reenvío de rastros
<a name="receiving-processing-exporting"></a>

Tanto X-Ray como OpenTelemetry yo proporcionan componentes para recibir, procesar y reenviar datos de rastreo.

#### Procesamiento de rastros de X-Ray
<a name="xray-processing"></a>

El demon de X-Ray gestiona el procesamiento de rastros:
+ Escucha el tráfico UDP de X-Ray SDKs
+ Segmentos y subsegmentos por lotes
+ Carga lotes al servicio de X-Ray

#### OpenTelemetry procesamiento de trazas
<a name="opentelemetry-processing"></a>

El OpenTelemetry recopilador gestiona el procesamiento de trazas:
+ Recibe rastros de servicios instrumentados
+ Procesa y, opcionalmente, modifica los datos de rastros
+ Envía los rastros procesados a varios backends, incluido X-Ray

**nota**  
El AWS CloudWatch agente también puede recibir y enviar OpenTelemetry trazas a X-Ray. Para obtener más información, consulte [Recopile métricas y rastreos con OpenTelemetry](AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-OpenTelemetry-metrics.html).

### Procesamiento de intervalos (concepto OpenTelemetry específico)
<a name="span-processing"></a>

OpenTelemetry utiliza procesadores Span para modificar los intervalos a medida que se crean:
+ Permite leer y modificar los intervalos al crearlos o completarlos
+ Permite una lógica personalizada para el manejo de los intervalos

### Equipaje (OpenTelemetryconcepto específico)
<a name="baggage"></a>

OpenTelemetryLa función de equipaje permite la propagación de datos clave-valor:
+ Permite pasar datos arbitrarios junto con el contexto de rastro
+ Útil para propagar información específica de la aplicación más allá de los límites del servicio

[Para obtener información sobre el OpenTelemetry recopilador, consulte el recopilador OpenTelemetry ](https://opentelemetry.io/docs/collector/)

Para obtener información acerca de los conceptos de X-Ray, consulte [Conceptos de X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html) en la Guía para desarrolladores de X-Ray.

## Información general sobre la migración
<a name="migration-overview"></a>

En esta sección, se proporciona información general acerca de los cambios de código necesarios para la migración. La siguiente lista contiene una guía específica para cada idioma y los pasos de migración de daemon de X-Ray.

**importante**  
Para migrar completamente de la instrumentación de rayos X a OpenTelemetry la instrumentación, necesita:  
Sustituya el uso del SDK de X-Ray por una OpenTelemetry solución
Sustituya el X-Ray Daemon por el CloudWatch agente o el OpenTelemetry colector (con X-Ray Exporter)
+ [Migración a Java OpenTelemetry](xray-migration-opentelemetry.md)
+ [Migre a OpenTelemetry Go](manual-instrumentation-go.md)
+ [Migre a Node.js OpenTelemetry](migrate-xray-to-opentelemetry-nodejs.md)
+ [Migre a.NET OpenTelemetry](introduction-dotnet.md)
+ [Migrar a OpenTelemetry Python](migrate-xray-to-opentelemetry-python.md)
+ [Migre a Ruby OpenTelemetry](migrate-xray-to-opentelemetry-ruby.md)

### Recomendaciones para aplicaciones nuevas y existentes
<a name="new-applications"></a>

Para las aplicaciones nuevas y existentes, se recomienda utilizar las siguientes soluciones para habilitar el rastreo en las aplicaciones:

Instrumentación  
+ OpenTelemetry SDKs
+ AWS Distribución para instrumentación OpenTelemetry 

Recopilación de datos  
+ OpenTelemetry Coleccionista
+ CloudWatch Agente

Tras migrar a soluciones OpenTelemetry basadas en bases, su CloudWatch experiencia seguirá siendo la misma. Podrá seguir viendo sus trazas en el mismo formato en las páginas de trazas y mapas de trazas de la CloudWatch consola, o recuperar sus datos de rastreo a través del [X-Ray APIs](https://docs.aws.amazon.com/xray/latest/devguide/xray-api.html).

### Rastreo de los cambios de configuración
<a name="tracing-setup-migration"></a>

Debe reemplazar la configuración de X-Ray por una OpenTelemetry configuración.


**Comparación de X-Ray y OpenTelemetry configuración**  

| Característica | SDK de X-Ray | OpenTelemetry | 
| --- | --- | --- | 
| Configuraciones predeterminadas |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/xray/latest/devguide/xray-sdk-migration.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/xray/latest/devguide/xray-sdk-migration.html)  | 
| Configuraciones manuales |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/xray/latest/devguide/xray-sdk-migration.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/xray/latest/devguide/xray-sdk-migration.html)  | 

### Cambios de instrumentación de bibliotecas
<a name="library-instrumentation-migration"></a>

Actualice su código para usar OpenTelemetry Library Instrumentation en lugar de X-Ray Library Instrumentation para AWS SDK, clientes HTTP, marcos web y otras bibliotecas. Esto genera OpenTelemetry trazas en lugar de trazas de X-Ray.

**nota**  
Los cambios en el código varían según el idioma y la biblioteca. Consulte las guías de migración de idiomas específicos para obtener instrucciones detalladas.

### Cambios en la instrumentación del entorno de Lambda
<a name="lambda-instrumentation-migration"></a>

Para utilizarlas OpenTelemetry en las funciones de Lambda, elija una de estas opciones de configuración:

1. Utilice una capa de Lambda de instrumentación automática:
   + Capa [AWS Lambda](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Signals-Enable-LambdaMain.html) (recomendada) para OpenTelemetry
**nota**  
Para utilizar solo el rastreo, defina la variable de entorno de Lambda `OTEL_AWS_APPLICATION_SIGNALS_ENABLED=false`.
   + [AWS Capa Lambda gestionada para ADOT](https://aws-otel.github.io/docs/getting-started/lambda)

1. Configuración manual OpenTelemetry para la función Lambda:
   + Configuración de un procesador de intervalos simple con un exportador de intervalos de X-Ray UDP
   + Configuración de un propagador de X-Ray Lambda

### Creación manual de datos de rastros
<a name="manually-creating-trace-data"></a>

Sustituya los segmentos y subsegmentos de X-Ray por OpenTelemetry Spans:
+ Usa un OpenTelemetry rastreador para crear tramos
+ Agregación de atributos a intervalos (equivalentes a anotaciones y metadatos de X-Ray)

**importante**  
Cuando se envía a X-Ray:  
Los intervalos de servidor se convierten en segmentos de X-Ray
Otros intervalos se convierten en subsegmentos de X-Ray
Los atributos se convierten en metadatos de forma predeterminada

Para convertir un atributo en una anotación, agregue su clave a la lista de atributos de `aws.xray.annotations`. Para obtener más información, consulte [Habilitar anotaciones de X-Ray personalizadas](https://aws-otel.github.io/docs/getting-started/x-ray#enable-the-customized-x-ray-annotations).

## Migración de X-Ray Daemon a AWS CloudWatch agente o recopilador OpenTelemetry
<a name="xray-Daemon-migration"></a>

Puede utilizar el CloudWatch agente o el OpenTelemetry recopilador para recibir las trazas de sus aplicaciones instrumentadas y enviarlas a X-Ray.

**nota**  
La versión 1.300025.0 del CloudWatch agente y las versiones posteriores pueden recopilar trazas. OpenTelemetry El uso del CloudWatch agente en lugar del Demonio X-Ray reduce la cantidad de agentes que debe administrar. Para obtener más información, consulte [Recopilación de métricas, registros y seguimientos con el CloudWatch agente](AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html).

**Topics**
+ [Migración a Amazon EC2 o servidores en las instalaciones](#ec2-onprem-migration)
+ [Migración en Amazon ECS](#ecs-migration)
+ [Migración en Elastic Beanstalk](#beanstalk-migration)

### Migración a Amazon EC2 o servidores en las instalaciones
<a name="ec2-onprem-migration"></a>

**importante**  
Detenga el proceso de X-Ray Daemon antes de utilizar el CloudWatch agente o el OpenTelemetry recopilador para evitar conflictos en los puertos.

#### Configuración del daemon de X-Ray existente
<a name="xray-daemon-setup"></a>

##### Instalación del daemon
<a name="install-daemon"></a>

Su uso actual del daemon de X-Ray se instaló mediante uno de estos métodos:

Instalación manual  
Descargue y ejecute el archivo ejecutable desde el bucket de Amazon S3 del daemon de X-Ray.

Instalación automática  
Utilice este script para instalar el daemon al lanzar una instancia:  

```
#!/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
```

##### Configuración del daemon de
<a name="configure-daemon"></a>

Su uso actual del daemon de X-Ray se configuró mediante:
+ Argumentos de línea de comandos
+ Archivo de configuración () `xray-daemon.yaml`

**Example Uso de un archivo de configuración**  

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

##### Ejecutar el demonio
<a name="run-daemon"></a>

Su uso actual del daemon de X-Ray se inició con el siguiente comando:

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

##### Eliminación del daemon
<a name="uninstall-daemon"></a>

Para eliminar el daemon de X-Ray de la instancia de Amazon EC2:

1. Detenga el servicio de daemon:

   ```
   systemctl stop xray
   ```

1. Elimine el archivo de configuración:

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

1. Si está configurado, elimine el archivo de registro:
**nota**  
La ubicación del archivo de registro depende de la configuración:  
Configuración de línea de comandos: `/var/log/xray-daemon.log`
Archivo de configuración: compruebe la configuración de `LogPath`

#### Configuración del CloudWatch agente
<a name="setup-cloudwatch-agent"></a>

##### Instalación del agente
<a name="cloudwatch-installation"></a>

Para obtener instrucciones de instalación, consulte [Instalación del CloudWatch agente en un servidor local](AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html#install-CloudWatch-Agent-iam_user-first).

##### Configuración del agente
<a name="cloudwatch-configuration"></a>

1. Cree un archivo de configuración para habilitar la recopilación de rastros. Para obtener más información, consulte [Crear el archivo de configuración del CloudWatch agente](AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file.html).

1. Configure permisos de IAM:
   + Adjunte un rol de IAM o especifique las credenciales del agente. Para obtener más información, consulte [Configuración de roles de IAM](AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html#install-CloudWatch-Agent-iam_permissions-first).
   + Asegúrese de que el rol o las credenciales incluyan el permiso `xray:PutTraceSegments`.

##### Cómo iniciar el agente de
<a name="cloudwatch-start"></a>

Para obtener instrucciones sobre cómo iniciar el agente, consulte [Iniciar el CloudWatch agente mediante la línea de comandos](AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-commandline-fleet.html#start-CloudWatch-Agent-EC2-commands-fleet).

#### Configuración del OpenTelemetry recopilador
<a name="setup-otel-collector"></a>

##### Instalación del recopilador
<a name="otel-installation"></a>

Descargue e instale el OpenTelemetry recopilador para su sistema operativo. Para obtener instrucciones, consulte [Instalación del recopilador](https://opentelemetry.io/docs/collector/installation/).

##### Configuración del recopilador
<a name="otel-configuration"></a>

Configure los siguientes componentes en el recopilador:
+ extensión awsproxy

  Necesario para el muestreo de X-Ray
+ OTel receptores

  Recopila los rastros de la aplicación
+ exportador de xray

  Envía rastros a X-Ray

**Example Ejemplo de configuración del recopilador: .yaml otel-collector-config**  

```
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]
```

**importante**  
Configure AWS las credenciales con el `xray:PutTraceSegments` permiso. Para obtener más información, consulte [Especificar credenciales](sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials).

##### Inicio del recopilador
<a name="otel-start"></a>

Ejecute el recopilador con el archivo de configuración:

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

### Migración en Amazon ECS
<a name="ecs-migration"></a>

**importante**  
El rol de la tarea debe tener el permiso `xray:PutTraceSegments` de todos los recopiladores que utilice.  
Detenga cualquier contenedor de X-Ray Daemon existente antes de ejecutar el contenedor del CloudWatch agente o del OpenTelemetry recopilador en el mismo host para evitar conflictos de puertos.

#### Uso del agente CloudWatch
<a name="ecs-cloudwatch"></a>

1. Obtenga la imagen de Docker de la [Galería pública de Amazon ECR](https://gallery.ecr.aws/cloudwatch-agent/cloudwatch-agent).

1. Cree un archivo de configuración denominado`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. Almacene la configuración en el almacén de parámetros de Systems Manager:

   1. Abra el icono [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)

   1. Elija **Crear parámetro**

   1. Escriba los siguientes valores:
      + Nombre: `/ecs/cwagent/otel-config`
      + Nivel: estándar
      + Tipo: cadena
      + Tipo de datos: texto
      + Valor: [Pegue aquí la configuración cw-agent-otel .json]

1. Cree una definición de tarea mediante el modo de red puente:

   En la definición de tarea, la configuración depende del modo de red que se utilice. El modo de red puente es la opción predeterminada y se puede utilizar en la VPC predeterminada. En una red puente, defina la variable de `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` entorno para que indique al OpenTelemetry SDK cuál es el punto final y el puerto del CloudWatch agente. También debes crear un enlace desde el contenedor de tu aplicación al contenedor de Collector para enviar las trazas desde el OpenTelemetry SDK de tu aplicación al contenedor de Collector.   
**Example CloudWatch definición de la tarea del agente**  

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

Para obtener más información, consulte [Implementación del CloudWatch agente para recopilar métricas a nivel de instancia de Amazon EC2](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/deploy-container-insights-ECS-instancelevel.html) en Amazon ECS.

#### Uso del recopilador OpenTelemetry
<a name="ecs-otel"></a>

1. Obtenga la imagen de Docker `otel/opentelemetry-collector-contrib` de [Docker Hub](https://hub.docker.com/r/otel/opentelemetry-collector-contrib).

1. Cree un archivo de configuración llamado `otel-collector-config.yaml` con el mismo contenido que se muestra en la sección **Configuración del recopilador de Amazon EC2**, pero actualice los puntos de conexión para usar `0.0.0.0` en lugar de `127.0.0.1`.

1. Para utilizar esta configuración en Amazon ECS, puede almacenar la configuración en el almacén de parámetros de Systems Manager. En primer lugar, vaya a la consola del almacén de parámetros de Systems Manager y elija **Crear nuevo parámetro**. Cree un nuevo parámetro con la siguiente información:
   + Nombre:/ecs/otel/config(se hará referencia a este nombre en la definición de tarea del recopilador)
   + Nivel: estándar
   + Tipo: cadena
   + Tipo de datos: texto
   + Valor: [Pegue aquí la configuración otel-collector-config .yaml]

1. Cree una definición de tarea para implementar el OpenTelemetry recopilador utilizando el modo de red puente como ejemplo.

   En la definición de tarea, la configuración depende del modo de red que se utilice. El modo de red puente es la opción predeterminada y se puede utilizar en la VPC predeterminada. En una red puente, defina la variable de `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` entorno para indicar al OpenTelemetry SDK cuáles son el punto final y el puerto del OpenTelemetry recopilador. También debe crear un enlace desde el contenedor de la aplicación al contenedor del recopilador para que las trazas se envíen desde el OpenTelemetry SDK de la aplicación al contenedor del recopilador.   
**Example OpenTelemetry definición de tareas de recopilación**  

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

### Migración en Elastic Beanstalk
<a name="beanstalk-migration"></a>

**importante**  
Detenga el proceso de X-Ray Daemon antes de utilizar el CloudWatch agente para evitar conflictos en los puertos.

La integración actual del daemon de X-Ray se activó al usar la consola de Elastic Beanstalk o mediante la configuración del daemon de X-Ray en el código de origen de la aplicación con un archivo de configuración.

#### Uso del agente CloudWatch
<a name="beanstalk-cloudwatch"></a>

En la plataforma Amazon Linux 2, configure el CloudWatch agente mediante un archivo `.ebextensions` de configuración:

1. Creación de un directorio llamado `.ebextensions` en la raíz del proyecto

1. Cree un archivo llamado `cloudwatch.config` en el directorio `.ebextensions` con el contenido siguiente:

   ```
   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. Incluya el directorio `.ebextensions` en el paquete de código fuente de la aplicación cuando implemente

Para obtener más información sobre los archivos de configuración de Elastic Beanstalk, consulte [Personalización avanzada del entorno con archivos de configuración](elasticbeanstalk/latest/dg/ebextensions.html).