¿Cómo puedo solucionar los problemas relacionados con la ausencia de rastreos, segmentos o servicios de X-Ray en el mapa de servicios?

10 minutos de lectura
0

Quiero solucionar los problemas por la ausencia de rastreos, segmentos y servicios de AWS X-Ray en el mapa de servicios.

Breve descripción

La ausencia de rastreos da lugar a la ausencia de servicios en el mapa de servicios. La ausencia de rastreos puede deberse a las siguientes causas:

  • La instrumentación es incorrecta.
  • El SDK de X-Ray no puede alcanzar el daemon de X-Ray a través de la dirección del daemon o el número de puerto.
  • El daemon de X-Ray no puede alcanzar el punto de conexión del servicio X-Ray.
  • El rastreo no se ha configurado en el nivel de servicio individual.
  • Faltan permisos de AWS Identity y Access Management (IAM).
  • La configuración de las reglas de muestreo.
  • La configuración en el recopilador de OpenTelemetry está incompleta.

La ausencia de segmentos principales abiertos para los segmentos subordinados puede dar lugar a la ausencia de segmentos. Para obtener más información, consulte Troubleshooting AWS X-Ray.

Solución

La instrumentación es incorrecta.

Instrumentación incorrecta cuando se utiliza el SDK de X-Ray

Si su código de aplicación no está instrumentado correctamente para que el SDK de X-Ray pueda aplicar parches a las bibliotecas y marcos compatibles, puede que falten rastreos. La ausencia de rastreos también puede deberse a que los identificadores de rastreo no se transfieren a los servicios posteriores.

Para solucionar este problema, active el registro de nivel de depuración en el SDK con el fin de obtener registros más detallados en su archivo de registros de la aplicación. Esto le permite aislar aún más los problemas relacionados con la instrumentación y rastrear el flujo del ID de rastreo en toda la aplicación. Los registros también indican si falta un rastreo porque no se ha incluido en el muestreo o porque la instrumentación está mal configurada. Para obtener más información, consulte el registro de depuración en el SDK de X-Ray para Java, Node.js, Python, .NET o Ruby.

Nota: Si la aplicación utiliza un agente de instrumentación automática para Java, no capturará los rastreos de las solicitudes asíncronas y faltarán rastreos. Si le faltan rastreos, utilice la instrumentación manual. Si al SDK de X-Ray le faltan algunas características o tiene problemas, compruebe el agente de instrumentación automática para Java en el SDK de OpenTelemetry.

Instrumentación incorrecta cuando se utiliza el SDK de OpenTelemetry

Si utiliza el SDK de OpenTelemetry y el código de la aplicación no está instrumentado correctamente para aplicar parches a las bibliotecas y marcos compatibles, puede que falten rastreos en el código. Los identificadores de rastreos no transferidos a los servicios posteriores también pueden hacer que falten segmentos.

Para solucionar este problema, tome estas medidas:

  • Active el registro de nivel de depuración en el SDK para enviar registros más detallados al archivo de registros de la aplicación. Esto le permite aislar aún más los problemas relacionados con la instrumentación y rastrear el flujo del ID de rastreo en toda la aplicación. Los registros indican si la ausencia de un rastreo se debe a que no se ha incluido en el muestreo o a que la instrumentación está mal configurada. Para obtener más información, consulte el registro de depuración en el SDK de X-Ray para Java, Node.js, Python, .NET o Ruby.
  • Asegúrese de que la instrumentación no esté desactivada. Para obtener más información, consulte Suppressing specific auto-instrumentation en el sitio web de OpenTelemetry.

Nota: Para enriquecer los rastreos con información de la infraestructura de AWS, asegúrese de que el detector de recursos de AWS sea compatible con el servicio de AWS en el SDK de OpenTelemetry. Para obtener más información, consulte Using the AWS resource detectors.

El SDK de X-Ray no puede alcanzar el daemon de X-Ray a través de la dirección del daemon o el número de puerto.

Si el SDK de X-Ray no puede acceder al daemon de X-Ray a través de la dirección y el número de puerto del daemon predeterminados o configurados, faltarán rastreos en el SDK. La dirección del daemon de X-Ray se transfiere al SDK con la variable de entorno AWS_XRAY_DAEMON_ADDRESS. De forma predeterminada, el daemon de X-ray escucha en el puerto 2000 UDP. Este puerto se puede cambiar mediante la opción de la línea de comandos y el archivo de configuración transferido al daemon de X-ray. Para obtener más información, consulte Using a configuration file.

Si ejecuta el daemon de X-Ray con registros de depuración, ejecute el siguiente comando para identificar el puerto UDP configurado para el daemon de X-Ray:

./xray -l debug

Nota: En el ejemplo siguiente se identifica 3000 como número de puerto.

Resultado del ejemplo:

2023-03-28T15:15:43-07:00 \[Debug\] Listening on UDP 127.0.0.1:3000

Si no ejecuta el daemon de X-Ray con registros de depuración, active la opción de depuración de registros y vuelva a ejecutar el daemon. Para obtener más información, consulte Using a configuration file.

Nota: Si el daemon de X-Ray no se ejecuta en la misma máquina que la aplicación y el SDK de X-Ray, compruebe la regla entrante y la regla de entrada. Confirme que la regla entrante del grupo de seguridad y la regla de entrada de la lista de control de acceso de la red (ACL de la red) permitan el tráfico. Se debe permitir el tráfico para el SDK de X-Ray a través del puerto del agente de escucha del daemon de X-Ray.

El daemon de X-Ray no puede alcanzar el punto de conexión del servicio X-Ray.

Si su daemon de X-Ray no puede alcanzar el punto de conexión del servicio X-Ray, tome estas medidas:

  • Si tiene un proxy configurado en el extremo de origen, compruebe si el proxy impide que el tráfico llegue al punto de conexión del servicio X-Ray.
  • Si utiliza el punto de conexión com.amazonaws.region.xray de Amazon Virtual Private Cloud (Amazon VPC) de X-Ray para conectarse al servicio X-Ray, compruebe el grupo de seguridad asociado. Asegúrese de que el grupo de seguridad tenga tráfico saliente que permita que el tráfico HTTPS envíe datos a la API del servicio X-Ray. Además, cerciórese de que el grupo de seguridad permita el tráfico entrante en el puerto 443 para permitir el daemon de X-Ray.
  • Compruebe que la ACL de la red asociada y el punto de conexión de Amazon VPC de X-Ray tengan una regla de salida que permita el tráfico en el puerto 443 para cualquier parte de 0.0.0.0/0. El daemon de X-Ray debe enviar datos al punto de conexión del servicio X-Ray. Además, compruebe que la regla de entrada de la ACL de la red permita el tráfico desde el daemon de X-Ray hasta el punto de conexión de Amazon VPC.

El rastreo no se ha configurado en el nivel de servicio individual.

Si no ha activado la configuración de X-Ray para ciertos servicios de AWS, puede que falten rastreos. A continuación se muestra una lista de los servicios de AWS que requieren la activación de la configuración de X-Ray en el nivel de servicio:

Faltan permisos de IAM.

Confirme si cuenta con los permisos necesarios de IAM:

  • Si recibe errores de Acceso denegado en los registros del daemon de X-Ray, compruebe los permisos de IAM. Para enviar rastreos al punto de conexión del servicio X-Ray, el rol de IAM del daemon de X-Ray necesita los permisos en la política administrada AWSXRAYDaemonWriteAccess. Si utiliza una condición basada en etiquetas en su política de IAM, asegúrese de que la política de IAM haga referencia a la etiqueta correcta. Para obtener más información, consulte Authorization based on X-Ray tags.
  • Si el daemon de X-Ray se ejecuta en Amazon Elastic Container Service (Amazon ECS) como contenedor asociado en la tarea, compruebe el rol de la tarea de Amazon ECS. Asegúrese de que la política AWSXRayDaemonWriteAccess esté asociada al rol de la tarea de Amazon ECS.
  • Si el daemon de X-Ray está implementado en Amazon Elastic Kubernetes Services (Amazon EKS), compruebe el contenedor asociado en el pod. Asegúrese de que el contenedor utilice roles de IAM para cuentas de servicio (IRSA) y que el rol de IAM tenga asociada la política AWSXRayDaemonWriteAccess.
  • Si el daemon de X-ray está configurado en Amazon Elastic Compute Cloud (Amazon EC2), compruebe el perfil de instancia asociado. Asegúrese de que el rol de perfil de instancia asociado a esa instancia de EC2 tenga asociada la política AWSXRayDaemonWriteAccess.
  • Si el daemon de X-Ray está configurado en AWS Lambda, compruebe el rol de ejecución de Lambda. Confirme si el rol de ejecución de Lambda tiene la política AWSXRayDaemonWriteAccess. Asegúrese de que la política esté asociada.
  • Si tiene activado el rastreo activo en Amazon SNS y sigue sin poder ver sus rastreos, configure una política de recursos en X-Ray.

Nota: Para confirmar los permisos de X-Ray, utilice el simulador de política de IAM para probar el rol o la política de IAM asociados al recurso. Además, compruebe las políticas de control de servicios (SCP) de su organización. Las SCP restringen el acceso en el nivel de cuenta en el caso de determinadas llamadas a la API.

Para obtener una lista de las políticas administradas de IAM para X-Ray, consulte IAM managed policies for X-Ray.

La configuración de las reglas de muestreo.

Si el SDK de X-Ray y los servicios de AWS que admiten el rastreo activo con la configuración de muestreo no realizan el muestreo de rastreos, puede que falten rastreos. Utilice reglas de muestreo para determinar las solicitudes que se deben registrar. De forma predeterminada, el SDK de X-Ray registra la primera solicitud por cada segundo y el 5 % de las demás solicitudes. Puede cambiar la frecuencia de muestreo para reducir o aumentar el número de rastreos registrados.

Por ejemplo, supongamos que un depósito se ha configurado como 1. Esto indica que se registra la primera solicitud de cada segundo. También puede ser que se haya configurado una frecuencia de muestreo de 0,1. Esto indica que se registra el 10 % de las demás solicitudes de cada segundo.

Debido al límite en el número de solicitudes registradas por el SDK de X-Ray, es posible que no se rastreen todas las solicitudes. Para registrar más rastreos, aumente la configuración del depósito y de la frecuencia de muestreo. Para obtener más información, consulte Sampling rule examples.

Nota: Si ha configurado varias reglas de muestreo y el número de rastreos en el muestreo fluctúa, compruebe la regla de muestreo que utiliza el SDK de X-Ray. Para obtener más información, consulte Viewing sampling results.

La configuración en el recopilador de OpenTelemetry está incompleta.

Si utiliza el recopilador de OpenTelemetry en lugar del daemon de X-Ray, es posible que falte la configuración necesaria del receptor y el exportador. La falta de configuración hace que los rastreos no se envíen al punto de conexión del servicio X-Ray. Compruebe la configuración de su receptor en el archivo config.yaml para asegurarse de que no falte nada.

Consulte estos ejemplos de configuraciones en el sitio web de GitHub:

Nota: Asegúrese de que los permisos de IAM necesarios estén en la política administrada AWSXRayDaemonWriteAccess.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 7 meses