Exportación de rastros sin recopilador mediante los SDK de AWS Distro para OpenTelemetry (ADOT) - Amazon CloudWatch

Exportación de rastros sin recopilador mediante los SDK de AWS Distro para OpenTelemetry (ADOT)

Puede usar los SDK de ADOT para prescindir del recopilador y enviar rastros directamente al punto de conexión de OTLP (para rastros).

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).

Requisito previo

Asegúrese de que Transaction Search esté habilitado para enviar intervalos al punto de conexión OTLP de X-Ray. Para obtener información, consulte Introducción a Transaction Search.

Configuración de permisos de IAM para Amazon EC2

Siga estos pasos para adjuntar la política de IAM AWSXrayWriteOnlyPolicy al rol de IAM de su instancia de Amazon EC2:

  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. Elija Roles y busque y seleccione el rol que usa la instancia de Amazon EC2.

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

  4. En el cuadro de búsqueda, busque la política AWSXrayWriteOnlyPolicy.

  5. Seleccione la política AWSXrayWriteOnlyPolicy y elija Agregar permisos.

Configuración de los permisos de IAM para hosts en las instalaciones

Siga estos pasos para crear un usuario de IAM que se puede utilizar para conceder los permisos a sus hosts en las instalaciones.

  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. Elija Usuarios y, a continuación, Crear usuario.

  3. Seleccione Usuarios, Crear nuevos usuarios.

  4. En Detalles del usuario, en Nombre de usuario, introduzca un nombre para el nuevo usuario de IAM. Este es su nombre de inicio de sesión de AWS y lo utilizará para autenticar su host.

  5. Elija Siguiente.

  6. En la página Establecer permisos, en Opciones de permisos, seleccione Adjuntar políticas directamente.

  7. En la lista de Políticas de permisos, seleccione la política AWSXrayWriteOnlyPolicy para agregarla a su usuario.

  8. Elija Siguiente.

  9. En la página Revisar y crear, asegúrese de que haya decidido satisfactoriamente el nombre de usuario y de que la política AWSXrayWriteOnlyPolicy aparezca en Resumen de permisos.

  10. Seleccione la opción Crear un usuario.

  11. Cree y recupere su clave de acceso y su clave secreta de AWS:

    1. En el panel de navegación de la consola de IAM, seleccione Usuarios y, a continuación, seleccione el nombre de usuario que creó en el paso anterior.

    2. En la página del usuario, seleccione la pestaña Credenciales de seguridad.

    3. En la sección Claves de acceso, elija Crear clave de acceso.

    4. En el paso 1 de Crear clave de acceso, elija Interfaz de línea de comandos (CLI).

    5. En el Paso 2 de Crear clave de acceso, como opción, introduzca una etiqueta y seleccione Siguiente.

    6. En el Paso 3 de Crear clave de acceso, seleccione Descargar archivo .csv para guardar un archivo .cvs con la clave de acceso y la clave de acceso secreta de su usuario de IAM. Necesita esta información para los siguientes pasos.

    7. Seleccione Listo.

  12. Introduzca el siguiente comando para configurar sus credenciales de AWS en su host en las instalaciones. Sustituya ACCESS_KEY_ID y SECRET_ACCESS_ID por la clave de acceso y la clave de acceso secreta generadas recientemente, que se encuentran en el archivo .csv que descargó en el paso anterior.

    $ 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

Puede habilitar los rastros para su aplicación para que se envíen directamente al punto de conexión de OTLP desde el SDK de AWS Distro para OpenTelemetry (ADOT) en Java, Node.js, Python y .Net.

Java
  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

    Para ver todas las versiones publicadas, consulte aws-otel-java-instrumentation releases.

  2. Para habilitar el exportador que envía rastros directamente al punto de conexión de rastros OTLP de X-Ray y para optimizar los beneficios, utilice las variables de entorno para proporcionar información adicional antes de iniciar la aplicación.

  3. Para la variable OTEL_RESOURCE_ATTRIBUTES, especifique la siguiente información como pares clave-valor:

    (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. Cuando 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. Cuando esto no se especifica, se utiliza uno de los siguientes valores predeterminados:

    • Si se trata de una instancia que forma parte de un grupo de escalado automático, se establece en ec2:name-of-Auto-Scaling-group

    • Si se trata de una instancia de Amazon EC2 que no forma parte de un grupo de escalado automático, se establece en ec2:default

    • Si se trata de un host en las instalaciones, se establece en generic:default

    Esta variable de entorno solo la usa Application Signals y se convierte en anotaciones de rastros de X-Ray y dimensiones métricas de CloudWatch.

  4. Para la variable OTEL_EXPORTER_OTLP_TRACES_ENDPOINT , especifique el punto de conexión de los rastros 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"
  5. Para la variable JAVA_TOOL_OPTIONS, especifique la ruta en la que se almacena el agente de autoinstrumentación AWS Distro para OpenTelemetry de Java.

    export JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH"

    Por ejemplo:

    export AWS_ADOT_JAVA_INSTRUMENTATION_PATH="./aws-opentelemetry-agent.jar"
  6. Para la variable OTEL_METRICS_EXPORTER, se recomienda establecer el valor en ninguno.

  7. Para la variable OTEL_LOGS_EXPORTER, se recomienda establecer el valor en ninguno.

  8. Para la variable OTEL_TRACES_EXPORTER, debe establecer el valor de otlp (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).

  9. Para la variable OTEL_EXPORTER_OTLP_PROTOCOL, debe establecer el valor en http/protobuf (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida). El punto de conexión OTLP de X-Ray actualmente solo admite el protocolo HTTP.

  10. Su aplicación debería ejecutarse ahora con la instrumentación Java de AWS Distro para OpenTelemetry y generará intervalos. Estos intervalos se almacenan en el aws/spans CloudWatch LogsLogGroup de su cuenta. También puede ver los rastros y las métricas correlacionados con sus intervalos en la consola de rastros y métricas de CloudWatch.

  11. Inicie su aplicación con las variables de entorno que ha establecido. Este es un ejemplo de un script de inicio.

    (Nota: La siguiente configuración solo es compatible con las versiones 1.32.2 y posteriores del agente de instrumentación automática de AWS Distro para OpenTelemetry para Java.)

    JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" \ OTEL_METRICS_EXPORTER=none \ OTEL_LOGS_EXPORTER=none \ OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \ OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \ java -jar $MY_JAVA_APP.jar
Node.js
  1. Descargue la última versión del agente de instrumentación automática de AWS Distro para OpenTelemetry de JavaScript para Node.js. Puede hacer la instalación con el comando:

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

    Para ver información sobre todas las versiones publicadas, consulte AWS Distro for OpenTelemetry JavaScript instrumentation.

  2. Para habilitar el exportador que envía rastros directamente al punto de conexión OTLP de X-Ray y para optimizar los beneficios, utilice las variables de entorno para proporcionar información adicional antes de iniciar la aplicación.

  3. Para la variable OTEL_RESOURCE_ATTRIBUTES, especifique la siguiente información como pares clave-valor:

    (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. Cuando 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 la aplicación en los paneles de Application Signals. Cuando no se especifica esta variable, se utiliza uno de los siguientes valores predeterminados:

    • Si se trata de una instancia que forma parte de un grupo de escalado automático, se establece en ec2:name-of-Auto-Scaling-group

    • Si se trata de una instancia de Amazon EC2 que no forma parte de un grupo de escalado automático, se establece en ec2:default

    • Si se trata de un host en las instalaciones, se establece en generic:default

    Esta variable de entorno solo la usa Application Signals y se convierte en anotaciones de seguimientos de X-Ray y dimensiones métricas de CloudWatch.

  4. Para la variable OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, especifique el punto de conexión de rastros 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"
  5. Para la variable OTEL_METRICS_EXPORTER, se recomienda establecer el valor en ninguno. El punto de conexión de OTLP genera las métricas de Application Signals.

  6. Para la variable OTEL_LOGS_EXPORTER, se recomienda establecer el valor en ninguno.

  7. Para la variable OTEL_TRACES_EXPORTER, debe establecer el valor de otlp (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).

  8. Para la variable OTEL_EXPORTER_OTLP_PROTOCOL, debe establecer el valor en http/protobuf (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida). El punto de conexión OTLP de X-Ray actualmente solo admite el protocolo HTTP.

  9. Su aplicación debería ejecutarse ahora con la instrumentación Java de AWS Distro para OpenTelemetry y generará intervalos. Estos intervalos se almacenan en el aws/spans CloudWatch LogsLogGroup de su cuenta. También puede ver los rastros y las métricas correlacionados con sus intervalos en la consola de rastros y métricas de CloudWatch.

  10. Inicie su aplicación con las variables de entorno que ha establecido. Aquí se muestra un ejemplo de un script de inicio.

    (Nota: Sustituya $SVC_NAME con el nombre de su aplicación. Esto se muestra como el nombre de la aplicación.

    OTEL_METRICS_EXPORTER=none \ OTEL_LOGS_EXPORTER=none \ OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces \ OTEL_RESOURCE_ATTRIBUTES="service.name=$SVC_NAME" \ node —require '@aws/aws-distro-opentelemetry-node-autoinstrumentation/register' your-application.js
Python
  1. Descargue la última versión del agente de autoinstrumentación de AWS Distro para OpenTelemetry de Python. Puede hacer la instalación con el comando:

    pip install aws-opentelemetry-distro
  2. Para permitir que el exportador envíe rastros directamente al punto de conexión OTLP de X-Ray y para optimizar los beneficios, utilice las variables de entorno para proporcionar información adicional antes de iniciar su aplicación.

  3. Para la variable OTEL_RESOURCE_ATTRIBUTES, especifique la siguiente información como pares clave-valor:

    (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. Cuando 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 la aplicación en los paneles de Application Signals. Cuando esto no se especifica, se utilizará uno de los siguientes valores predeterminados:

    • Si se trata de una instancia que forma parte de un grupo de escalado automático, se establece en ec2:name-of-Auto-Scaling-group

    • Si se trata de una instancia de Amazon EC2 que no forma parte de un grupo de escalado automático, se establece en ec2:default

    • Si se trata de un host en las instalaciones, se establece en generic:default

    Esta variable de entorno solo la usa Application Signals y se convierte en anotaciones de seguimientos de X-Ray y dimensiones métricas de CloudWatch.

  4. Para la variable OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, especifique el punto de conexión de rastros 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"
  5. Para la variable OTEL_METRICS_EXPORTER, se recomienda establecer el valor en ninguno. El punto de conexión de OTLP genera las métricas de Application Signals.

  6. Para la variable OTEL_LOGS_EXPORTER, se recomienda establecer el valor en ninguno.

  7. Para la variable OTEL_TRACES_EXPORTER, debe establecer el valor de otlp (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida).

  8. Para la variable OTEL_EXPORTER_OTLP_PROTOCOL, debe establecer el valor en http/protobuf (esto es opcional y es el valor predeterminado si esta variable de entorno no está establecida). El punto de conexión OTLP de X-Ray actualmente solo admite el protocolo HTTP.

  9. Su aplicación debería ejecutarse ahora con la instrumentación Java de AWS Distro para OpenTelemetry y generará intervalos. Estos intervalos se almacenan en el aws/spans CloudWatch LogsLogGroup de su cuenta. También puede ver los rastros y las métricas correlacionados con sus intervalos en la consola de rastros y métricas de CloudWatch.

  10. Inicie su aplicación con las variables de entorno que ha establecido. Aquí se muestra un ejemplo de un script de inicio.

    (Nota: Sustituya $SVC_NAME con el nombre de su aplicación y sustituya $PYTHON_APP con la ubicación y el nombre de su aplicación.)

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

Para habilitar el exportador que envía rastros directamente al punto de conexión de rastros OTLP de X-Ray y para optimizar los beneficios, configure las variables de entorno para proporcionar información adicional antes de iniciar su aplicación. Estas variables también son necesarias para configurar la instrumentación de .NET.

  1. Sustituya dotnet-service-name en la variable de entorno OTEL_RESOURCE_ATTRIBUTES por el nombre de servicio que prefiera.

  2. Configurar OTEL_TRACES_EXPORTER=none.

  3. Configurar OTEL_AWS_SIG_V4_ENABLED=true.

    Un ejemplo 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_PROTOCOL=http/protobuf export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces

    Un ejemplo 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_PROTOCOL=http/protobuf $env:OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://xray.us-east-1.amazonaws.com/v1/traces
  4. Inicie la aplicación con las variables de entorno.

  5. (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 instrumentación automática de AWS Distro para OpenTelemetry .NET en el repositorio oficial de NuGet. Asegúrese de consultar las instrucciones en el archivo README.