Rastreo de su aplicación App Runner con X-Ray - AWS App Runner

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.

Rastreo de su aplicación App Runner con X-Ray

AWS X-Ray es un servicio que recopila datos sobre las solicitudes que atiende su aplicación y proporciona herramientas que puede utilizar para ver, filtrar y obtener información sobre esos datos a fin de identificar problemas y oportunidades de optimización. Para cualquier solicitud rastreada hasta su aplicación, puede ver información detallada no solo sobre la solicitud y la respuesta, sino también sobre las llamadas que la aplicación realiza a AWS los recursos intermedios, los microservicios, las bases de datos y las API web HTTP.

X-Ray utiliza datos de rastreo de los AWS recursos que impulsan sus aplicaciones en la nube para generar un gráfico de servicio detallado. El gráfico de servicios muestra el cliente, el servicio front-end y los servicios back-end a los que llama el servicio front-end para procesar solicitudes y mantener los datos. Utilice el gráfico de servicios para identificar cuellos de botella, picos de latencia y otros problemas que puede resolver a fin de mejorar el desempeño de las aplicaciones.

A fin de obtener más información sobre X-Ray, consulte la Guía para desarrolladores de AWS X-Ray.

Ejemplo de un mapa del servicio de X-Ray para un servicio de App Runner

Instrumente su aplicación para el rastreo

Instrumente su aplicación de servicio App Runner para el rastreo mediante OpenTelemetryuna especificación de telemetría portátil. En este momento, App Runner es compatible con AWS Distro for OpenTelemetry (ADOT), una OpenTelemetry implementación que recopila y presenta información de telemetría mediante servicios. AWS X-Ray implementa el componente de rastreo.

Según el SDK de ADOT específico que utilice en su aplicación, ADOT admite hasta dos enfoques de instrumentación: automática y manual. Para obtener más información sobre la instrumentación con su SDK, consulte la documentación de ADOT y elija su SDK en el panel de navegación.

Configuración del tiempo de ejecución

Las siguientes son las instrucciones generales de configuración del tiempo de ejecución para instrumentar la aplicación de servicio App Runner para el rastreo.

Para configurar el rastreo para su tiempo de ejecución
  1. Siga las instrucciones proporcionadas para su tiempo de ejecución en AWS Distro for OpenTelemetry (ADOT) para instrumentar su aplicación.

  2. Instale OTEL las dependencias necesarias en la build sección del apprunner.yaml archivo si utiliza el repositorio de código fuente o en el Dockerfile si utiliza una imagen contenedora.

  3. Configure las variables de entorno en el apprunner.yaml archivo si utiliza el repositorio de código fuente o en el Dockerfile si utiliza una imagen de contenedor.

    ejemplo Variables de entorno
    nota

    En el siguiente ejemplo, se enumeran las variables de entorno importantes que se van a añadir al apprunner.yaml archivo. Agregue estas variables de entorno a su Dockerfile si utiliza una imagen de contenedor. Sin embargo, cada tiempo de ejecución puede tener su propia idiosincrasia y es posible que tengas que añadir más variables de entorno a la siguiente lista. Para obtener más información sobre las instrucciones específicas del tiempo de ejecución y ejemplos sobre cómo configurar la aplicación para su entorno de ejecución, consulte AWS Distro for OpenTelemetry and go to your runtime, en la sección Cómo empezar.

    env: - name: OTEL_PROPAGATORS value: xray - name: OTEL_METRICS_EXPORTER value: none - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://localhost:4317 - name: OTEL_RESOURCE_ATTRIBUTES value: 'service.name=example_app'
    nota

    OTEL_METRICS_EXPORTER=nonees una variable de entorno importante para App Runner, ya que el recopilador de App Runner Otel no acepta el registro de métricas. Solo acepta el rastreo de métricas.

Ejemplo de configuración del tiempo de ejecución

El siguiente ejemplo demuestra la instrumentación automática de su aplicación con el SDK de Python de ADOT. El SDK produce automáticamente intervalos con datos de telemetría que describen los valores utilizados por los marcos de Python de su aplicación sin añadir ni una sola línea de código Python. Solo tienes que añadir o modificar unas pocas líneas en dos archivos fuente.

En primer lugar, añada algunas dependencias, como se muestra en el siguiente ejemplo.

ejemplo requirements.txt
opentelemetry-distro[otlp]>=0.24b0 opentelemetry-sdk-extension-aws~=2.0 opentelemetry-propagator-aws-xray~=1.0

A continuación, instrumente su aplicación. La forma de hacerlo depende de la fuente de servicio: imagen fuente o código fuente.

Source image

Si la fuente de servicio es una imagen, puede instrumentar directamente el Dockerfile que controla la creación de la imagen del contenedor y la ejecución de la aplicación en la imagen. El siguiente ejemplo muestra un Dockerfile instrumentado para una aplicación de Python. Las adiciones a la instrumentación se destacan en negrita.

ejemplo Dockerfile
FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN yum install python3.7 -y && curl -O https://bootstrap.pypa.io/get-pip.py && python3 get-pip.py && yum update -y COPY . /app WORKDIR /app RUN pip3 install -r requirements.txt RUN opentelemetry-bootstrap --action=install ENV OTEL_PYTHON_DISABLED_INSTRUMENTATIONS=urllib3 ENV OTEL_METRICS_EXPORTER=none ENV OTEL_RESOURCE_ATTRIBUTES='service.name=example_app' CMD OTEL_PROPAGATORS=xray OTEL_PYTHON_ID_GENERATOR=xray opentelemetry-instrument python3 app.py EXPOSE 8080
Source code repository

Cuando la fuente de servicio es un repositorio que contiene la fuente de la aplicación, instrumenta indirectamente la imagen mediante los ajustes del archivo de configuración de App Runner. Estos ajustes controlan el Dockerfile que App Runner genera y usa para crear la imagen de tu aplicación. El siguiente ejemplo muestra un archivo de configuración de App Runner instrumentado para una aplicación de Python. Las adiciones a la instrumentación se destacan en negrita.

ejemplo aprunner.yaml
version: 1.0 runtime: python3 build: commands: build: - pip install -r requirements.txt - opentelemetry-bootstrap --action=install run: command: opentelemetry-instrument python app.py network: port: 8080 env: - name: OTEL_PROPAGATORS value: xray - name: OTEL_METRICS_EXPORTER value: none - name: OTEL_PYTHON_ID_GENERATOR value: xray - name: OTEL_PYTHON_DISABLED_INSTRUMENTATIONS value: urllib3 - name: OTEL_RESOURCE_ATTRIBUTES value: 'service.name=example_app'

Agrega permisos de X-Ray a tu rol de instancia de servicio de App Runner

Para usar el rastreo de rayos X con su servicio App Runner, debe proporcionar a las instancias del servicio permisos para interactuar con el servicio de X-Ray. Para ello, asocie un rol de instancia a su servicio y añada una política administrada con permisos de X-Ray. Para obtener más información sobre un rol de instancia de App Runner, consulteRol de instancia. Agrega la política AWSXRayDaemonWriteAccess administrada a tu rol de instancia y asígnala a tu servicio durante la creación.

Habilite el rastreo de X-Ray para su servicio App Runner

Al crear un servicio, App Runner deshabilita el rastreo de forma predeterminada. Puede habilitar el rastreo de rayos X para su servicio como parte de la configuración de la observabilidad. Para obtener más información, consulte Gestione la observabilidad.

Si utilizas la API de App Runner o la AWS CLI, el TraceConfigurationobjeto dentro del objeto de ObservabilityConfigurationrecurso contiene la configuración de rastreo. Para mantener el rastreo desactivado, no especifiques ningún objeto. TraceConfiguration

Tanto en el caso de la consola como en el de la API, asegúrate de asociar el rol de instancia descrito en la sección anterior con tu servicio de App Runner.

Vea los datos de rastreo de X-Ray para su servicio App Runner

En la pestaña Observabilidad de la página del panel de servicios de la consola de App Runner, selecciona Ver mapa de servicios para ir a la CloudWatch consola de Amazon.

Página del panel de control del servicio de App Runner que muestra la pestaña de observabilidad

Usa la CloudWatch consola de Amazon para ver los mapas de servicio y los rastreos de las solicitudes que atiende tu aplicación. Los mapas de servicio muestran información como la latencia de las solicitudes y las interacciones con otras aplicaciones y AWS servicios. Las anotaciones personalizadas que añades al código te permiten buscar fácilmente los rastros. Para obtener más información, consulta ServiceLens Cómo monitorizar el estado de tus aplicaciones en la Guía del CloudWatch usuario de Amazon.