

# Exportación de telemetría sin recopilador mediante el SDK de AWS Distro para OpenTelemetry (ADOT)
<a name="CloudWatch-OTLP-UsingADOT"></a>

Puede usar los SDK de ADOT para prescindir del recopilador y enviar métricas, seguimientos y registros directamente a puntos de conexión de OTLP.

**nota**  
Application Signals incluye capacidades de búsqueda de transacciones. Para evitar la duplicación de costos, desactive Application Signals en el SDK de ADOT y mantenga `OTEL_AWS_APPLICATION_SIGNALS_ENABLED` establecido como falso (configuración predeterminada). 

**Topics**
+ [Requisito previo](#CloudWatch-OTLP-UsingADOT-Prerequisite)
+ [Configuración de los permisos de IAM para el rol](#setup-iam-permissions-role)
+ [Configuración de los proveedores de credenciales](#configure-credentials-providers)
+ [Habilitación de los SDK de ADOT](#Enabling-ADOT)

## Requisito previo
<a name="CloudWatch-OTLP-UsingADOT-Prerequisite"></a>

Si usa seguimientos, asegúrese de que Transaction Search esté habilitado para enviar intervalos al punto de conexión de OTLP de X-Ray. Para obtener información, consulte [Introducción a Transaction Search](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Transaction-Search-getting-started.html).

## Configuración de los permisos de IAM para el rol
<a name="setup-iam-permissions-role"></a>

Siga estos pasos para asociar las políticas de IAM necesarias a su rol:

**Seguimientos:**

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Elija **Roles** y busque y seleccione el rol configurado.

1. En la pestaña **Permisos**, elija **Agregar permisos**, luego **Asociar políticas**.

1. En el cuadro de búsqueda, busque `AWSXrayWriteOnlyPolicy`.

1. Seleccione la política `AWSXrayWriteOnlyPolicy` y elija **Agregar permisos**.

**Registros:**

1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Elija **Roles** y busque y seleccione el rol configurado.

1. En la pestaña **Permisos**, elija **Agregar permisos** y después **Crear política insertada**.

1. Seleccione **Registros de CloudWatch** para el servicio y, en **Acciones permitidas**, filtre y seleccione:

   ```
   logs:PutLogEvents
   logs:DescribeLogGroups
   logs:DescribeLogStreams
   ```

1. A continuación se muestra una política de IAM de ejemplo que concede los permisos necesarios.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "CloudWatchLogsAccess",
               "Effect": "Allow",
               "Action": [
                   "logs:PutLogEvents",
                   "logs:DescribeLogGroups",
                   "logs:DescribeLogStreams"
                  
               ],
               "Resource": [
                   "arn:aws:logs:*:*:log-group:*"
               ]
           }
       ]
   }
   ```

------

## Configuración de los proveedores de credenciales
<a name="configure-credentials-providers"></a>

ADOT utiliza los SDK de AWS para descubrir automáticamente las credenciales válidas necesarias para exportar los datos de telemetría a AWS. Para obtener instrucciones sobre cómo configurar las credenciales para su entorno en particular, [consulte la documentación sobre la manera en que los SDK de AWS recuperan las credenciales](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html).

**Configuración de las credenciales de IAM para hosts en las instalaciones:**

Introduzca el siguiente comando para configurar sus credenciales de AWS en su host en las instalaciones. Reemplace **ACCESS\$1KEY\$1ID** y **SECRET\$1ACCESS\$1KEY** por las credenciales del usuario o rol de IAM que haya configurado.

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

## Habilitación de los SDK de ADOT
<a name="Enabling-ADOT"></a>

Puede habilitar los registros y seguimientos para su aplicación para que se envíen directamente a los puntos de conexión de OTLP desde el SDK de AWS Distro para OpenTelemetry (ADOT) en Java, Node.js, Python y .NET.

------
#### [ Java ]

**nota**  
Debe utilizar **el agente de ADOT Java, versión 2.11.2 o posterior** para que estas características estén disponibles.

1. Descargue la última versión del agente de autoinstrumentación de AWS Distro para OpenTelemetry de Java. Puede descargar la última versión mediante este comando:

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

   Puede ver información sobre todas las versiones publicadas en [aws-otel-java-instrumentation Lanzamientos](https://github.com/aws-observability/aws-otel-java-instrumentation/releases).

1. Para habilitar el otro exportador que envía la telemetría directamente a los puntos de conexión de OTLP y optimizar los beneficios, utilice las variables de entorno siguientes antes de iniciar la aplicación:

   **Seguimientos:**
   + Establezca `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` para especificar el punto de conexión de seguimiento de OTLP de X-Ray: `https://xray.[AWSRegion].amazonaws.com/v1/traces`

     Por ejemplo:

     ```
     export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://xray.us-west-2.amazonaws.com/v1/traces"
     ```
   + Establezca `OTEL_TRACES_EXPORTER` en `otlp` (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).
   + Establezca la variable `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` en `http/protobuf` (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).
   + Establezca la variable `OTEL_RESOURCE_ATTRIBUTES` para especificar la siguiente información como pares clave-valor. Application Signals usa estas variables de entorno, que se convierten en anotaciones de rastros de X-Ray y dimensiones de métricas de CloudWatch:
     + (Opcional) `service.name` establece el nombre del servicio. Esto se mostrará como el nombre del servicio de la aplicación en los paneles de Application Signals. Si no proporciona ningún valor para esta clave, se utiliza el valor predeterminado de `UnknownService`.
     + (Opcional) `deployment.environment` establece el entorno en el que se ejecuta la aplicación. Se mostrará como el entorno **Alojado en** de su aplicación.
     + (Opcional) Para habilitar la correlación de registros, en `OTEL_RESOURCE_ATTRIBUTES` defina una variable de entorno adicional `aws.log.group.names` como nombre de los grupos de registro de su aplicación. De este modo, los seguimientos y métricas de su aplicación se pueden correlacionar con las entradas de registro correspondientes de estos grupos de registro. En esta variable, sustituya `$YOUR_APPLICATION_LOG_GROUP` por los nombres de los grupos de registro de la aplicación. Si tiene varios grupos de registro, puede usar el signo `&` para separarlos, como en este ejemplo: `aws.log.group.names=log-group-1&log-group-2`. Para habilitar la correlación entre métricas y registros, basta con establecer esta variable de entorno actual. Para obtener más información, consulte [Habilitación de la correlación entre métricas y registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-MetricLogCorrelation.html). Para habilitar la correlación entre seguimientos y registros, también debe cambiar la configuración de registro de su aplicación. Para obtener más información, consulte [Habilitación de la correlación entre seguimientos y registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-TraceLogCorrelation.html).

   **Registros:**
   + Establezca `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` para especificar el punto de conexión de registros de OTLP de CloudWatch: `https://logs.[AWSRegion].amazonaws.com/v1/logs`

     Por ejemplo:

     ```
     export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT="https://logs.us-west-2.amazonaws.com/v1/logs"
     ```
   + Establezca `OTEL_EXPORTER_OTLP_LOGS_HEADERS` para especificar el grupo de registro y el flujo de registro (nota: deben crearse **antes** de ejecutar ADOT) a los que desea exportar los registros: `x-aws-log-group=[CW-LOG-GROUP-NAME],x-aws-log-stream=[CW-LOG-STREAM-NAME]`

     Por ejemplo:

     ```
     export OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default
     ```
   + Establezca `OTEL_LOGS_EXPORTER` en `otlp` (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).
   + Establezca la variable `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` en `http/protobuf` (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).

1. Establezca `JAVA_TOOL_OPTIONS` para especificar la ruta en la que se almacena el agente de instrumentación automática de Java de AWS Distro para OpenTelemetry. Por ejemplo:

   ```
   export JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH"
   export AWS_ADOT_JAVA_INSTRUMENTATION_PATH="./aws-opentelemetry-agent.jar"
   ```

1. Su aplicación debería ejecutarse ahora con la instrumentación Java de ADOT y generará intervalos y registros. Los intervalos se almacenarán en el grupo de registro de CloudWatch `aws/spans`, mientras que los registros se almacenarán en el grupo de registro especificado en el encabezado `OTEL_EXPORTER_OTLP_LOGS_HEADERS`. También puede ver los registros y las métricas correlacionados con sus intervalos en la consola de seguimientos y métricas de CloudWatch.

1. Inicie la aplicación con las variables de entorno enumeradas en el paso anterior. A continuación se muestra un ejemplo de un script de inicio.

   ```
   JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" \
   OTEL_METRICS_EXPORTER=none \
   OTEL_TRACES_EXPORTER=otlp \
   OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf \
   OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \
   OTEL_LOGS_EXPORTER=otlp \
   OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/protobuf \
   OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://logs.us-east-1.amazonaws.com/v1/logs \
   OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default 
   OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \
   java -jar $MY_JAVA_APP.jar
   ```

------
#### [ Node.js ]

**nota**  
Debe utilizar **ADOT JavaScript, versión 0.7.0 o posterior** para que estas características estén disponibles.

1. Descargue la última versión del agente de instrumentación automática de Java de AWS Distro para OpenTelemetry. Instálelo ejecutando el siguiente comando de .

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

   Puede ver información sobre todas las versiones publicadas en [aws-otel-js-instrumentation Releases](https://github.com/aws-observability/aws-otel-js-instrumentation/releases).

1. Para habilitar el otro exportador que envía la telemetría directamente a los puntos de conexión de OTLP y optimizar los beneficios, utilice las variables de entorno siguientes antes de iniciar la aplicación:

   **Seguimientos:**
   + Establezca `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` para especificar el punto de conexión de seguimiento de OTLP de X-Ray: `https://xray.[AWSRegion].amazonaws.com/v1/traces`

     Por ejemplo:

     ```
     export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://xray.us-west-2.amazonaws.com/v1/traces"
     ```
   + Establezca `OTEL_TRACES_EXPORTER` en `otlp` (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).
   + Establezca la variable `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` en `http/protobuf` (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).
   + Establezca la variable `OTEL_RESOURCE_ATTRIBUTES` para especificar la siguiente información como pares clave-valor. Application Signals usa estas variables de entorno, que se convierten en anotaciones de rastros de X-Ray y dimensiones de métricas de CloudWatch:
     + (Opcional) `service.name` establece el nombre del servicio. Esto se mostrará como el nombre del servicio de la aplicación en los paneles de Application Signals. Si no proporciona ningún valor para esta clave, se utiliza el valor predeterminado de `UnknownService`.
     + (Opcional) `deployment.environment` establece el entorno en el que se ejecuta la aplicación. Se mostrará como el entorno **alojado en** de su aplicación.
     + (Opcional) Para habilitar la correlación de registros, en `OTEL_RESOURCE_ATTRIBUTES` defina una variable de entorno adicional `aws.log.group.names` como nombre de los grupos de registro de su aplicación. De este modo, los seguimientos y métricas de su aplicación se pueden correlacionar con las entradas de registro correspondientes de estos grupos de registro. En esta variable, sustituya `$YOUR_APPLICATION_LOG_GROUP` por los nombres de los grupos de registro de la aplicación. Si tiene varios grupos de registro, puede usar el signo `&` para separarlos, como en este ejemplo: `aws.log.group.names=log-group-1&log-group-2`. Para habilitar la correlación entre métricas y registros, basta con establecer esta variable de entorno actual. Para obtener más información, consulte [Habilitación de la correlación entre métricas y registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-MetricLogCorrelation.html). Para habilitar la correlación entre seguimientos y registros, también debe cambiar la configuración de registro de su aplicación. Para obtener más información, consulte [Habilitación de la correlación entre seguimientos y registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-TraceLogCorrelation.html).

   **Registros:**
   + Establezca `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` para especificar el punto de conexión de registros de OTLP de CloudWatch: `https://logs.[AWSRegion].amazonaws.com/v1/logs`

     Por ejemplo:

     ```
     export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT="https://logs.us-west-2.amazonaws.com/v1/logs"
     ```
   + Establezca `OTEL_EXPORTER_OTLP_LOGS_HEADERS` para especificar el grupo de registro y el flujo de registro (nota: deben crearse **antes** de ejecutar ADOT) a los que desea exportar los registros: `x-aws-log-group=[CW-LOG-GROUP-NAME],x-aws-log-stream=[CW-LOG-STREAM-NAME]`

     Por ejemplo:

     ```
     export OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default
     ```
   + Establezca `OTEL_LOGS_EXPORTER` en `otlp` (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).
   + Establezca la variable `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` en `http/protobuf` (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).

1. Su aplicación debería ejecutarse ahora con la instrumentación JavaScript de ADOT y generará intervalos y registros. Los intervalos se almacenarán en el grupo de registro de CloudWatch `aws/spans`, mientras que los registros se almacenarán en el grupo de registro especificado en el encabezado `OTEL_EXPORTER_OTLP_LOGS_HEADERS`. También puede ver los registros y las métricas correlacionados con sus intervalos en la consola de seguimientos y métricas de CloudWatch.

1. Inicie la aplicación con las variables de entorno enumeradas en el paso anterior. A continuación se muestra un ejemplo de un script de inicio.

   Sustituya `$SVC_NAME` por el nombre de la aplicación. Esto se mostrará como el nombre de la aplicación.

   ```
   OTEL_METRICS_EXPORTER=none \
   OTEL_TRACES_EXPORTER=otlp \
   OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf \
   OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \
   OTEL_LOGS_EXPORTER=otlp \
   OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/protobuf \
   OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://logs.us-east-1.amazonaws.com/v1/logs \
   OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default 
   OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \
   node --require '@aws/aws-distro-opentelemetry-node-autoinstrumentation/register' your-application.js
   ```

------
#### [ Python ]

**nota**  
Debe usar **ADOT Python, versión 0.10.0 o posterior** y tener **`botocore`** instalado para que estas características estén disponibles.

1. Descargue la última versión del agente de instrumentación automática de Python de AWS Distro para OpenTelemetry. Instálelo ejecutando el siguiente comando de .

   ```
   pip install aws-opentelemetry-distro
   ```

   Puede ver información sobre todas las versiones publicadas en [aws-otel-python-instrumentation Releases](https://github.com/aws-observability/aws-otel-python-instrumentation/releases).

1. Para habilitar el otro exportador que envía la telemetría directamente a los puntos de conexión de OTLP y optimizar los beneficios, utilice las variables de entorno siguientes antes de iniciar la aplicación:

   **Tanto para las configuraciones de seguimientos como de registros, debe establecer las siguientes variables de entorno:**
   + `OTEL_PYTHON_DISTRO` De a `aws_distro`
   + `OTEL_PYTHON_CONFIGURATOR` De a `aws_configurator`

   **Seguimientos:**
   + Establezca `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` para especificar el punto de conexión de seguimiento de OTLP de X-Ray: `https://xray.[AWSRegion].amazonaws.com/v1/traces`

     Por ejemplo:

     ```
     export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="https://xray.us-west-2.amazonaws.com/v1/traces"
     ```
   + Establezca `OTEL_TRACES_EXPORTER` en `otlp` (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).
   + Establezca la variable `OTEL_EXPORTER_OTLP_TRACES_PROTOCOL` en `http/protobuf` (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).
   + Establezca la variable `OTEL_RESOURCE_ATTRIBUTES` para especificar la siguiente información como pares clave-valor. Application Signals usa estas variables de entorno, que se convierten en anotaciones de rastros de X-Ray y dimensiones de métricas de CloudWatch:
     + (Opcional) `service.name` establece el nombre del servicio. Esto se mostrará como el nombre del servicio de la aplicación en los paneles de Application Signals. Si no proporciona ningún valor para esta clave, se utiliza el valor predeterminado de `UnknownService`.
     + (Opcional) `deployment.environment` establece el entorno en el que se ejecuta la aplicación. Se mostrará como el entorno **alojado en** de su aplicación.
     + (Opcional) Para habilitar la correlación de registros, en `OTEL_RESOURCE_ATTRIBUTES` defina una variable de entorno adicional `aws.log.group.names` como nombre de los grupos de registro de su aplicación. De este modo, los seguimientos y métricas de su aplicación se pueden correlacionar con las entradas de registro correspondientes de estos grupos de registro. En esta variable, sustituya `$YOUR_APPLICATION_LOG_GROUP` por los nombres de los grupos de registro de la aplicación. Si tiene varios grupos de registro, puede usar el signo `&` para separarlos, como en este ejemplo: `aws.log.group.names=log-group-1&log-group-2`. Para habilitar la correlación entre métricas y registros, basta con establecer esta variable de entorno actual. Para obtener más información, consulte [Habilitación de la correlación entre métricas y registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-MetricLogCorrelation.html). Para habilitar la correlación entre seguimientos y registros, también debe cambiar la configuración de registro de su aplicación. Para obtener más información, consulte [Habilitación de la correlación entre seguimientos y registros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Application-Signals-TraceLogCorrelation.html).

   **Registros:**
   + Establezca `OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED` en `true`
   + Establezca `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` para especificar el punto de conexión de registros de OTLP de CloudWatch: `https://logs.[AWSRegion].amazonaws.com/v1/logs`

     Por ejemplo:

     ```
     export OTEL_EXPORTER_OTLP_LOGS_ENDPOINT="https://logs.us-west-2.amazonaws.com/v1/logs"
     ```
   + Establezca `OTEL_EXPORTER_OTLP_LOGS_HEADERS` para especificar el grupo de registro y el flujo de registro (nota: deben crearse **antes** de ejecutar ADOT) a los que desea exportar los registros: `x-aws-log-group=[CW-LOG-GROUP-NAME],x-aws-log-stream=[CW-LOG-STREAM-NAME]`

     Por ejemplo:

     ```
     export OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default
     ```
   + Establezca `OTEL_LOGS_EXPORTER` en `otlp` (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).
   + Establezca la variable `OTEL_EXPORTER_OTLP_LOGS_PROTOCOL` en `http/protobuf` (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).

1. Su aplicación debería ejecutarse ahora con la instrumentación Python de ADOT y generará intervalos y registros. Los intervalos se almacenarán en el grupo de registro de CloudWatch `aws/spans`, mientras que los registros se almacenarán en el grupo de registro especificado en el encabezado `OTEL_EXPORTER_OTLP_LOGS_HEADERS`. También puede ver los registros y las métricas correlacionados con sus intervalos en la consola de seguimientos y métricas de CloudWatch.

1. Inicie la aplicación con las variables de entorno enumeradas en el paso anterior. A continuación se muestra un ejemplo de un script de inicio.

   Sustituya `$SVC_NAME` por el nombre de la aplicación. Esto se mostrará como el nombre de la aplicación.

   Sustituya `$PYTHON_APP` por la ubicación y el nombre de la aplicación.

   ```
   OTEL_METRICS_EXPORTER=none \
   OTEL_TRACES_EXPORTER=otlp \
   OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf \
   OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \
   OTEL_LOGS_EXPORTER=otlp \
   OTEL_EXPORTER_OTLP_LOGS_PROTOCOL=http/protobuf \
   OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://logs.us-east-1.amazonaws.com/v1/logs \
   OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=MyLogGroup,x-aws-log-stream=default
   OTEL_PYTHON_LOGGING_AUTO_INSTRUMENTATION_ENABLED=true
   OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \
   opentelemetry-instrument python $MY_PYTHON_APP.py
   ```

------
#### [ .Net ]

**nota**  
Se necesita **ADOT .NET, versión 1.8.0 o posterior** para que estas características estén disponibles.
En este momento, no se admite la compresión.
En este momento, no se admiten los registros.

Descargue la versión más reciente del paquete de autoinstrumentación de .NET de Distro para OpenTelemetry de AWS. Puede ver información sobre todas las versiones publicadas en [aws-otel-dotnet-instrumentation Releases](https://github.com/aws-observability/aws-otel-dotnet-instrumentation/releases).

Para habilitar otros exportadores que envían la telemetría directamente a los puntos de conexión de OTLP y optimizar los beneficios, utilice las variables de entorno siguientes antes de iniciar la aplicación (sustituya `dotnet-service-name` en la variable de entorno `OTEL_RESOURCE_ATTRIBUTES` por el nombre del servicio a su elección):

**Seguimientos:**
+ **DEBE** establecer `OTEL_TRACES_EXPORTER` en `none`.
+ **DEBE** establecer `OTEL_AWS_SIG_V4_ENABLED` en `true`.

  Esta característica **no se habilita automáticamente en .NET**. La variable de entorno es obligatoria específicamente para identificar este caso de uso dentro de la instrumentación de .NET. Este requisito es exclusivo de .NET y **no se aplica a otros lenguajes admitidos**.

A continuación se muestra un ejemplo de configuración para 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_TRACES_PROTOCOL=http/protobuf
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces
```

A continuación se muestra un ejemplo de configuración para 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_TRACES_PROTOCOL=http/protobuf
$env:OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces
```

1. Inicie la aplicación con las variables de entorno enumeradas en el paso anterior.

1. (Opcional) Como alternativa, puede utilizar los scripts de instalación proporcionados para facilitar la instalación y la configuración del paquete de autoinstrumentación de AWS Distro para OpenTelemetry .NET.

   En Linux, descargue y ejecute el script de instalación de Bash desde la página de versiones de GitHub:

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

   En Windows Server, descargue y ejecute el script de instalación de PowerShell desde la página de versiones de GitHub:

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

   Puede encontrar el paquete NuGet del paquete de autoinstrumentación de AWS Distro para OpenTelemetry .NET en el [repositorio oficial de NuGet](https://www.nuget.org/packages/AWS.Distro.OpenTelemetry.AutoInstrumentation). Asegúrese de consultar las instrucciones en el [archivo README](https://github.com/aws-observability/aws-otel-dotnet-instrumentation/blob/main/src/AWS.Distro.OpenTelemetry.AutoInstrumentation/nuget-readme.md).

------