udistrital / autenticacion_mid

0 stars 0 forks source link

Prueba de funcionamiento Servicio AWS X-Ray #67

Closed a52290451 closed 1 year ago

a52290451 commented 1 year ago

Se requiere realizar una prueba de funcionamiento del servicio X-Ray de AWS sobre 2 APIs implementadas en GO, con el fin de comprobar que el servicio cumple con las condiciones minimas necesarias para monitoreo y conexiones entre APIs.

  1. El modulo debe mostrar en tiempo real el estado en que se encuentran todas las APIs de la OAS desplegadas en producción.
  2. Se requiere visualizar gráficamente las conexiones que existen entre APIs.

Especificaciones técnicas

Sub Tareas

Criterios de aceptación

Requerimientos

Dependencias

Definition of Ready - DoR

Definition of Done - DoD - Desarrollo

a52290451 commented 1 year ago

Se realiza solicitud de permisos para configuración de servicio X-Ray en AWS:

https://tuleap.portaloas.udistrital.edu.co/plugins/tracker/?aid=53664

a52290451 commented 1 year ago

Tomando como base el API cumplidos_dve_mid, se realiza la creación del archivo xray.go, cuyo objetivo es inicializar el SDK y proporcionar la configuración necesaria para monitorear todas las solicitudes entrantes por el puerto especificado:

image

Esta es la estructura base del archivo, la cual puede ser personalizada para monitorear segmentos específicos.

a52290451 commented 1 year ago

Se realiza solicitud de generación de clave publica y privada para conectar a AWS con mi cuenta personal, desde AWS CLI.

https://tuleap.portaloas.udistrital.edu.co/plugins/tracker/?aid=53664

Estas claves son necesarias para realizar pruebas en local del nuevo servicio AWS X-Ray, empleando un demonio.

a52290451 commented 1 year ago

Se realiza el desarrollo del código necesario para rastrear los segmentos y subsegmentos del API cumplidos_dve_mid, a nivel de controladores.

Para rastrear las solicitudes entrantes en una petición, se requiere incluir el siguiente codigo en cada una al interior de cada controlador:

image

De esta forma se inicializa el segmento a rastrear, se evalúa la respuesta del controlador y se cierra el segmento.

a52290451 commented 1 year ago

Se realiza actualización de archivo xray.go:

image image

De esta forma solo es necesario inicializar el servicio XRAY desde el archivo main.go y quedará listo para capturar trazos de acuerdo a los segmentos definidos.

a52290451 commented 1 year ago

Pruebas en ambiente local

Para realizar pruebas en ambiente local, se instalo un demonio de XRAY el cual queda activo en el puerto :2000. Este demonio reemplaza a AWS XRay recibiendo los trazos capturados cada vez que se hace una solicitud al API.

image

Como se observa en la imagen, se capturan correctamente los trazos asociados a los segmentos del API monitoreados.

a52290451 commented 1 year ago

Se realizan las siguientes mejoras de la implementación de X-Ray en ambiente local:

  1. Conexión, envío y captura de trazas desde la consola de monitoreo de X-RAY en AWS.

image

  1. Unificación de segmentos para constituir un único nodo por API y, de esta forma, que sea visible en el tablero de monitoreo de X-Ray en AWS.

image

  1. Adición de información complementaria para segmentos y subsegmentos monitoreados:

image image

  1. Captura de errores de ejecución y de respuesta en la consola de monitoreo de X-RAY en AWS.

image image image

  1. Configuración y envió de anotaciones y metadatos por segmentos y subsegmentos, a la consola de monitoreo de X-RAY en AWS.

image image

a52290451 commented 1 year ago

Observaciones:

  1. Se requiere acceso completo a servicio X-Ray, actualmente solo se tienen permisos para X-Ray al interior de CloudWatch
  2. Se requiere conocer la configuración utilizada en el Grupo de Registros de CloudWatch para hacer peticiones periódicamente al Healtcheck de cada API. Esta configuración debe incluirse para AWS X-Ray.
a52290451 commented 1 year ago

Como conclusión de este issue:

  1. se logra la captura de trazas por API, especificando las conexiones entrantes y salientes, así como los endpoints consumidos. Además, se dibuja cada conexión nueva utilizada por el API, para atender la petición, como un nuevo nodo en el mapa de servicios de AWS-XRAY:

image

  1. Se logra capturar el detalle de cada solicitud que llega al API, rastreando todas las peticiones. El detalle contiene información de los métodos utilizados, los endpoints consumidos y el código de respuesta recibido por cada una:

image image image

Todo el detalle mostrado corresponde a los segmentos capturados para una sola solicitud al API. Este nivel de detalle puede simplificarse si así se requiere.

  1. Se logra comprobar que, cuando una conexión falla, esta se ve reflejada automáticamente en el nodo correspondiente en el mapa de servicios en AWS-XRAY:

image

Queda pendiente lograr que las APIs que son consumidas desde el API que recibe la solicitud inicial, queden enlazadas en el mapa de servicios, con el nombre del API correspondiente. Actualmente esta conexión no se ha podido logra:

image

Como se observa, los nodos "cumplidos_dve_mid" y "cumplidos_dve_crud" salen desconectados gracias a que no se mantiene el ID de traza entre las dos APIs cuando una consume a la otra.

Además, se requiere simplificar la implementación de X-RAY en cada API. Actualmente es demasiado compleja para lograr su replica en otras APIs.