Observabilidad en la Nube de AWS: Explorando CloudWatch, X-Ray y CloudTrail
Tags: monitoring, cloud, aws, applications
Published: 2024-03-08 04:53:31

Recientemente, tuve la oportunidad de presentar una charla sobre observabilidad de aplicaciones en la nube, centrándome específicamente en herramientas nativas de AWS como [Amazon CloudWatch](https://aws.amazon.com/es/cloudwatch/), [AWS X-Ray](https://aws.amazon.com/es/xray/) y [AWS CloudTrail](https://aws.amazon.com/es/cloudtrail/). En este artículo, te comparto cómo estas herramientas ofrecen una visión profunda y completa del rendimiento y la salud de nuestras aplicaciones en la nube.

## Qué es la observabilidad en el contexto de la nube?

La observabilidad en la nube se refiere a la capacidad de comprender y supervisar el comportamiento de las aplicaciones y sistemas. Implica recopilar datos y métricas significativas de diversos recursos en tiempo real. Estos datos pueden incluir información sobre la utilización de los recursos, el rendimiento de la red, los errores en las aplicaciones y otros aspectos críticos del sistema.

Los tres pilares principales de la observabilidad son:

- Métricas: Datos cuantificables que representan el rendimiento y el funcionamiento del sistema.

- Trazas: Información detallada sobre cómo fluye una solicitud a través de varios componentes del sistema. 

- Registros (Logs): Registro de eventos y actividades que ocurren en el sistema.

Algunas de las herramientas clave utilizadas para lograr la observabilidad en la nube de Amazon Web Services (AWS), incluyen CloudWatch, CloudTrail y X-Ray. Estas herramientas ofrecen capacidades de monitoreo, registro y seguimiento que permiten a los equipos entender el comportamiento de las aplicaciones, diagnosticar problemas, establecer alarmas y mejorar continuamente el rendimiento.


## CloudWatch: Monitoreo y optimización de recursos ![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o12suh33tmqkutjp35gm.png)

Comencemos nuestra exploración con CloudWatch, un servicio 
fundamental que proporciona visibilidad completa de los recursos y aplicaciones en la nube. 
Con CloudWatch, podemos recopilar métricas y registros de nuestros recursos, lo que nos permite analizar y monitorear constantemente el estado de nuestras aplicaciones.

CloudWatch también facilita la creación de paneles de control personalizados para monitorizar continuamente el estado de nuestras aplicaciones e infraestructuras. 
De esta forma puedes personalizar fácilmente las métricas e información clave mediante la creación de widgets en el panel de control. Por ejemplo, podrías optar por visualizar la información mediante un tipo de gráfico específico y elegir la fuente de datos, ya sea una métrica que hayas creado previamente o información de logs generados por una función Lambda. 

Esto nos permitirá construir dashboards informativos y visuales, utilizando una diversidad de gráficos para representar datos sobre la aplicación.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aay3kk5ihyyhaxxswp7u.png) Imagen: Cloudwatch Dashboard




Además, CloudWatch ofrece la capacidad de configurar alarmas para automatizar respuestas a cambios operativos y establecer alertas para ciertos umbrales.
Por ejemplo, podemos configurar una alarma para escalar automáticamente las instancias EC2 si la carga de la CPU alcanza niveles críticos. Otro ejemplo, sería configurar una alarma para cuando una Lambda empiece a responder más de 50 solicitudes por segundo durante un minuto consecutivo, de manera que recibas una notificación cuando se alcance este límite.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m4zpojie98v9tyvpqu8a.png) Imagen: Cloudwatch Alarms




Otra característica valiosa de CloudWatch es Live Tail, que consiste un visor que permite monitorear en tiempo real los logs generados por tus aplicaciones. Esto facilita la detección y solución de problemas de manera más eficiente.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fdnncj2e5sjsdwh1vyln.png) Imagen: Cloudwatch Logs Live Tail


Tampoco podemos dejar de mencionar la capacidad de realizar consultas con CloudWatch Logs Insights. Esto nos permite ejecutar consultas (querys) sobre los registros y filtrar eventos específicos para un análisis más detallado. 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pb6bgeiqerkgsiehyawt.png)Imagen: Cloudwatch Logs Insights





También podemos sumar Amazon EventBridge, anteriormente conocido como CloudWatch Events, que emerge como una solución poderosa para orquestar eventos y automatizar respuestas. Con Eventbridge, puedes crear reglas personalizadas para reaccionar a eventos específicos y ejecutar acciones, como alertas o modificaciones en la configuración de tu aplicación. Por ejemplo, puedes integrar EventBridge con CloudWatch logs y configurar reglas para enviar notificaciones por correo electrónico o ejecutar funciones Lambda en respuesta ante ciertos eventos, como la detección de vulnerabilidades de seguridad.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s9ia0zrao7pgvllzkky0.png) Imagen: Amazon Eventbridge Rules



Todas estas características son esenciales para lograr una eficiencia operativa mediante la automatización y la optimización de recursos, identificando posibles cuellos de botellas y asegurando un rendimiento óptimo de nuestras aplicaciones.

## X-Ray: Análisis de aplicaciones modernas 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hulcjm7gc6ohi7mzillf.png)



Con AWS X-Ray, podemos ampliar aún más nuestras capacidades de observabilidad. X-Ray se encuentra integrada dentro de Amazon Cloudwatch y está diseñada para analizar aplicaciones modernas, especialmente aquellas basadas en microservicios. X-Ray proporciona un mapa de servicio para visualizar y entender cómo interactúan los componentes de una aplicación. Puedes analizar rastros de solicitudes, identificar cuellos de botella y optimizar el rendimiento general.

Con la capacidad de recopilar trazas y crear mapas de servicios, X-Ray ofrece una visión completa de cómo nuestra aplicación está conectada con otros servicios y componentes. Esto es invaluable para comprender la topología de nuestra aplicación y facilita la resolución de problemas al proporcionar una visión clara de la causa raíz.



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xkyta5v3ddt9e0ohxdnn.png) Imagen: X-Ray Trace Map



## CloudTrail: Visibilidad y Seguridad 
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kjp0bcciqbx0c9az8i2v.png)



Ahora, centrémonos en CloudTrail. Este servicio proporciona registros detallados de las acciones realizadas en las cuentas de AWS. Aunque CloudTrail no se considera propiamente una herramienta de observabilidad, es esencial para la seguridad y auditoría, permitiéndote rastrear cambios, identificar posibles problemas y mantener un historial detallado de las actividades. 


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/05gtxbluts667m3ur8ap.png) Imagen: CloudTrail Event history



La integración de CloudTrail con CloudWatch Logs amplía sus capacidades, permitiendo consultas y análisis más avanzados de los datos recopilados. Además, CloudTrail nos ofrece una visión centralizada de lo que está sucediendo en nuestras cuentas, ayudando a identificar actividades inusuales y mejorar la seguridad operativa.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9v3yofh3sfjmtpk6w8an.png) Imagen: CloudTrail Create trail



## Conclusiones


En resumen, estas herramientas de observabilidad en AWS ofrecen una combinación poderosa para monitorear nuestras aplicaciones. Desde la visualización de métricas, hasta la identificación de problemas y la respuesta automática a cambios operativos, CloudWatch, X-Ray y CloudTrail son aliados esenciales en la gestión efectiva de aplicaciones en la nube.

Te comparto el video de la charla de observabilidad que compartí para el grupo de estudio de NexaScale de Nigeria, como parte del AWS Expedition challenge, donde exploré de forma práctica cada una de estas herramientas, destacando cómo se pueden aprovechar al máximo para mejorar la operatividad y seguridad de nuestras aplicaciones en la nube. PD: La sesión está en inglés.


{% embed https://youtu.be/i5a20S26tiQ?si=uG2cLQMsv76X7NG2 %}