of 366/366
AWS X-Ray Guía para desarrolladores

AWS X-Ray - Guía para desarrolladores...AWS X-Ray Guía para desarrolladores Uso de la imagen de Docker oficial..... 181 Creación y compilación de una imagen de Docker

  • View
    2

  • Download
    0

Embed Size (px)

Text of AWS X-Ray - Guía para desarrolladores...AWS X-Ray Guía para desarrolladores Uso de la imagen de...

  • AWS X-RayGuía para desarrolladores

  • AWS X-Ray Guía para desarrolladores

    AWS X-Ray: Guía para desarrolladoresCopyright © Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

    Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's,in any manner that is likely to cause confusion among customers, or in any manner that disparages or discreditsAmazon. All other trademarks not owned by Amazon are the property of their respective owners, who may or may notbe affiliated with, connected to, or sponsored by Amazon.

  • AWS X-Ray Guía para desarrolladores

    Table of Contents¿Qué es AWS X-Ray? ........................................................................................................................ 1Casos de uso .................................................................................................................................... 3

    Lenguajes y marcos de trabajo admitidos ....................................................................................... 4Servicios compatibles AWS .......................................................................................................... 6Cambios en el código y la configuración ........................................................................................ 7

    Introducción ....................................................................................................................................... 8Prerequisites .............................................................................................................................. 9Implementar en Elastic Beanstalk y generar datos de seguimiento .................................................... 10Consultar el mapa de servicios en la consola de X-Ray .................................................................. 11Configuración de notificaciones de Amazon SNS ........................................................................... 13Explorar la aplicación de ejemplo ................................................................................................ 15Opcional: política de privilegios mínimos ...................................................................................... 18Eliminar recursos ...................................................................................................................... 20Pasos siguientes ....................................................................................................................... 20

    Conceptos ....................................................................................................................................... 21Segments ................................................................................................................................ 21Subsegments ........................................................................................................................... 22Gráfico de servicios .................................................................................................................. 24Traces ..................................................................................................................................... 25Sampling ................................................................................................................................. 26Encabezado de seguimiento ....................................................................................................... 26Expresiones de filtro .................................................................................................................. 27Groups .................................................................................................................................... 27Anotaciones y metadatos ........................................................................................................... 27Errores y excepciones ............................................................................................................... 28

    Seguridad ........................................................................................................................................ 29.............................................................................................................................................. 29

    Protección de los datos ............................................................................................................. 29Administración de identidades y accesos ...................................................................................... 30

    Público ............................................................................................................................ 31Autenticación con identidades ............................................................................................. 31Administración de acceso mediante políticas ......................................................................... 33Cómo funciona AWS X-Ray con IAM ................................................................................... 35Ejemplos de políticas basadas en identidades ....................................................................... 40Solución de problemas ...................................................................................................... 47

    Registro y monitorización ........................................................................................................... 49Validación de la conformidad ...................................................................................................... 49Resiliencia ............................................................................................................................... 50Seguridad de la infraestructura ................................................................................................... 50

    X-RayConsola de .............................................................................................................................. 51Consulta del mapa de servicio .................................................................................................... 51

    Ver el mapa de servicio por grupo ...................................................................................... 54Cambio de la presentación del nodo .................................................................................... 55

    Consulta de registros de seguimiento .......................................................................................... 57Consulta del mapa de seguimiento .............................................................................................. 59Consulta de detalles de segmentos ............................................................................................. 60Consulta de detalles de subsegmentos ........................................................................................ 61Expresiones de filtro .................................................................................................................. 64

    Detalles de expresión de filtro ............................................................................................. 64Uso de expresiones de filtro con grupos ............................................................................... 65Sintaxis de expresiones de filtro .......................................................................................... 65Palabras clave booleanas .................................................................................................. 66Palabras clave numéricas .................................................................................................. 67Palabras clave de cadenas ................................................................................................ 68

    iii

  • AWS X-Ray Guía para desarrolladores

    Palabras clave complejas ................................................................................................... 69id Función ........................................................................................................................ 71

    Vinculación en profundidad ........................................................................................................ 73Rastros ............................................................................................................................ 73Expresiones de filtro .......................................................................................................... 73Intervalo de tiempo ........................................................................................................... 74Región ............................................................................................................................ 74En combinación ................................................................................................................ 74

    Histogramas ............................................................................................................................. 75Latencia ........................................................................................................................... 75Interpretación de los detalles del servicio ............................................................................. 75

    Muestreo ................................................................................................................................. 76Configuración de reglas de muestreo ................................................................................... 77Personalización de reglas de muestreo ................................................................................ 77Opciones de reglas de muestreo ......................................................................................... 78Ejemplos de reglas de muestreo ......................................................................................... 79Configuración del servicio para utilizar reglas de muestreo ...................................................... 79Visualización de resultados de muestreo .............................................................................. 80Pasos siguientes ............................................................................................................... 80

    Insights .................................................................................................................................... 81Habilitar la información en la X-Ray consola de ..................................................................... 81Habilitar notificaciones de conocimientos .............................................................................. 82Información general de Insight ............................................................................................ 83Revisar el progreso de un conocimiento ............................................................................... 85

    Analytics .................................................................................................................................. 87Características de la consola .............................................................................................. 87Distribución del tiempo de respuesta ................................................................................... 89Actividad de series temporales ........................................................................................... 90Ejemplos de flujo de trabajo ............................................................................................... 90Observar errores en el gráfico de servicio ............................................................................ 90Identificar los picos de tiempo de respuesta .......................................................................... 91Consultar todos los registros de seguimiento marcados con un código de estado ........................ 91Consultar todos los elementos de un subgrupo y asociados a un usuario ................................... 92Comparar dos conjuntos de registros de seguimiento con criterios diferentes .............................. 92Identificar un registro de seguimiento de su interés y ver sus detalles ........................................ 92

    Grupos .................................................................................................................................... 92Crear un grupo en la X-Ray consola de ............................................................................... 93Aplicar un grupo ............................................................................................................... 94Editar un grupo ................................................................................................................ 95Clonar un grupo ............................................................................................................... 96Eliminar un grupo ............................................................................................................. 97Ver métricas de grupo de en Amazon CloudWatch ................................................................ 97

    X-RayAPI de .................................................................................................................................... 99Tutorial .................................................................................................................................... 99

    Prerequisites .................................................................................................................... 99Generar datos de seguimiento .......................................................................................... 100Uso de la API de X-Ray. .................................................................................................. 100Cleanup ......................................................................................................................... 102

    Envío de datos ....................................................................................................................... 102Generación de identificadores de seguimiento ..................................................................... 104Uso de PutTraceSegments ............................................................................................... 104Envío de documentos de segmento al demonio de X-Ray ..................................................... 105

    Obtención de datos ................................................................................................................. 106Recuperación del gráfico de servicios ................................................................................ 106Recuperación del gráfico de servicios por grupo .................................................................. 111Recuperación de registros de seguimiento .......................................................................... 111Recuperación y ajuste de las causas raíz de Analytics .......................................................... 114

    iv

  • AWS X-Ray Guía para desarrolladores

    Configuración ......................................................................................................................... 116Configuración de cifrado ................................................................................................... 116Reglas de muestreo ........................................................................................................ 117Groups .......................................................................................................................... 120

    Muestreo ................................................................................................................................ 121Documentos de segmentos ...................................................................................................... 123

    Campos de segmentos .................................................................................................... 124Subsegments .................................................................................................................. 126Datos de solicitudes HTTP ............................................................................................... 129Annotations .................................................................................................................... 131Metadata ........................................................................................................................ 131AWS Datos de recursos de .............................................................................................. 132Errores y excepciones ..................................................................................................... 134Consultas SQL ............................................................................................................... 135

    Aplicación de muestra ...................................................................................................................... 137Introducción (CLI) .................................................................................................................... 141

    Prerequisites .................................................................................................................. 142Crear la instancia Amazon EC2 ........................................................................................ 142Instale la CLI de AWS ..................................................................................................... 143Implementar Scorekeep .................................................................................................... 144Generar datos de seguimiento .......................................................................................... 146Obtener datos ................................................................................................................. 147Configurar las notificaciones de Amazon SNS ..................................................................... 151Eliminar recursos ............................................................................................................ 152Pasos siguientes ............................................................................................................. 152

    AWS Clientes de SDK ............................................................................................................. 152Subsegmentos personalizados .................................................................................................. 153Anotaciones y metadatos ......................................................................................................... 153Clientes de HTTP ................................................................................................................... 154Clientes de SQL ..................................................................................................................... 155AWS LambdaFunciones de ...................................................................................................... 157

    Nombre aleatorio ............................................................................................................. 158Worker ........................................................................................................................... 159

    Amazon ECS .......................................................................................................................... 161Código de inicio ...................................................................................................................... 162Scripts ................................................................................................................................... 163Cliente ................................................................................................................................... 165Subprocesos de trabajo ........................................................................................................... 168Vinculación en profundidad ....................................................................................................... 170

    X-RayDemonio de ........................................................................................................................... 171Descargar el demonio .............................................................................................................. 171Verificación de la firma del archivo de demonio ........................................................................... 172Ejecutar el demonio ................................................................................................................. 173Concesión de permiso al demonio para el envío de datos a X-Ray ................................................. 173X-RayRegistros del demonio de ................................................................................................ 174Configuración ......................................................................................................................... 174

    Variables de entorno admitidas ......................................................................................... 175Uso de las opciones de la línea de comandos ..................................................................... 175Uso de un archivo de configuración ................................................................................... 176

    Ejecución del demonio localmente ............................................................................................. 177Ejecución del demonio de X-Ray en Linux .......................................................................... 177Ejecución del demonio de X-Ray en un contenedor Docker ................................................... 178Ejecución del demonio de X-Ray en Windows ..................................................................... 179Ejecución del demonio de X-Ray en OS X .......................................................................... 179

    En Elastic Beanstalk ................................................................................................................ 180Uso de la integración de Elastic Beanstalk en X-Ray para ejecutar el demonio de X-Ray ............. 180Descarga y ejecución del demonio de X-Ray manualmente (avanzado) ................................... 181

    v

  • AWS X-Ray Guía para desarrolladores

    En Amazon EC2 ..................................................................................................................... 183En Amazon ECS ..................................................................................................................... 184

    Uso de la imagen de Docker oficial de la ............................................................................ 184Creación y compilación de una imagen de Docker ............................................................... 184Configuración de las opciones de línea de comandos en la consola de Amazon ECS ................. 186

    Integración con los servicios de AWS ................................................................................................ 188API Gateway .......................................................................................................................... 188App Mesh .............................................................................................................................. 189AWS AppSync ........................................................................................................................ 191CloudTrail .............................................................................................................................. 191CloudWatch ............................................................................................................................ 193

    CloudWatchSynthetics de ................................................................................................. 193AWS Config ........................................................................................................................... 199

    Creación de un desencadenador de funciones Lambda ......................................................... 200Creación de una regla de AWS Config personalizada para X-Ray ........................................... 201Resultados de ejemplo ..................................................................................................... 201Notificaciones de Amazon SNS ......................................................................................... 202

    Amazon EC2 .......................................................................................................................... 202Elastic Beanstalk ..................................................................................................................... 202Elastic Load Balancing ............................................................................................................. 203EventBridge ............................................................................................................................ 203

    Visualización del origen y los destinos en el mapa de X-Ray servicio ....................................... 203Propagar el contexto de seguimiento a los destinos de eventos .............................................. 204

    Lambda ................................................................................................................................. 208Amazon SNS .......................................................................................................................... 209

    Requirements ................................................................................................................. 209Creación de una función de suscriptor Lambda .................................................................... 209Creación de un tema de Amazon SNS ............................................................................... 210Creación de una función de editor Lambda ......................................................................... 211Comprobación y validación de la propagación de contexto .................................................... 212

    Step Functions ........................................................................................................................ 213Amazon SQS ......................................................................................................................... 214

    Enviar el encabezado de seguimiento HTTP ....................................................................... 215Recuperar el encabezado y el contexto de seguimiento ........................................................ 215

    Amazon S3 ............................................................................................................................ 216Configurar notificaciones Amazon S3 de eventos ................................................................. 216

    Uso de Go ..................................................................................................................................... 218Requirements ......................................................................................................................... 219Documentación de referencia .................................................................................................... 219Configuración ......................................................................................................................... 219

    Complementos del servicio ............................................................................................... 219Reglas de muestreo ........................................................................................................ 221Registro de .................................................................................................................... 222Variables de entorno ....................................................................................................... 223Uso de la opción configure ............................................................................................... 223

    Solicitudes entrantes ................................................................................................................ 224Configuración de una estrategia de nomenclatura de segmentos ............................................ 225

    AWS Clientes de SDK ............................................................................................................. 226Llamadas a HTTP salientes ...................................................................................................... 227Consultas SQL ....................................................................................................................... 228Subsegmentos personalizados .................................................................................................. 228Anotaciones y metadatos ......................................................................................................... 229

    Registro de anotaciones con el SDK de X-Ray para Go ........................................................ 229Registro de metadatos con el SDK de X-Ray para Go .......................................................... 230Registro de ID de usuario con el SDK de X-Ray para Go ...................................................... 230

    Uso de Java ................................................................................................................................... 231Submodules ........................................................................................................................... 232

    vi

  • AWS X-Ray Guía para desarrolladores

    Requirements ......................................................................................................................... 232Administración de dependencias ............................................................................................... 233AWS X-Ray Agente de instrucción automática de para Java .......................................................... 234

    Aplicación de muestra ...................................................................................................... 235Introducción .................................................................................................................... 235Configuration .................................................................................................................. 235Troubleshooting .............................................................................................................. 241

    Configuración ......................................................................................................................... 242Complementos del servicio ............................................................................................... 242Reglas de muestreo ........................................................................................................ 244Logging ......................................................................................................................... 246Agentes de escucha de segmento ..................................................................................... 249Variables de entorno ....................................................................................................... 250Propiedades del sistema .................................................................................................. 250

    Solicitudes entrantes ................................................................................................................ 250Agregar un filtro de seguimiento a la aplicación (Tomcat) ...................................................... 251Agregar un filtro de seguimiento a la aplicación (Spring) ....................................................... 252Configuración de una estrategia de nomenclatura de segmentos ............................................ 252

    AWS Clientes de SDK ............................................................................................................. 254Llamadas a HTTP salientes ...................................................................................................... 255Consultas SQL ....................................................................................................................... 257Subsegmentos de personalizados .............................................................................................. 258Anotaciones y metadatos ......................................................................................................... 260

    Registro de anotaciones con el X-Ray SDK for Java ............................................................ 261Registro de metadatos con el X-Ray SDK for Java ............................................................... 262Registro de ID de usuario con el X-Ray SDK for Java .......................................................... 263

    Monitorización ......................................................................................................................... 264Métricas de X-Ray para CloudWatch .................................................................................. 264Dimensiones de X-Ray para CloudWatch ............................................................................ 265Habilitar las métricas de X-Ray para CloudWatch ................................................................. 265

    Multiproceso ........................................................................................................................... 266Uso de X-Ray con programación asíncrona ........................................................................ 267

    AOP con Spring ...................................................................................................................... 267Configuración de Spring ................................................................................................... 267Agregar un filtro de rastreo a la aplicación .......................................................................... 268Anotación del código o implementación de una interfaz ......................................................... 268Activación de X-Ray en la aplicación ................................................................................. 268Example ........................................................................................................................ 268

    Uso de Node.js ............................................................................................................................... 270Requirements ......................................................................................................................... 271Administración de dependencias ............................................................................................... 271Ejemplos de Node.js ................................................................................................................ 272Configuración ......................................................................................................................... 272

    Complementos del servicio ............................................................................................... 272Reglas de muestreo ........................................................................................................ 273Registro de .................................................................................................................... 274Dirección del demonio de X-Ray ....................................................................................... 275Variables de entorno ....................................................................................................... 275

    Solicitudes entrantes ................................................................................................................ 276Seguimiento de solicitudes entrantes con Express ................................................................ 277Seguimiento de solicitudes entrantes con Restify ................................................................. 277Configuración de una estrategia de nomenclatura de segmentos ............................................ 278

    AWS Clientes de SDK ............................................................................................................. 279Llamadas a HTTP salientes ...................................................................................................... 280Consultas SQL ....................................................................................................................... 281

    Inclusión de datos adicionales en subsegmentos SQL .......................................................... 282Subsegmentos de personalizados .............................................................................................. 282

    vii

  • AWS X-Ray Guía para desarrolladores

    Subsegmentos Express personalizados .............................................................................. 282Subsegmentos de Lambda personalizados .......................................................................... 283

    Anotaciones y metadatos ......................................................................................................... 284Registro de anotaciones con el X-Ray SDK for Node.js ......................................................... 284Registro de metadatos con el X-Ray SDK for Node.js ........................................................... 285Registro de ID de usuario con el X-Ray SDK for Node.js ....................................................... 286

    Uso de Python ................................................................................................................................ 287Requirements ......................................................................................................................... 288Administración de dependencias ............................................................................................... 289Configuración ......................................................................................................................... 289

    Complementos del servicio ............................................................................................... 289Reglas de muestreo ........................................................................................................ 291Logging ......................................................................................................................... 292Configuración de la grabadora en código ............................................................................ 292Configuración de la grabadora con Django .......................................................................... 293Variables de entorno ....................................................................................................... 294

    Solicitudes entrantes ................................................................................................................ 294Agregar el middleware a su aplicación (Django) ................................................................... 295Agregar el middleware a su aplicación (flask) ...................................................................... 296Agregar el middleware a su aplicación (Bottle) ..................................................................... 297Instrumentación manual del código de Python ..................................................................... 297Configuración de una estrategia de nomenclatura de segmentos ............................................ 297

    Aplicación de parches a bibliotecas ........................................................................................... 298Seguimiento del contexto para el funcionamiento asíncrono ................................................... 300

    AWS Clientes de SDK ............................................................................................................. 300Llamadas a HTTP salientes ...................................................................................................... 301Subsegmentos personalizados .................................................................................................. 302Anotaciones y metadatos ......................................................................................................... 304

    Registro de anotaciones con el SDK de X-Ray para Python ................................................... 304Registro de metadatos con el SDK de X-Ray para Python ..................................................... 305Registro de identificadores de usuario con el SDK de X-Ray para Python ................................. 306

    Instrumentación de aplicaciones sin servidor ............................................................................... 306Prerequisites .................................................................................................................. 307Paso 1: Crear un entorno ................................................................................................. 307Paso 2: Crear e implementar un entorno de Zappa .............................................................. 308Paso 3: Habilitar el seguimiento de X-Ray en API Gateway ................................................... 309Paso 4: Consultar el registro de seguimiento creado ............................................................ 309Paso 5: Eliminación ......................................................................................................... 310Pasos siguientes ............................................................................................................. 311

    Uso de Ruby .................................................................................................................................. 312Requirements ......................................................................................................................... 313Configuración ......................................................................................................................... 313

    Complementos del servicio ............................................................................................... 313Reglas de muestreo ........................................................................................................ 315Logging ......................................................................................................................... 317Configuración de la grabadora en código ............................................................................ 317Configuración de la grabadora con Rails ............................................................................ 318Variables de entorno ....................................................................................................... 318

    Solicitudes entrantes ................................................................................................................ 319Uso del middleware de Rails ............................................................................................ 319Instrumentación manual del código .................................................................................... 320Configuración de una estrategia de nomenclatura de segmentos ............................................ 320

    Aplicación de parches a bibliotecas ........................................................................................... 321AWS Clientes de SDK ............................................................................................................. 322Subsegmentos personalizados .................................................................................................. 323Anotaciones y metadatos ......................................................................................................... 323

    Registro de anotaciones con el SDK de X-Ray para Ruby ..................................................... 324

    viii

  • AWS X-Ray Guía para desarrolladores

    Registro de metadatos con el SDK de X-Ray para Ruby ....................................................... 325Registro de ID de usuario con el SDK de X-Ray para Ruby ................................................... 325

    Uso de .NET .................................................................................................................................. 327Requirements ......................................................................................................................... 328Agregar el X-Ray SDK for .NET a su aplicación ........................................................................... 328Configuración ......................................................................................................................... 328

    Complementos ................................................................................................................ 329Reglas de muestreo ........................................................................................................ 330Registro (.NET) ............................................................................................................... 332Registro (.NET Core) ....................................................................................................... 332Variables de entorno ....................................................................................................... 333

    Solicitudes entrantes ................................................................................................................ 333Instrumentación de las solicitudes entrantes (.NET) .............................................................. 334Instrumentación de las solicitudes entrantes (.NET Core) ...................................................... 335Configuración de una estrategia de nomenclatura de segmentos ............................................ 335

    AWS Clientes de SDK ............................................................................................................. 336Llamadas a HTTP salientes ...................................................................................................... 338Consultas SQL ....................................................................................................................... 339

    Seguimiento de consultas SQL con métodos síncronos y asíncronos ....................................... 339Recopilación de consultas SQL realizadas a SQL Server ...................................................... 340

    Subsegmentos personalizados .................................................................................................. 341Anotaciones y metadatos ......................................................................................................... 342

    Registro de anotaciones con el X-Ray SDK for .NET ............................................................ 343Registro de metadatos con el X-Ray SDK for .NET .............................................................. 343

    Uso de la distribución de AWS paraOpenTelemetry .............................................................................. 345Etiquetado ...................................................................................................................................... 346

    Restricciones de las etiquetas ................................................................................................... 347Administración de etiquetas en la consola de .............................................................................. 347

    Agregar etiquetas a un nuevo grupo de (consola) ................................................................ 347Agregar etiquetas a una nueva regla de muestreo (consola) .................................................. 348Editar o eliminar etiquetas de un grupo (consola) ................................................................. 348Editar o eliminar etiquetas de una regla de muestreo (consola) .............................................. 349

    Administración de etiquetas en la AWS CLI ................................................................................ 349Agregar etiquetas a un nuevo X-Ray grupo o regla de muestreo (CLI) ..................................... 349Agregar etiquetas a un recurso existente (CLI) .................................................................... 351Enumerar etiquetas en un recurso (CLI) ............................................................................. 351Eliminar etiquetas en un recurso (CLI) ............................................................................... 352

    Controlar el acceso a X-Ray los recursos de en función de las etiquetas .......................................... 352Solución de problemas ..................................................................................................................... 353

    X-Ray SDK for Java ................................................................................................................ 353X-Ray SDK for Node.js ............................................................................................................ 353El demonio de X-Ray .............................................................................................................. 354

    Historial de revisión ......................................................................................................................... 355................................................................................................................................................. ccclvii

    ix

  • AWS X-Ray Guía para desarrolladores

    ¿Qué es AWS X-Ray?AWS X-Ray es un servicio que recopila datos sobre las solicitudes que su aplicación atiende y proporcionaherramientas que puede utilizar para consultar, filtrar y obtener información sobre dichos datos paraidentificar problemas y oportunidades de optimización. En cada solicitud rastreada enviada a su aplicación,puede ver información detallada sobre la solicitud, la respuesta y también sobre las llamadas que suaplicación realiza a recursos, microservicios, bases de datos de AWS y API web de HTTP posteriores.

    El SDK de X-Ray proporciona:

    • Interceptadores para añadir a su código y controlar solicitudes HTTP entrantes• Controladores de cliente para instrumentar clientes AWS SDK que la aplicación utiliza para llamar a

    otros AWS servicios de• Un cliente HTTP que se puede utilizar para instrumentar llamadas a servicios web HTTP internos y

    externos

    El SDK también admite la instrumentación de llamadas a bases de datos SQL, la instrumentaciónautomática de clientes AWS SDK y otras características.

    En lugar de enviar los datos de rastreo directamente a X-Ray, el SDK envía documentos de segmentoJSON a un proceso del demonio que escucha el tráfico UDP. El demonio de X-Ray (p. 171) almacena

    1

  • AWS X-Ray Guía para desarrolladores

    en búfer segmentos en una cola y los carga a X-Ray en lotes. El demonio está disponible para Linux,Windows y macOS y se incluye en las plataformas AWS Elastic Beanstalk y AWS Lambda.

    X-Ray utiliza datos de rastreo de los AWS recursos que alimentan sus aplicaciones en la nube paragenerar un gráfico de servicios detallado. El gráfico de servicios muestra el cliente, el servicio front-end ylos 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 quepuede resolver a fin de mejorar el desempeño de las aplicaciones.

    Consulte el tutorial de introducción (p. 8) para empezar a utilizar X-Ray en tan solo unos minutos conuna aplicación de ejemplo instrumentada. O siga leyendo (p. 3) para obtener información sobre loslenguajes, marcos de trabajo y servicios que funcionan con X-Ray.

    2

  • AWS X-Ray Guía para desarrolladores

    AWS X-RayCasos de uso y requisitosde

    Puede utilizar el X-Ray SDK de y la integración de AWS servicios de para instrumentar solicitudes a susaplicaciones que se ejecutan localmente o en servicios AWS informáticos como Amazon EC2 ElasticBeanstalk, Amazon ECS y AWS Lambda.

    Para instrumentar el código de su aplicación, utilice el SDK de X-Ray. El SDK registra datos sobre lassolicitudes entrantes y salientes y los envía al demonio de X-Ray, el cual retransmite los datos en lotes aX-Ray. Por ejemplo, cuando su aplicación llama a DynamoDB para recuperar información de un usuariode la tabla de DynamoDB, el SDK de X-Ray registra los datos de la solicitud de cliente y de la llamadaposterior a DynamoDB.

    Otros AWS servicios de facilitan la instrumentación de los componentes de su aplicación al integrarse conX-Ray. La integración de servicios puede incluir rastrear encabezados a solicitudes entrantes, enviar datosde rastreo a X-Ray o ejecutar el demonio de X-Ray. Por ejemplo, AWS Lambda puede enviar los datos derastreo sobre las solicitudes a sus funciones de Lambda y ejecutar el demonio de X-Ray en los procesosde trabajo para facilitar el uso del SDK de X-Ray.

    3

  • AWS X-Ray Guía para desarrolladoresLenguajes y marcos de trabajo admitidos

    Muchos escenarios de instrumentación solo requieren cambios en la configuración. Por ejemplo, puedeinstrumentar todas las solicitudes HTTP entrantes y las llamadas posteriores a AWS los servicios de querealiza su aplicación Java. Para ello, añada el filtro del X-Ray SDK for Java a la configuración de servlety adopte el submódulo Instrumentor de AWS SDK for Java como una dependencia de compilación. Pararealizar una instrumentación avanzada, puede modificar el código de la aplicación para personalizar yanotar los datos que el SDK envía a X-Ray.

    Secciones• Lenguajes y marcos de trabajo admitidos (p. 4)• Servicios compatibles AWS (p. 6)• Cambios en el código y la configuración (p. 7)

    Lenguajes y marcos de trabajo admitidosAWS X-Ray proporciona herramientas e integración para admitir una variedad de lenguajes, marcos detrabajo y plataformas.

    C#

    En Windows Server, puede utilizar el X-Ray SDK for .NET para instrumentar las solicitudes entrantes, losclientes AWS del SDK, los clientes SQL y los clientes HTTP. En AWS Lambda puede utilizar la integraciónde Lambda en X-Ray para instrumentar las solicitudes entrantes.

    Para obtener más información, consulte AWS X-Ray SDK para .NET (p. 327).

    • .NET en Windows – Server: añada un controlador de (p. 334) mensajes a su configuración HTTP parainstrumentar las solicitudes entrantes.

    • C# .NET Core en AWS Lambda – : habilite X-Ray en la configuración de la Lambda función parainstrumentar las solicitudes entrantes.

    Go

    En cualquier aplicación de Go, puede utilizar las SDK de X-Ray para Go clases de para instrumentar lassolicitudes entrantes, los clientes AWS del SDK, los clientes SQL y los clientes HTTP. La instrumentaciónautomática de solicitudes está disponible para las aplicaciones que utilizan controladores HTTP.

    En AWS Lambda puede utilizar la integración de Lambda en X-Ray para instrumentar las solicitudesentrantes. Añada el SDK de X-Ray para Go a la función para disponer de una instrumentación completa.

    Para obtener más información, consulte AWS X-RaySDK de para Go (p. 218).

    • Aplicaciones web – Go: utilice el controlador SDK de X-Ray para Go (p. 224) HTTP para procesar lassolicitudes entrantes en sus rutas.

    • En , AWS Lambda – habilite X-Ray en la configuración de la Lambda función de para instrumentar lassolicitudes entrantes. Añada SDK de X-Ray para Go para instrumentar clientes HTTP, SQL y AWS delSDK.

    Java

    En cualquier aplicación Java, puede utilizar las X-Ray SDK for Java clases de para instrumentar lassolicitudes entrantes, los clientes AWS del SDK, los clientes SQL y los clientes HTTP. La instrumentaciónautomática de solicitudes está disponible para los marcos de trabajo que admiten servlets de Java. Lainstrumentación automática del SDK está disponible mediante el submódulo Instrumentor.

    En AWS Lambda puede utilizar la integración de Lambda en X-Ray para instrumentar las solicitudesentrantes. Añada el X-Ray SDK for Java a la función para disponer de una instrumentación completa.

    4

  • AWS X-Ray Guía para desarrolladoresLenguajes y marcos de trabajo admitidos

    Para obtener más información, consulte AWS X-Ray SDK para Java (p. 231).

    • – Tomcat: añada un filtro (p. 251) de servlet al descriptor de implementación (web.xml) parainstrumentar las solicitudes entrantes.

    • Spring Boot: – añada un filtro (p. 252) de servlet a su WebConfig clase para instrumentar lassolicitudes entrantes.

    • Java en AWS Lambda – : habilite X-Ray en su Lambda función para instrumentar las solicitudesentrantes. Añada X-Ray SDK for Java para instrumentar clientes HTTP, SQL y AWS del SDK.

    • Other – frameworks: añada un filtro de servlet si el marco admite servlets o cree manualmente unsegmento para cada solicitud entrante.

    Node.js

    En cualquier aplicación Node.js, puede utilizar las X-Ray SDK for Node.js clases de para instrumentar lassolicitudes entrantes, los clientes AWS del SDK, los clientes SQL y los clientes HTTP. La instrumentaciónautomática de solicitudes está disponible para las aplicaciones que utilizan los marcos de trabajo Express yRestify.

    En AWS Lambda puede utilizar la integración de Lambda en X-Ray para instrumentar las solicitudesentrantes. Añada el X-Ray SDK for Node.js a la función para disponer de una instrumentación completa.

    Para obtener más información, consulte AWS X-Ray SDK for Node.js (p. 270).

    • Express o – Restify: utilice el X-Ray SDK for Node.js middleware (p. 276) para instrumentar lassolicitudes entrantes.

    • Node.js en AWS Lambda – : habilite X-Ray en su Lambda función para instrumentar las solicitudesentrantes. Agregar el X-Ray SDK for Node.js para instrumentar clientes HTTP, SQL y AWS del SDK de

    • Otros marcos de trabajo: cree – manualmente un segmento para cada solicitud entrante.

    Python

    En cualquier aplicación Python, puede utilizar las SDK de X-Ray para Python clases para instrumentar lassolicitudes entrantes, los clientes AWS del SDK, los clientes SQL y los clientes HTTP. La instrumentaciónautomática de solicitudes está disponible para las aplicaciones que utilizan los marcos de trabajo Django yFlask.

    En AWS Lambda puede utilizar la integración de Lambda en X-Ray para instrumentar las solicitudesentrantes. Añada el SDK de X-Ray para Python a la función para disponer de una instrumentacióncompleta.

    Para obtener más información, consulte AWS X-RaySDK de para Python (p. 287).

    • Django o – Flask: utilice el SDK de X-Ray para Python middleware (p. 294) para instrumentar lassolicitudes entrantes.

    • Python en AWS Lambda – : habilite X-Ray en la configuración de la Lambda función de parainstrumentar las solicitudes entrantes. Añada SDK de X-Ray para Python para instrumentar clientesHTTP, SQL y AWS del SDK.

    • Otros marcos de trabajo: cree – manualmente un segmento para cada solicitud entrante.

    Ruby

    En cualquier aplicación Ruby, puede utilizar las SDK de X-Ray para Ruby clases de para instrumentar lassolicitudes entrantes, los clientes AWS del SDK, los clientes SQL y los clientes HTTP. La instrumentaciónautomática de recursos se puede realizar en aplicaciones que utilizan el marco de trabajo Rails.

    5

  • AWS X-Ray Guía para desarrolladoresServicios compatibles AWS

    • – Rails: añada la SDK de X-Ray para Ruby gema y el railtie a su archivo Gemfile y configure lagrabadora (p. 319) en un inicializador para instrumentar las solicitudes entrantes.

    • Otros marcos de trabajo: cree – manualmente un segmento (p. 320) para cada solicitud entrante.

    Si el SDK de X-Ray no está disponible para su lenguaje o plataforma, puede generar datos de rastreo deforma manual y enviarlos al demonio de X-Ray o directamente a la API de X-Ray (p. 99).

    Servicios compatibles AWSVarios servicios de AWS proporcionan servicios de integración con X-Ray. Los serviciosintegrados (p. 188) ofrecen distintos niveles de integración, los cuales pueden incluir el muestreo y laincorporación de encabezados a las solicitudes entrantes, la ejecución del demonio de X-Ray y el envíoautomático de datos de rastreo a X-Ray.

    • Instrumentación activa – Realiza un muestreo de las solicitudes entrantes y las instrumenta.• Instrumentación pasiva – Instrumenta solicitudes cuyo muestreo lo realizó otro servicio.• Rastreo de solicitudes – Agrega un encabezado de rastreo a todas las solicitudes entrantes y lo propaga.• – Tooling: ejecuta el X-Ray demonio de para recibir segmentos del X-Ray SDK.

    Los siguientes servicios proporcionan la integración de X-Ray:

    • AWS Lambda – Instrumentación activa y pasiva de solicitudes entrantes en todos los tiempos deejecución. AWS Lambda añade dos nodos al mapa de servicio, uno para el AWS Lambda servicioy otro para la función . Al habilitar la instrumentación, AWS Lambda también ejecuta el demoniode X-Ray en los tiempos de ejecución de Java y Node.js para usarlo con el SDK de X-Ray. Másinformación (p. 208).

    • Amazon API Gateway – Instrumentación activa y pasiva. API Gateway utiliza reglas de muestreo paradeterminar qué solicitudes registrar y añade un nodo para la etapa de gateway a su mapa de servicio.Más información (p. 188).

    • Elastic Load Balancing – Solicita realizar un rastreo de Application Load Balancers. El Application LoadBalancer agrega el ID de rastro al encabezado de la solicitud antes de enviarlo al grupo de destino. Másinformación (p. 203).

    • AWS Elastic Beanstalk – Herramientas. Elastic Beanstalk incluye el X-Ray demonio de en las siguientesplataformas:• Configuraciones de Java SE – 2.3.0 y posteriores• Tomcat – 2.4.0 y configuraciones posteriores• Node.js – 3.2.0 y configuraciones posteriores• Windows – Server: todas las configuraciones distintas de Windows Server Core que se han lanzado

    desde el 9th de diciembre de 2016.

    Puede usar la consola de Elastic Beanstalk para indicar a Elastic Beanstalk que ejecute eldemonio en estas plataformas o utilizar la opción XRayEnabled en el espacio de nombresaws:elasticbeanstalk:xray. Más información (p. 202).

    • Amazon EventBridge – Instrumentación pasiva. Si un servicio que publica eventos en EventBridge estáinstrumentado con el X-Ray SDK, los destinos de eventos recibirán el encabezado de rastreo y podránseguir propagando el ID de rastreo original. Más información (p. 203).

    • Amazon Simple Notification Service – Instrumentación pasiva. Si un editor de Amazon SNS haceun rastreo de su cliente con el SDK de X-Ray, el suscriptor puede recuperar el encabezado derastreo y seguir propagando el rastreo original a partir del editor con el mismo ID de rastro. Másinformación (p. 209).

    6

  • AWS X-Ray Guía para desarrolladoresCambios en el código y la configuración

    • Amazon Simple Queue Service – Instrumentación pasiva. Si un servicio rastrea solicitudes utilizando elSDK de X-Ray, Amazon SQS podrá enviar el encabezado de rastreo y continuar propagando el rastrooriginal entre el remitente y el consumidor con un ID de rastro coherente. Más información (p. 214).

    Cambios en el código y la configuraciónSe puede generar una gran cantidad de datos de rastreo sin realizar ningún tipo de cambio funcional enel código. El rastreo detallado de las llamadas front-end y las llamadas posteriores requieren cambiosmínimos únicamente en la compilación y en la configuración del tiempo de implementación.

    Ejemplos de cambios en el código y la configuración

    • AWS Configuración de recursos – de : cambie la configuración de AWS los recursos para instrumentarlas solicitudes a una Lambda función de . Cambia la configuración de la opción mediante la ejecución deldemonio de X-Ray en las instancias en su entorno de Elastic Beanstalk.

    • Configuración de la – compilación: tome X-Ray SDK for Java submódulos como una dependencia detiempo de compilación para instrumentar todas las solicitudes posteriores a AWS los servicios de y a losrecursos de como Amazon DynamoDB tablas de , Amazon SQS colas de y Amazon S3 buckets de .

    • Configuración de la – aplicación: para instrumentar las solicitudes HTTP entrantes, añada un filtro deservlet a la aplicación Java o utilice X-Ray SDK for Node.js como middleware en la aplicación Express.Cambie las reglas de muestreo y habilite los complementos para instrumentar los recursos de AmazonEC2, Amazon ECS y AWS Elastic Beanstalk que ejecuta la aplicación.

    • Configuración de clase u objeto – Para instrumentar llamadas HTTP salientes en Java, importe la X-RaySDK for Java versión de HttpClientBuilder en lugar de la versión de Apache.org.

    • Cambios – funcionales: añada un controlador de solicitudes a un cliente AWS del SDK para instrumentarlas llamadas que realiza a los AWS servicios de . Cree subsegmentos para agrupar las llamadasposteriores y añadir información de depuración a los segmentos que tengan anotaciones y metadatos.

    7

  • AWS X-Ray Guía para desarrolladores

    Introducción a AWS X-RayPara comenzar a utilizar AWS X-Ray, inicie una aplicación de ejemplo en Elastic Beanstalk que ya hayasido instrumentada (p. 231) para generar datos de rastreo. En unos minutos, puede iniciar la aplicaciónde ejemplo, generar tráfico, enviar segmentos a X-Ray y ver un gráfico de servicios y los rastros en laConsola de administración de AWS.

    En este tutorial, se utiliza una aplicación Java de ejemplo (p. 137) para generar segmentos y enviarlosa X-Ray. La aplicación utiliza el marco de Spring para implementar una API web de formato JSON yAWS SDK for Java para mantener los datos en Amazon DynamoDB. Un filtro de servlet en la aplicacióninstrumenta todas las solicitudes entrantes que atiende la aplicación, y un controlador de solicitudes en elcliente AWS del SDK instrumenta las llamadas posteriores a DynamoDB.

    Utiliza la consola de X-Ray para ver las conexiones entre cliente, el servidor y DynamoDB en un mapa deservicio. El mapa de servicio es una representación visual de los servicios que componen su aplicaciónweb y el cual se genera a partir de los datos de rastreo que genera al atender solicitudes.

    8

  • AWS X-Ray Guía para desarrolladoresPrerequisites

    Con el X-Ray SDK for Java, puede rastrear todos los AWS recursos principales y posteriores de laaplicación realizando dos cambios de configuración:

    • Agregue el filtro de rastreo del X-Ray SDK for Java a la configuración del servlet en una claseWebConfig o en un archivo web.xml.

    • Utilice los submódulos del X-Ray SDK for Java como dependencias de compilación en la configuraciónde compilación de Maven o Gradle.

    También puede tener acceso al mapa de servicios sin procesar y a los datos de seguimiento utilizando laAWS CLI para llamar a la API de X-Ray. El mapa de servicio y los datos de rastreo son archivos JSON quepuede consultar para asegurarse de que la aplicación envíe datos o para corroborar campos específicoscomo parte de la automatización de pruebas.

    Secciones• Prerequisites (p. 9)• Implementar en Elastic Beanstalk y generar datos de seguimiento (p. 10)• Consultar el mapa de servicios en la consola de X-Ray (p. 11)• Configuración de notificaciones de Amazon SNS (p. 13)• Explorar la aplicación de ejemplo (p. 15)• Opcional: política de privilegios mínimos (p. 18)• Eliminar recursos (p. 20)• Pasos siguientes (p. 20)

    PrerequisitesEn este tutorial, se utiliza Elastic Beanstalk para crear y configurar los recursos que ejecutan la aplicaciónde ejemplo y el demonio de X-Ray. Si utiliza un usuario de IAM con permisos limitados, añada la políticade usuario administrada de Elastic Beanstalk para que dicho usuario pueda utilizar Elastic Beanstalk y la

    9

    https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.iam.managed-policies.htmlhttps://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.iam.managed-policies.html

  • AWS X-Ray Guía para desarrolladoresImplementar en Elastic Beanstalky generar datos de seguimiento

    política administrada AWSXrayReadOnlyAccess para conceder permisos para leer el mapa de servicios ylos rastros en la consola de X-Ray.

    Crear un entorno de Elastic Beanstalk para la aplicación de ejemplo. Si no ha utilizado Elastic Beanstalkpreviamente, al crear el entorno, también se creará un rol de servicio y un perfil de instancia para suaplicación. Debe existir una VPC predeterminada en la región en la que va a realizar la implementación oElastic Beanstalk producirá un error al implementar la aplicación de ejemplo.

    Para crear un entorno de Elastic Beanstalk, realice los siguientes pasos:

    1. Abra la consola de administración de Elastic Beanstalk con el enlacepreconfigurado https://console.aws.amazon.com/elasticbeanstalk/#/newApplication?applicationName=scorekeep&solutionStackName=Java

    2. Seleccione Create application (Crear aplicación) para crear una aplicación con un entorno que ejecutela plataforma Java 8 SE.

    3. Cuando el entorno esté listo, la consola lo redirigirá al entorno de tablero.4. Haga clic en el URL en la parte superior de la página para abrir el sitio.

    Las instancias en su entorno necesitan permiso para enviar datos al servicio de AWS X-Ray. Además, laaplicación de ejemplo utiliza Amazon S3 y DynamoDB. Modifique el perfil de instancia predeterminado deElastic Beanstalk con el fin de incluir los permisos necesarios para utilizar estos servicios.

    Para añadir permisos de X-Ray, Amazon S3 y DynamoDB a su entorno de Elastic Beanstalk

    1. Abra el perfil de instancia de Elastic Beanstalk en la consola de IAM: aws-elasticbeanstalk-ec2-role.2. Seleccione Attach Policies (Asociar políticas).3. Asocie AWSXrayFullAccess , AmazonS3FullAccess y AmazonDynamoDBFullAccess al rol.

    Note

    Las políticas de acceso completo no son una práctica recomendada de uso general. Paraobtener instrucciones sobre cómo configurar una política de privilegios mínimos para reducirlos riesgos de seguridad, consulte Opcional: política de privilegios mínimos (p. 18).

    Implementar en Elastic Beanstalk y generar datosde seguimiento

    Implemente la aplicación de ejemplo en su entorno de Elastic Beanstalk. La aplicación de ejemplo utilizalos archivos de configuración de Elastic Beanstalk para configurar el uso de X-Ray en el entorno y crear laDynamoDB que usa de forma automática.

    Para implementar el código fuente, realice los siguientes pasos:

    1. Descargue la aplicación de ejemplo: eb-java-scorekeep-xray-gettingstarted-v1.3.zip2. Open the Elastic Beanstalk console.3. Navigate to the management console for your environment.4. Elija Upload and Deploy (Cargar e implementar).5. Cargue eb-java-scorekeep-xray-gettingstarted-v1.3.zip y elija después Deploy (Implementar).

    La aplicación de ejemplo incluye una aplicación web front-end. Utilice la aplicación web para generar tráficoa la API y enviar los datos de rastreo a X-Ray.

    10

    https://console.aws.amazon.com/elasticbeanstalk/#/newApplication?applicationName=scorekeep&solutionStackName=Javahttps://console.aws.amazon.com/elasticbeanstalk/#/newApplication?applicationName=scorekeep&solutionStackName=Javahttps://console.aws.amazon.com/iam/home#roles/aws-elasticbeanstalk-ec2-rolehttps://github.com/awslabs/eb-java-scorekeep/releases/download/xray-gs-v1.3/eb-java-scorekeep-xray-gettingstarted-v1.3.ziphttps://console.aws.amazon.com/elasticbeanstalkhttps://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-console.html

  • AWS X-Ray Guía para desarrolladoresConsultar el mapa de servicios en la consola de X-Ray

    Para generar datos de rastreo, realice los siguientes pasos:

    1. En el entorno de tablero, haga clic en el URL para abrir la aplicación web.2. Elija Create (Crear) para crear un usuario y una sesión.3. Escriba un nombre de juego, establezca Rules en Tic Tac Toe y, a continuación, elija Create para

    crear un juego.4. Seleccione Play (Jugar) para comenzar el juego.5. Elija una ficha para hacer un movimiento y cambiar el estado del juego.

    Cada uno de estos pasos genera solicitudes HTTP a la API y llamadas posteriores a DynamoDB para leery escribir el usuario, la sesión, el juego, la movida y los datos de estado.

    Consultar el mapa de servicios en la consola de X-Ray

    Puede ver el mapa de servicios y los rastros que ha generado la aplicación de ejemplo en la consola de X-Ray.

    Para utilizar la consola de X-Ray

    1. Abra la página del mapa de serviciosX-Ray de la consola de .2. La consola muestra una representación del gráfico de servicios que X-Ray genera a partir de los datos

    de rastreo que envía la aplicación.

    El mapa de servicio muestra el cliente de la aplicación web, la API que se ejecuta en Elastic Beanstalk, elservicio de DynamoDB y cada tabla de DynamoDB que la aplicación utiliza. Cada solicitud que se envíaa la aplicación, hasta una cantidad máxima configurable de solicitudes por segundo, se rastrea hasta quellega a la API, genera solicitudes para los servicios posteriores y se completa.

    11

    https://console.aws.amazon.com/xray/home#/service-map?timeRange=PT1H

  • AWS X-Ray Guía para desarrolladoresConsultar el mapa de servicios en la consola de X-Ray

    Puede elegir cualquier nodo en el gráfico de servicios para ver los rastros de las solicitudes que generarontráfico hacia ese nodo. El nodo Amazon SNS está en rojo. Profundice para saber por qué.

    Para encontrar la causa del error

    1. Seleccione el nodo denominado SNS. El Service details panel (Panel Detalles de servicio) se abre a laderecha.

    2. Elija View traces (Ver rastreos) para acceder a la pantalla Trace overview (Información general derastreo).

    3. Seleccione el rastro en Trace list (Lista de rastros). Este rastro no tiene método ni URL porque seregistró durante el inicio y no en respuesta a una solicitud de entrada.

    4. Seleccione el icono de estado rojo para abrir la página Exceptions (Excepciones) del subsegmento deSNS.

    5. El SDK de X-Ray captura automáticamente las excepciones producidas por clientes del SDK de AWSinstrumentados y registra el seguimiento de la pila.

    12

  • AWS X-Ray Guía para desarrolladoresConfiguración de notificaciones de Amazon SNS

    La causa indica que la dirección de correo electrónico proporcionada en una llamada acreateSubscription realizada en la clase WebConfig no era válida. Solucionemos el problema.

    Configuración de notificaciones de Amazon SNSScorekeep utiliza Amazon SNS para enviar notificaciones cuando los usuarios completan un juego.Cuando la aplicación se inicia, intenta crear una suscripción para una dirección de correo electrónicodefinida en una variable de entorno. Esa llamada está fallando y por eso el nodo de Amazon SNS delmapa de servicios está en rojo. Configure un correo electrónico de notificación en una variable de entornopara habilitar las notificaciones y cambiar el estado del mapa de servicios a verde.

    Para configurar notificaciones de Amazon SNS para scorekeep

    1. Open the Elastic Beanstalk console.2. Navigate to the management console for your environment.3. Choose Configuration.4. Elija Software Configuration (Configuración de software).5. En Environment Properties (Propiedades de entorno), sustituya el valor predeterminado por su

    dirección de correo electrónico.

    13

    https://console.aws.amazon.com/elasticbeanstalkhttps://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environments-console.html

  • AWS X-Ray Guía para desarrolladoresConfiguración de notificaciones de Amazon SNS

    Note

    El valor predeterminado utiliza una AWS CloudFormationfunción de para recuperar unparámetro guardado en un archivo de configuración (un valor ficticio, en este caso).

    6. Seleccione Apply.

    Cuando se completa la actualización, Scorekeep se reinicia y crea una suscripción al tema de SNS.Compruebe su correo electrónico y confirme la suscripción para ver las actualizaciones cuando completeun juego.

    14

    https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions-functions.html

  • AWS X-Ray Guía para desarrolladoresExplorar la aplicación de ejemplo

    Explorar la aplicación de ejemploLa aplicación de ejemplo es una API web HTTP en Java que está configurada para utilizar el X-Ray SDKfor Java. Al implementar la aplicación Elastic Beanstalk, crea las tablas de DynamoDB, compila la API conGradle y configura el servidor proxy nginx para atender a la aplicación web de forma estática en la ruta deacceso raíz. Al mismo tiempo, Elastic Beanstalk enruta las solicitudes a las rutas que comienzan con /apia la API.

    Para instrumentar las solicitudes de HTTP entrantes, la aplicación añade el TracingFilter queproporciona el SDK.

    Example src/main/java/scorekeep/WebConfig.java: filtro de servlet

    import javax.servlet.Filter;import com.amazonaws.xray.javax.servlet.AWSXRayServletFilter;...

    @Configurationpublic class WebConfig {

    @Bean public Filter TracingFilter() { return new AWSXRayServletFilter("Scorekeep"); }...

    Este filtro envía datos de rastreo sobre todas las solicitudes entrantes que la aplicación atiende, incluidos elURL, el método, el estado de la respuesta, la hora de inicio y la hora de finalización de la solicitud.

    15

    https://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/javax/servlet/AWSXRayServletFilter.html

  • AWS X-Ray Guía para desarrolladoresExplorar la aplicación de ejemplo

    La aplicación también realiza llamadas posteriores a DynamoDB mediante AWS SDK for Java. Parainstrumentar estas llamadas, la aplicación simplemente usa los submódulos relacionados con el SDK deAWS como dependencias y el X-Ray SDK for Java instrumenta de forma automática todos los clientes delSDK de AWS.

    La aplicación utiliza un Buildfile archivo para compilar el código fuente de la instancia con Gradle yun Procfile archivo para ejecutar el archivo ejecutable JAR que Gradle genera. La admisión de archivosBuildfile y Procfile es una característica de la plataforma Elastic Beanstalk Java SE.

    Example Buildfile

    build: gradle build

    Example Procfile

    web: java -Dserver.port=5000 -jar build/libs/scorekeep-api-1.0.0.jar

    El archivo build.gradle descarga todos los submódulos del SDK de Maven durante la compilacióndeclarándolos como dependencias.

    Example build.gradle: dependencias

    ...dependencies { compile("org.springframework.boot:spring-boot-starter-web") testCompile('org.springframework.boot:spring-boot-starter-test') compile('com.amazonaws:aws-java-sdk-dynamodb') compile("com.amazonaws:aws-xray-recorder-sdk-core") compile("com.amazonaws:aws-xray-recorder-sdk-aws-sdk") compile("com.amazonaws:aws-xray-recorder-sdk-aws-sdk-instrumentor") ...}dependencyManagement { imports { mavenBom("com.amazonaws:aws-java-sdk-bom:1.11.67") mavenBom("com.amazonaws:aws-xray-recorder-sdk-bom:2.4.0") }}

    16

    https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-platform.html

  • AWS X-Ray Guía para desarrolladoresExplorar la aplicación de ejemplo

    El núcleo, el SDK de AWS y los submódulos Instrumentor del SDK de AWS son los únicos requisitos parainstrumentar de forma automática cualquier llamada posterior realizada con el SDK de AWS.

    Para ejecutar el demonio de X-Ray, la aplicación utiliza otra característica de Elastic Beanstalk: losarchivos de configuración. El archivo de configuración indica a Elastic Beanstalk que ejecute el demonio yenvíe el log a petición.

    Example .ebextensions/xray.config

    option_settings: aws:elasticbeanstalk:xray: XRayEnabled: true

    files: "/opt/elasticbeanstalk/tasks/taillogs.d/xray-daemon.conf" : mode: "000644" owner: root group: root content: | /var/log/xray/xray.log

    El X-Ray SDK for Java proporciona una clase denominada AWSXRay que proporciona una grabadoraglobal, un TracingHandler que se puede utilizar para instrumentar el código. Puede configurar lagrabadora global para que personalice el AWSXRayServletFilter que crea los segmentos para lasllamadas HTTP entrantes. La muestra incluye un bloque estático en la clase WebConfig que configura lagrabadora global con complementos y reglas de muestreo.

    Example src/main/java/scorekeep/WebConfig.java: grabadora

    import com.amazonaws.xray.AWSXRay;import com.amazonaws.xray.AWSXRayRecorderBuilder;import com.amazonaws.xray.plugins.EC2Plugin;import com.amazonaws.xray.plugins.ElasticBeanstalkPlugin;import com.amazonaws.xray.strategy.sampling.LocalizedSamplingStrategy;

    @Configurationpublic class WebConfig {... static { AWSXRayRecorderBuilder builder = AWSXRayRecorderBuilder.standard().withPlugin(new EC2Plugin()).withPlugin(new ElasticBeanstalkPlugin());

    URL ruleFile = WebConfig.class.getResource("/sampling-rules.json"); builder.withSamplingStrategy(new LocalizedSamplingStrategy(ruleFile));

    AWSXRay.setGlobalRecorder(builder.build()); }}

    En este ejemplo se utiliza el compilador para cargar las reglas de muestreo desde un archivo denominadosampling-rules.json. Las reglas de muestreo determinan la velocidad a la que el SDK registra lossegmentos de las solicitudes entrantes.

    Example src/main/java/resources/sampling-rules.json

    { "version": 1, "rules": [ { "description": "Resource creation.", "service_name": "*",

    17

    https://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/AWSXRay.htmlhttps://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/AWSXRayRecorderBuilder.htmlhttps://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/plugins/EC2Plugin.htmlhttps://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/plugins/ElasticBeanstalkPlugin.htmlhttps://docs.aws.amazon.com/xray-sdk-for-java/latest/javadoc/com/amazonaws/xray/strategy/sampling/LocalizedSamplingStrategy.html

  • AWS X-Ray Guía para desarrolladoresOpcional: política de privilegios mínimos

    "http_method": "POST", "url_path": "/api/*", "fixed_target": 1, "rate": 1.0 }, { "description": "Session polling.", "service_name": "*", "http_method": "GET", "url_path": "/api/session/*", "fixed_target": 0, "rate": 0.05 }, { "description": "Game polling.", "service_name": "*", "http_method": "GET", "url_path": "/api/game/*/*", "fixed_target": 0, "rate": 0.05 }, { "description": "State polling.", "service_name": "*", "http_method": "GET", "url_path": "/api/state/*/*/*", "fixed_target": 0, "rate": 0.05 } ], "default": { "fixed_target": 1, "rate": 0.1 }}

    El archivo de reglas de muestreo define cuatro reglas de muestreo personalizadas y la reglapredeterminada. Para cada solicitud de entrada, el SDK evalúa las reglas personalizadas en el orden enque están definidas. El SDK aplica la primera regla que coincide con el método, la ruta y el nombre deservicio de la solicitud. Para Scorekeep, la primera regla captura todas las solicitudes POST (llamadas decreación de recursos) aplicando un objetivo fijo de una solicitud por segundo y una tasa del 1,0, es decir, el100 % de las solicitudes después de cumplir el objetivo fijo.

    Las otras tres reglas personalizadas aplican una tasa del 5 % sin objetivo fijo a las lecturas de sesiones,juegos y estado (solicitudes GET). De este modo se reduce al mínimo el número de rastros de lasllamadas periódicas que el front-end realiza automáticamente cada pocos segundos para asegurarsede que el contenido está actualizado. Para el resto de solicitudes, el archivo define una velocidadpredeterminada de una solicitud por segundo y una tasa del 10 %.

    La aplicación de ejemplo también muestra cómo usar funciones avanzadas, como la instrumentaciónmanual de clientes SDK, la creación de subsegmentos adicionales y llamadas HTTP salientes. Paraobtener más información, consulte AWS X-RayAplicación de muestra de (p. 137).

    Opcional: política de privilegios mínimosAcaba de implementar este tutorial utilizando las políticas de seguridad AmazonS3FullAccess yAmazonDynamoDBFullAccess. El uso de una política de acceso completo no es la práctica recomendadaa largo plazo. Para mejorar la seguridad de lo que implementó, siga estos pasos para actualizar lospermisos. Para obtener más información sobre las prácticas recomendadas de seguridad en IAM laspolíticas de , consulte Identity and Access Management for AWS X-Ray.

    18

    https://docs.aws.amazon.com/xray/latest/devguide/security-iam.html

  • AWS X-Ray Guía para desarrolladoresOpcional: política de privilegios mínimos

    Para actualizar las políticas, primero identifique los ARN de sus recursos de Amazon S3 y DynamoDB. Acontinuación, utilice los ARN en dos políticas de IAM personalizadas. Por último, aplique esas políticas alperfil de instancia.

    Para identificar el recurso de Amazon S3

    1. Abra la página de recursos de la consola de AWS Config.2. En Resource type (Tipo de recurso), filtre por AWS S3 Bucket (Bucket de AWS S3) para buscar el

    ARN del bucket de Amazon S3 que utiliza la aplicación.3. En Resource identifier (Identificador de recursos), elija el identificador que está asociado a

    elasticbeanstalk.4. Registre su Amazon resource name (Nombre de recurso de Amazon) completo.5. Inserte el ARN en la siguiente política de IAM.

    Example

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ScorekeepS3", "Action": [ "s3:GetObject", "s3:PutObject" ], "Effect": "Allow", "Resource": "arn:aws:s3:::elasticbeanstalk-region-0987654321" } ]}

    Para identificar el recurso de DynamoDB

    1. Abra la página de recursos de la consola de AWS Config.2. En Resource type (Tipo de recurso), filtre por AWS DynamoDB Table (Tabla de DynamoDB) para

    encontrar el ARN de las DynamoDB tablas que utiliza su aplicación.3. En Resource identifier (Identificador de recurso), elija el identificador asociado a una de las tablas

    scorekeep.4. Registre su Amazon resource name (Nombre de recurso de Amazon) completo.5. Inserte el ARN en la siguiente política de IAM.

    Example

    { "Version": "2012-10-17", "Statement": [ { "Sid": "ScorekeepDynamoDB", "Effect": "Allow", "Action": [ "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:GetItem" ], "Resource": "arn:aws:dynamodb:region:1234567890:table/scorekeep-*" }

    19

    https://console.aws.amazon.com/config/home#/resourceshttps://console.aws.amazon.com/config/home#/resources

  • AWS X-Ray Guía para desarrolladoresEliminar recursos

    ]}

    Las tablas que crea la aplicación siguen una convención de nomenclatura coherente. Puede utilizar elformato de scorekeep-* para indicar todas las tablas que siguen esa convención.

    Para cambiar la política de IAM

    1. Abra el perfil de instancia de Elastic Beanstalk en la consola de IAM: aws-elasticbeanstalk-ec2-role.2. Elimine las políticas AmazonS3FullAccess y AmazonDynamoDBFullAccess del rol.3. Elija Attach policies (Asociar políticas) y, a continuación, Create policy (Crear p