AWS CloudWatch es un servicio nativo del ecosistema de Amazon Cloud que registra y monitoriza todos los demás servicios de Amazon Cloud. Recopila y rastrea métricas o archivos de registro y establece alarmas para diversas actividades extraídas de ellos.

Puede obtener visibilidad de todo el sistema sobre el rendimiento de las aplicaciones, la utilización de los recursos y la salud operativa de los servicios. También puede utilizar AWS CloudWatch para detectar comportamientos anómalos en sus entornos, emprender acciones automatizadas, solucionar problemas y descubrir perspectivas a partir de los logs para tomar medidas que cambien su sistema u operaciones para mejor.

La supervisión de sus registros ayuda a detectar amenazas a la seguridad e identifica posibles vulnerabilidades. Mediante la supervisión de actividades sospechosas y comportamientos inusuales, puede responder a las actividades sospechosas y tomar medidas para prevenir futuros ataques.

Además, mantener los registros y monitorizar los sistemas es, en la mayoría de los casos, una actividad obligatoria por motivos de conformidad. Al utilizar AWS CloudWatch, estará cumpliendo estos requisitos.

Todos estos son beneficios directos que obtiene con la utilización de AWS CloudWatch. Así que vamos a ver cómo empezar con todo eso.

Configuración de AWS CloudWatch para su servicio

CloudWatch-Setup
Fuente: aws.amazon.com

La configuración puede ser sencilla y directa, o puede pasarse semanas afinando todos los aspectos o propiedades de su sistema de registro y monitorización y seguir sin terminar del todo (lo que básicamente se llama un proceso de mejora continua).

Pero en pocas palabras, así es como puede empezar:

  1. Suponiendo que ya dispone de una cuenta de AWS, habilite CloudWatch accediendo a la consola de CloudWatch y haciendo clic en el botón «Comenzar».
  2. Cree un grupo de logs para comenzar a recopilar los logs de su servicio. Un grupo de logs es una colección de flujos de logs que comparten la misma configuración de retención, monitorización y control de acceso. Puede crear un grupo de registros haciendo clic en el botón «Crear grupo de registros» de la consola de CloudWatch.
  3. Cree un flujo de registro para limitar los eventos de registro a la misma fuente (servicio). Puede crear un flujo de registro haciendo clic en el botón «Crear flujo de registro» de la consola de CloudWatch.
  4. Si su objetivo es recopilar registros de instancias EC2, instale el agente de CloudWatch. El agente es una pieza de software que se ejecuta en sus instancias y envía datos de registro a CloudWatch. Puede instalar el agente utilizando el administrador de sistemas de AWS o ejecutando un script en sus instancias.
  5. Cree un filtro de métricas para extraer métricas de sus registros basándose en un patrón de coincidencia definido. Puede crear un filtro de métricas haciendo clic en el botón «Crear filtro de métricas» de la consola de CloudWatch.
  6. Por último, recopile y visualice todos los datos extraídos en un solo lugar: cree un panel de control. Un panel de control es una colección de widgets que muestra las métricas y otros datos que usted coloque en él. Puede crear un panel de control haciendo clic en el botón «Crear panel de control» de la consola de CloudWatch.

Monitorización con AWS CloudWatch

Como ya se ha dicho, puede monitorizar cualquier servicio en Amazon Cloud utilizando AWS Cloudwatch. Para darle una idea más detallada de cómo puede ser dicha monitorización, a continuación le mostramos cómo hacerlo para los servicios de AWS más comunes que probablemente utilice en su sistema.

CloudWatch-Monitor
Fuente: docs.aws.amazon.com

Instancias EC2

Puede monitorizar las instancias EC2 recopilando métricas como la utilización de la CPU, el tráfico de red, el uso del disco y el uso de la memoria. También puede monitorizar el estado de sus instancias EC2 y recibir notificaciones cuando las instancias se detengan o finalicen.

Para monitorizar instancias EC2, instale el agente CloudWatch en sus instancias y configúrelo para que envíe métricas a CloudWatch. Como paso siguiente, puede crear alarmas para que le avisen cuando las métricas superen determinados umbrales.

Bases de datos RDS

Puede monitorizar las bases de datos de Amazon RDS recopilando métricas como la utilización de la CPU, el uso de la memoria o el uso del disco de la base de datos. También puede monitorizar el estado de las bases de datos y recibir notificaciones cuando éstas se detengan, se pongan en pausa o se terminen.

Para supervisar las bases de datos RDS, active la supervisión mejorada y configúrela para que envíe métricas a CloudWatch. Una vez más, puede crear alarmas para que le avisen cuando las métricas estén desactivadas.

Funciones Lambda

Puede monitorizar las funciones AWS Lambda recopilando métricas como el recuento de invocaciones lambda, la duración y la tasa de errores. También puede monitorizar el estado de sus funciones y recibir notificaciones cuando las funciones fallen.

Para monitorizar las funciones Lambda, debe habilitar CloudWatch Logs y configurar sus funciones para que envíen logs a CloudWatch. A continuación, puede crear filtros de métricas para extraer métricas de sus registros y tomar medidas basadas en la información extraída de los registros.

Elastic Load Balancers

La supervisión de los Elastic Load Balancers se realiza mediante la recopilación de métricas como el recuento de solicitudes, la latencia y los códigos de respuesta HTTP. También puede supervisar el estado de los equilibradores de carga y recibir notificaciones cuando fallen.

Para supervisar los equilibradores de carga, debe habilitar los registros de acceso y configurar sus equilibradores de carga para que envíen registros a CloudWatch. A continuación, puede crear filtros de métricas para extraer métricas de sus registros y crear alarmas siempre que las métricas estén fuera de su estado saludable definido.

Grupos de Autoescalado

Puede monitorizar los Grupos de Autoescalado recopilando el tamaño del grupo, la utilización de la CPU y el tráfico de red. También puede supervisar el estado de sus grupos y recibir notificaciones cuando los grupos aumenten o disminuyan de escala.

Para supervisar los Grupos de Autoescalado, debe habilitar la supervisión detallada y configurarla para que envíe métricas a CloudWatch. A continuación, puede crear alarmas para que le avisen cuando las métricas superen determinados umbrales.

Aplicaciones Elastic Beanstalk

Puede monitorizar las aplicaciones de AWS Elastic Beanstalk recopilando métricas como la utilización de la CPU y el recuento de solicitudes. También puede monitorizar el estado de sus aplicaciones y recibir notificaciones cuando las aplicaciones fallen.

Para monitorizar las aplicaciones de Elastic Beanstalk, debe habilitar los informes de estado mejorados y configurarlos para que envíen métricas a CloudWatch. A continuación, puede crear alarmas para que le avisen cuando las métricas estén fuera de los umbrales predefinidos.

Gestión de alarmas de CloudWatch

Existen alarmas de CloudWatch disponibles para las métricas clave y para cada servicio. Éstas pueden configurarse de antemano, siguiendo las mejores prácticas, y con su ayuda solucionar los problemas a medida que surjan.

Si gestiona eficazmente sus alarmas, recibirá alertas de problemas críticos y podrá tomar las medidas adecuadas para mantener la salud y el rendimiento de sus recursos y aplicaciones de AWS.

CloudWatch-Alarms
Fuente: aws.amazon.com

#1. Configuración de alarmas para una métrica

Para configurar alarmas, en primer lugar, seleccione la métrica que desea monitorizar. A continuación, cree una alarma basada en esa métrica especificando un valor umbral y un operador de comparación.

Por ejemplo, puede crear una alarma que se active cuando la utilización de la CPU supere el 80% durante más de 5 minutos. Una vez que haya creado una alarma, configure las acciones a realizar cuando se dispare la alarma. Por ejemplo, enviar un correo electrónico a una lista específica de destinatarios, enviar una notificación por SMS o incluso aumentar los recursos de su sistema.

#2. Configuración de las acciones de alarma

Al configurar las acciones de alarma, es posible elegir entre una variedad de opciones, incluyendo el envío de notificaciones a un tema SNS, la activación de una función AWS Lambda (que, a su vez, puede hacer lo que quiera que la función haga dentro de su script Python), detener o terminar una instancia EC2.

También puede configurar múltiples acciones para cada alarma y con ello, tomar diferentes acciones dependiendo de la gravedad de la alarma. Por ejemplo, enviar una notificación por correo electrónico para una alarma menor pero terminar una instancia para una alarma crítica.

#3. Mejores prácticas en materia de alarmas

Siempre es bueno seguir las mejores prácticas para garantizar que las alarmas sean eficaces y fiables. Algunas de las mejores prácticas incluyen:

  • Establecer umbrales apropiados basados en datos históricos,
  • utilizar múltiples métricas en paralelo para detectar problemas,
  • probar sus alarmas con regularidad para asegurarse de que funcionan correctamente.

Evite crear demasiadas alarmas, ya que esto puede provocar una fatiga de alertas, saturando el sistema de monitorización y dificultando la identificación real de los problemas realmente críticos.

Si experimenta problemas con las alarmas de CloudWatch, puede seguir varios pasos para solucionarlos:

  • Compruebe el historial de alarmas para ver si se realizó alguna acción cuando se activó la alarma.
  • Compruebe los datos métricos para ver si hay anomalías o picos que pudieran haber disparado la alarma.
  • Si los problemas persisten, puede intentar ajustar el umbral de alarma o añadir métricas adicionales a la alarma para mejorar su precisión.

Análisis y visualización de métricas con los cuadros de mando de CloudWatch

CloudWatch-Dashboard
Fuente: docs.aws.amazon.com

El análisis y la visualización de las métricas a través de los cuadros de mando le ofrecen una visión legible del estado y el rendimiento de sus recursos y aplicaciones de AWS. Los tableros de CloudWatch proporcionan una visión personalizable de sus métricas.

Puede colocar en ellos diversos cuadros, gráficos y otras visualizaciones que muestren las tendencias a lo largo del tiempo y destaquen cualquier problema que pueda tener el sistema. El objetivo final es poder abstraerse de los datos de los archivos de registro y disponer de la información importante en un formato mucho más legible y fácil de usar para cualquiera que desee comprobar y supervisar el estado del sistema.

Para crear un panel de control de CloudWatch, puede utilizar la consola de CloudWatch o la API de CloudWatch. A continuación, sólo tiene que añadir al panel widgets que muestren las métricas que desea tener visibles en el panel. También puede añadir texto e imágenes para proporcionar contexto o información adicional.

Una vez que haya creado un cuadro de mando, puede personalizarlo para que se ajuste a sus necesidades específicas. Puede redimensionar y reorganizar los widgets, cambiar el intervalo de tiempo de los datos mostrados y añadir anotaciones para resaltar eventos o cambios importantes. También puede compartir su cuadro de mando con otros usuarios, permitiéndoles ver las mismas métricas y visualizaciones.

Por último, puede implementar fácilmente el mismo panel en diversas cuentas y entornos de AWS.

Recopilación y análisis de registros

El análisis de los registros suele implicar el uso de la función Logs Insights de CloudWatch.

Una vez que haya recopilado los datos de los registros en CloudWatch Logs, puede comenzar a utilizar Logs Insights. CloudWatch Logs Insights le permite consultar y visualizar los datos de registro utilizando un lenguaje de consulta sencillo pero potente. Es muy similar al lenguaje SQL selects, aunque no exactamente igual. Sin embargo, los resultados son muy similares.

Puede utilizar Insights para buscar eventos de registro específicos, filtrar los datos de registro en función de criterios concretos y crear visualizaciones como gráficos y tablas. Con ello, obtendrá otra valiosa información sobre el comportamiento de sus aplicaciones e infraestructura, que podrá utilizar para solucionar problemas, optimizar el rendimiento o mejorar la seguridad.

Lea también: Cómo utilizar AWS Logs Insights para consultar las métricas del panel de control a partir de los registros de servicios de AWS

Automatización de tareas con eventos de CloudWatch

Si dispone de suficiente información de datos de registro en CloudWatch, puede utilizarla para desencadenar acciones basadas en eventos que se produzcan en sus recursos y aplicaciones de AWS. CloudWatch Events proporciona una forma de programar y automatizar tareas, por ejemplo, iniciar o detener instancias EC2 siempre que la utilización de la instancia salga de la zona de uso normal (por ejemplo, detener la instancia durante la noche y volver a iniciarla durante la jornada laboral).

Para automatizar tareas con CloudWatch Events, cree una regla que especifique el patrón de eventos que debe coincidir y la acción que debe realizarse cuando se produzca el evento. Puede hacerlo utilizando la consola de CloudWatch o la API de CloudWatch Events. A continuación, configure uno o varios objetivos para la regla, como una función Lambda de AWS, un tema SNS o una instancia EC2.

CloudWatch Events admite una amplia gama de fuentes de eventos, como servicios de AWS, aplicaciones personalizadas y servicios de terceros. Por tanto, utilice CloudWatch Events para automatizar tareas siempre que necesite escalar recursos, activar backups o responder a incidentes de seguridad.

Al automatizar tareas, reduce la intervención manual en su sistema y garantiza que sus recursos y aplicaciones de AWS funcionen siempre a niveles óptimos.

Características avanzadas de CloudWatch

Existen varias características avanzadas de CloudWatch que pueden configurarse para obtener una visión más profunda de sus recursos de AWS. Una de ellas es la visión de los registros ya mencionada. Estas son algunas de las otras características avanzadas clave:

  • CloudWatch Contributor Insights puede identificar los principales contribuyentes a la utilización de sus recursos (por ejemplo, instancias EC2 o funciones Lambda). Puede utilizar Contributor Insights para identificar las operaciones que consumen más recursos y optimizarlos en consecuencia.
  • CloudWatch Anomaly Detection utiliza algoritmos de aprendizaje automático para detectar automáticamente comportamientos anómalos en sus métricas. Utilice Anomaly Detection para identificar picos o caídas inusuales en sus métricas y tome medidas para solucionarlos.
  • CloudWatch Synthetics crea canarios que simulan el comportamiento de los usuarios y puede probar la disponibilidad y el rendimiento de sus aplicaciones. Utilice Synthetics para explorar y detectar problemas de forma proactiva antes de que lo hagan los usuarios de su empresa.
  • CloudWatch Logs Insights Query Acceleration acelerará las consultas de sus registros hasta 10 veces. Puede utilizar Query Acceleration para analizar grandes volúmenes de datos de registro de forma rápida y eficaz.

Integración de CloudWatch con los servicios de AWS

CloudWatch-Integration
Fuente: aws.amazon.com

Cuando se construye un sistema AWS, la integración de Clodwatch es siempre una prioridad en su lista. Sólo con esta profunda integración podrá recopilar y monitorizar métricas y registros en todos sus servicios o componentes del sistema. Además, es fácil de configurar y utilizar, y la integración es nativa en la mayoría de los servicios de AWS. Así que realmente hay pocas excusas para no utilizar esta ventaja para su sistema en la nube de AWS.

Obtendrá una visión completa de sus recursos y aplicaciones de AWS y la posibilidad de supervisar su estado, rendimiento y disponibilidad. Después, una vez recopilada toda la información, sólo tiene que utilizar los datos ya existentes para configurar alarmas y automatizar tareas en función de los eventos que se produzcan en su entorno de AWS.

Palabras finales

AWS CloudWatch es un completo servicio en la nube capaz de cubrir todas las necesidades de registro, monitorización y visualización del estado del sistema de su proyecto.

Incluir este tipo de componentes en su arquitectura es exactamente la forma de gestionar de forma proactiva sus sistemas y garantizar su fiabilidad. Yo diría que ni siquiera lo priorice para fases posteriores, sino que empiece a construir un sistema de monitorización robusto desde el Sprint 1. Lo agradecerá más adelante.

A continuación, consulte las mejores herramientas de monitorización de AWS.