Habilite Application Signals en Amazon EC2 - Amazon CloudWatch

Habilite Application Signals en Amazon EC2

Para las aplicaciones que se ejecutan en Amazon EC2 o en otros tipos de instancias, debe instalar y configurar el agente CloudWatch y AWS Distro para OpenTelemetry. En estas arquitecturas habilitadas con una configuración personalizada de Application Signals, Application Signals no descubre automáticamente los nombres de los servicios ni los hosts o clústeres en los que se ejecutan. Debe especificar estos nombres durante la configuración personalizada, y los nombres que especifique son los que aparecen en los paneles de Application Signals.

Las instrucciones de esta sección son para aplicaciones de Java, Python y .NET. Estos pasos se probaron en instancias de Amazon EC2, pero también se espera que funcionen en otras arquitecturas compatibles con AWS Distro para OpenTelemetry.

Requisitos

  • Para obtener compatiblidad con Application Signals, debe usar la versión más reciente del agente CloudWatch y del agente AWS Distro para OpenTelemetry.

  • Debe tener instalado la AWS CLI en la instancia. Recomendamos la AWS CLI versión 2, pero la versión 1 también debería funcionar. Para obtener información sobre cómo instalar AWS CLI, consulte Instalar o actualizar la versión más reciente de la AWS CLI.

importante

Si ya utiliza OpenTelemetry con una aplicación que pretende habilitar para Application Signals, consulte Consideraciones sobre la compatibilidad de OpenTelemetry antes de activar Application Signals.

Paso 1: habilitar Application Signals en la cuenta

Si aún no ha activado Application Signals en esta cuenta, debe conceder a Application Signals los permisos que necesita para descubrir los servicios. Para ello, haga lo siguiente. Solo es necesario hacerlo una vez para la cuenta.

Para habilitar Application Signals para las aplicaciones
  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, elija Servicios.

  3. Elija Comenzar a descubrir sus servicios.

  4. Marque la casilla de verificación y seleccione Empiece a descubrir los servicios.

    Cuando completa este paso por primera vez en la cuenta, Application Signals crea el rol vinculado al servicio AWSServiceRoleForCloudWatchApplicationSignals. Este rol otorga a Application Signals los siguientes permisos:

    • xray:GetServiceGraph

    • logs:StartQuery

    • logs:GetQueryResults

    • cloudwatch:GetMetricData

    • cloudwatch:ListMetrics

    • tag:GetResources

    Para obtener más información acerca de este rol, consulte Permisos de roles vinculados a un servicio para CloudWatch Application Signals.

Paso 2: descargar e iniciar el agente de CloudWatch

Para instalar el agente de CloudWatch como parte de la activación de Application Signals en una instancia de Amazon EC2 o en un host en las instalaciones
  1. Descargue la última versión del agente de CloudWatch en la instancia. Si la instancia ya tiene el agente de CloudWatch instalado, es posible que tenga que actualizarlo. Solo las versiones del agente publicadas el 30 de noviembre de 2023 o después son compatibles con CloudWatch Application Signals.

    Para obtener información sobre la descarga del agente de CloudWatch, consulte Descargue del paquete de del agente de CloudWatch.

  2. Antes de iniciar el agente de CloudWatch, configúrelo para habilitar Application Signals. El siguiente ejemplo es una configuración de agente de CloudWatch que habilita Application Signals para métricas y seguimientos en un host EC2.

    Recomendamos que ubique este archivo en /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json en los sistemas Linux.

    { "traces": { "traces_collected": { "application_signals": {} } }, "logs": { "metrics_collected": { "application_signals": {} } } }
  3. Adjunte la política de IAM CloudWatchAgentServerPolicy al rol de IAM de su instancia de Amazon EC2. Para conocer sobre los permisos para los hosts en las instalaciones, consulte Permisos para los servidores en las instalaciones.

    1. Inicie sesión en AWS Management Console Management Console y abra la consola IAM en https://console.aws.amazon.com/iam/.

    2. Elija Roles y busque el rol que usa la instancia de Amazon EC2. A continuación, elija el nombre de esa función.

    3. En la pestaña Permisos, elija Añadir permisos, Asociar políticas.

    4. Busque CloudWatchAgentServerPolicy. Use el cuadro de búsqueda si es necesario. Seleccione la casilla de verificación de la política y elija Añadir permisos.

  4. Para iniciar el agente de CloudWatch, introduzca uno de los siguientes comandos. Reemplace agent-config-file-path por la ruta al archivo de configuración del agente CloudWatch, como ./amazon-cloudwatch-agent.json. Debe incluir el prefijo file: tal y como se muestra.

    export CONFIG_FILE_PATH=./amazon-cloudwatch-agent.json
    sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \ -a fetch-config \ -m ec2 -s -c file:agent-config-file-path

Permisos para los servidores en las instalaciones

En el caso de un host en las instalaciones, tendrá que brindar autorización de AWS para su dispositivo.

Configuración de los permisos de un host en las instalaciones
  1. Cree el usuario de IAM que se utilizará para conceder los permisos a su host en las instalaciones:

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

    2. Seleccione Usuarios, Crear nuevos usuarios.

    3. 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. A continuación, elija Siguiente

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

    5. En la lista de Políticas de permisos, seleccione la política CloudWatchAgentServerPolicy para agregarla a su usuario. A continuación, elija Next.

    6. En la página Revisar y crear, asegúrese de que esté satisfecho con el nombre de usuario y de que la política CloudWatchAgentServerPolicy aparezca en Resumen de permisos.

    7. Seleccione la opción Crear usuario.

  2. 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. A continuación, en la sección Claves de acceso, seleccione Crear clave de acceso.

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

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

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

    6. Seleccione Listo.

  3. 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 que generó recién y que se encuentran en 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

Paso 3: instrumentar la aplicación e iníciela

El siguiente paso es configurar la aplicación para CloudWatch Application Signals.

Java
Para instrumentar las aplicaciones de Java como parte de la habilitación de Application Signals en una instancia de Amazon EC2 o un host en las instalaciones
  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 enlace. Puede ver información sobre todas las versiones publicadas en aws-otel-java-instrumentation Lanzamientos.

  2. Para optimizar las ventajas de Application Signals, utilice variables de entorno para proporcionar información adicional antes de iniciar la aplicación. Esta información se mostrará en los paneles de Application Signals.

    1. 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. 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 la aplicación en los paneles de Application Signals. Si 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.

      • Para la variable OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, especifique la URL del punto de conexión base a la que se van a exportar los seguimientos. El agente CloudWatch expone el 4316 como el puerto OLTP. En Amazon EC2, dado que las aplicaciones se comunican con el agente local de CloudWatch, debe establecer este valor en OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces

      • Para la variable OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT, especifique la URL del punto de conexión base a la que se van a exportar las métricas. El agente CloudWatch expone el 4316 como el puerto OLTP. En Amazon EC2, dado que las aplicaciones se comunican con el agente local de CloudWatch, debe establecer este valor en OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics

      • 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
      • Para la variable OTEL_METRICS_EXPORTER, se recomienda establecer el valor en none. Esto deshabilita otros exportadores de métricas para que solo se utilice el exportador de Application Signals.

      • Establezca OTEL_AWS_APPLICATION_SIGNALS_ENABLED en true. Esto genera métricas de Application Signals a partir de los seguimientos.

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

    nota

    La siguiente configuración solo es compatible con las versiones 1.32.2 y posteriores del agente de autoinstrumentación de AWS Distro para OpenTelemetry para Java.

    JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" \ OTEL_METRICS_EXPORTER=none \ OTEL_LOGS_EXPORT=none \ OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true \ OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics \ OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces \ OTEL_RESOURCE_ATTRIBUTES="service.name=$YOUR_SVC_NAME" \ java -jar $MY_JAVA_APP.jar
  4. (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 con los nombres de los grupos de registro de su 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. 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.

    A continuación, se muestra un ejemplo de un script de inicio que ayuda a habilitar la correlación de registros.

    JAVA_TOOL_OPTIONS=" -javaagent:$AWS_ADOT_JAVA_INSTRUMENTATION_PATH" \ OTEL_METRICS_EXPORTER=none \ OTEL_LOGS_EXPORT=none \ OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true \ OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics \ OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces \ OTEL_RESOURCE_ATTRIBUTES="aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP,service.name=$YOUR_SVC_NAME" \ java -jar $MY_JAVA_APP.jar
Python
nota

Si utiliza un servidor WSGI para su aplicación de Python, además de los siguientes pasos de esta sección, consulte No hay datos de Application Signals para la aplicación de Python que usa un servidor WSGI para obtener información sobre cómo hacer que Application Signals funcione.

Instrumentación de aplicaciones Python como parte de la activación de Application Signals en una instancia de Amazon EC2
  1. Descargue la última versión del agente de autoinstrumentación de AWS Distro para OpenTelemetry de Python. Instálelo ejecutando el siguiente comando de .

    pip install aws-opentelemetry-distro

    Puede ver información sobre todas las versiones publicadas en AWS Distro for OpenTelemetry Python instrumentation.

  2. Para optimizar las ventajas de Application Signals, utilice variables de entorno para proporcionar información adicional antes de iniciar la aplicación. Esta información se mostrará en los paneles de Application Signals.

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

      • service.name establece el nombre del servicio. 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.

      • 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. Si 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 clave de atributo solo la usa Application Signals y se convierte en anotaciones de trazas de X-Ray y dimensiones métricas de CloudWatch.

    2. Para la variable OTEL_EXPORTER_OTLP_PROTOCOL, especifique http/protobuf para exportar datos de telemetría a través de HTTP a los puntos de conexión del agente de CloudWatch que se enumeran en los siguientes pasos.

    3. Para la variable OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, especifique la URL del punto de conexión base a la que se van a exportar los seguimientos. El agente de CloudWatch expone 4316 como su puerto OTLP a través de HTTP. En Amazon EC2, dado que las aplicaciones se comunican con el agente local de CloudWatch, debe establecer este valor en OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces

    4. Para la variable OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT, especifique la URL del punto de conexión base a la que se van a exportar las métricas. El agente de CloudWatch expone 4316 como su puerto OTLP a través de HTTP. En Amazon EC2, dado que las aplicaciones se comunican con el agente local de CloudWatch, debe establecer este valor en OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics

    5. Para la variable OTEL_METRICS_EXPORTER, se recomienda establecer el valor en none. Esto deshabilita otros exportadores de métricas para que solo se utilice el exportador de Application Signals.

    6. Establezca la variable OTEL_AWS_APPLICATION_SIGNALS_ENABLED en true para que su contenedor comience a enviar seguimientos de X-Ray y métricas de CloudWatch a Application Signals.

  3. Inicie la aplicación con las variables de entorno descritas 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, en los paneles de Application Signals.

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

    OTEL_METRICS_EXPORTER=none \ OTEL_LOGS_EXPORTER=none \ OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true \ OTEL_PYTHON_DISTRO=aws_distro \ OTEL_PYTHON_CONFIGURATOR=aws_configurator \ OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \ OTEL_TRACES_SAMPLER=xray \ OTEL_TRACES_SAMPLER_ARG="endpoint=http://localhost:2000" \ OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces \ OTEL_RESOURCE_ATTRIBUTES="service.name=$SVC_NAME" \ opentelemetry-instrument python $MY_PYTHON_APP.py

    Antes de activar las señales de aplicación para sus aplicaciones Python, debe tener en cuenta las consideraciones siguientes.

    • En algunas aplicaciones en contenedores, la falta de una variable de entorno PYTHONPATH a veces puede provocar que la aplicación no se inicie. Para solucionar este problema, asegúrese de configurar la variable de entorno PYTHONPATH en la ubicación del directorio de trabajo de la aplicación. Esto se debe a un problema conocido con la instrumentación automática de OpenTelemetry. Para obtener más información sobre este problema, consulte Python autoinstrumentation setting of PYTHONPATH is not compliant.

    • Para las aplicaciones de Django, se requieren configuraciones adicionales, que se describen en la documentación de Python de OpenTelemetry.

      • Use el indicador --noreload para evitar la recarga automática.

      • Establezca la variable de entorno DJANGO_SETTINGS_MODULE en la ubicación del archivo settings.py de su aplicación Django. Esto garantiza que OpenTelemetry pueda acceder correctamente a la configuración de Django e integrarse correctamente con ella.

  4. (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 con los nombres de los grupos de registro de su 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. 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.

    A continuación, se muestra un ejemplo de un script de inicio que ayuda a habilitar la correlación de registros.

    OTEL_METRICS_EXPORTER=none \ OTEL_LOGS_EXPORTER=none \ OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true \ OTEL_PYTHON_DISTRO=aws_distro \ OTEL_PYTHON_CONFIGURATOR=aws_configurator \ OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \ OTEL_TRACES_SAMPLER=xray \ OTEL_TRACES_SAMPLER_ARG="endpoint=http://localhost:2000" \ OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces \ OTEL_RESOURCE_ATTRIBUTES="aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP,service.name=$YOUR_SVC_NAME" \ java -jar $MY_PYTHON_APP.jar
.NET (Preview)
Para instrumentar las aplicaciones de .NET como parte de la habilitación de Application Signals en una instancia de Amazon EC2 o un host en las instalaciones
  1. Descargue la versión más reciente del paquete de autoinstrumentación de .NET de Distro para OpenTelemetry de AWS. Puede descargar la versión más reciente en Versiones aws-otel-dotnet-instrumentation.

  2. Para habilitar Application Signals, establezca las siguientes variables de entorno para proporcionar información adicional antes de iniciar la aplicación. Estas variables son necesarias para configurar el enlace de inicio de la instrumentación .NET antes de iniciar la aplicación .NET.

    • A continuación se muestra 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_RESOURCE_ATTRIBUTES=service.name=aws-otel-integ-test export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf export OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4316 export OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://127.0.0.1:4316/v1/metrics export OTEL_METRICS_EXPORTER=none export OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true export OTEL_TRACES_SAMPLER=xray export OTEL_TRACES_SAMPLER_ARG=http://127.0.0.1:2000
    • El siguiente es un ejemplo que se aplica a 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_RESOURCE_ATTRIBUTES = "service.name=aws-otel-integ-test" $env:OTEL_EXPORTER_OTLP_PROTOCOL = "http/protobuf" $env:OTEL_EXPORTER_OTLP_ENDPOINT = "http://127.0.0.1:4316" $env:OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT = "http://127.0.0.1:4316/v1/metrics" $env:OTEL_METRICS_EXPORTER = "none" $env:OTEL_AWS_APPLICATION_SIGNALS_ENABLED = "true" $env:OTEL_TRACES_SAMPLER = "xray" $env:OTEL_TRACES_SAMPLER_ARG = "http://127.0.0.1:2000"
  3. Inicie la aplicación con las variables de entorno enumeradas en el paso anterior.

Node.js (Preview)
Para instrumentar aplicaciones de Node.js como parte de la activación de Application Signals en una instancia de Amazon EC2:
  1. Descargue la última versión del agente de instrumentación automática de AWS Distro para OpenTelemetry de JavaScript para Node.js. 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 Distro for OpenTelemetry JavaScript instrumentation.

  2. Para optimizar las ventajas de Application Signals, utilice variables de entorno para proporcionar información adicional antes de iniciar la aplicación. Esta información se mostrará en los paneles de Application Signals.

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

      • service.name establece el nombre del servicio. 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.

      • 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. Si 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 clave de atributo solo la usa Application Signals y se convierte en anotaciones de trazas de X-Ray y dimensiones métricas de CloudWatch.

    2. Para la variable OTEL_EXPORTER_OTLP_PROTOCOL, especifique http/protobuf para exportar datos de telemetría a través de HTTP a los puntos de conexión del agente de CloudWatch que se enumeran en los siguientes pasos.

    3. Para la variable OTEL_EXPORTER_OTLP_TRACES_ENDPOINT, especifique la URL del punto de conexión base a la que se van a exportar los seguimientos. El agente de CloudWatch expone 4316 como su puerto OTLP a través de HTTP. En Amazon EC2, dado que las aplicaciones se comunican con el agente local de CloudWatch, debe establecer este valor en OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces

    4. Para la variable OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT, especifique la URL del punto de conexión base a la que se van a exportar las métricas. El agente de CloudWatch expone 4316 como su puerto OTLP a través de HTTP. En Amazon EC2, dado que las aplicaciones se comunican con el agente local de CloudWatch, debe establecer este valor en OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics

    5. Para la variable OTEL_METRICS_EXPORTER, se recomienda establecer el valor en none. Esto deshabilita otros exportadores de métricas para que solo se utilice el exportador de Application Signals.

    6. Establezca la variable OTEL_AWS_APPLICATION_SIGNALS_ENABLED en true para que su contenedor comience a enviar seguimientos de X-Ray y métricas de CloudWatch a Application Signals.

  3. Inicie la aplicación con las variables de entorno descritas 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, en los paneles de Application Signals.

    OTEL_METRICS_EXPORTER=none \ OTEL_LOGS_EXPORTER=none \ OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true \ OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \ OTEL_TRACES_SAMPLER=xray \ OTEL_TRACES_SAMPLER_ARG="endpoint=http://localhost:2000" \ OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics \ OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces \ OTEL_RESOURCE_ATTRIBUTES="service.name=$SVC_NAME" \ node --require '@aws/aws-distro-opentelemetry-node-autoinstrumentation/register' your-application.js
  4. (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 con los nombres de los grupos de registro de su 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. 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.

    A continuación, se muestra un ejemplo de un script de inicio que ayuda a habilitar la correlación de registros.

    export OTEL_METRICS_EXPORTER=none \ export OTEL_LOGS_EXPORTER=none \ export OTEL_AWS_APPLICATION_SIGNALS_ENABLED=true \ export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf \ export OTEL_TRACES_SAMPLER=xray \ export OTEL_TRACES_SAMPLER_ARG=endpoint=http://localhost:2000 \ export OTEL_AWS_APPLICATION_SIGNALS_EXPORTER_ENDPOINT=http://localhost:4316/v1/metrics \ export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4316/v1/traces \ export OTEL_RESOURCE_ATTRIBUTES="aws.log.group.names=$YOUR_APPLICATION_LOG_GROUP,service.name=$SVC_NAME" \ node --require '@aws/aws-distro-opentelemetry-node-autoinstrumentation/register' your-application.js