Introducción
Amazon CloudWatch es un servicio de monitoreo y gestión de AWS que proporciona datos y conocimientos procesables para supervisar sus aplicaciones, responder a cambios en el rendimiento del sistema y optimizar la utilización de recursos. CloudWatch puede recopilar y rastrear métricas, recopilar y monitorear archivos de registro, y configurar alarmas.
Conceptos Clave
- Métricas: Datos sobre el rendimiento de sus recursos y aplicaciones.
- Alarmas: Notificaciones basadas en umbrales definidos para métricas específicas.
- Logs: Registros de eventos y actividades de sus aplicaciones y servicios.
- Dashboards: Paneles visuales para monitorear métricas y logs en tiempo real.
- Eventos: Respuestas automáticas a cambios en el estado de los recursos.
Configuración de Amazon CloudWatch
Paso 1: Acceso a la Consola de CloudWatch
- Inicie sesión en la Consola de Administración de AWS.
- En el menú de servicios, seleccione CloudWatch.
Paso 2: Creación de una Alarma
- En el panel de navegación, seleccione Alarms.
- Haga clic en Create Alarm.
- Seleccione una métrica para monitorear.
- Defina el umbral y las condiciones de la alarma.
- Configure las acciones a tomar cuando se active la alarma (por ejemplo, enviar una notificación a SNS).
- Revise y cree la alarma.
Paso 3: Configuración de Logs
- En el panel de navegación, seleccione Logs.
- Haga clic en Create Log Group.
- Asigne un nombre al grupo de logs y configure las políticas de retención.
- Configure sus aplicaciones para enviar logs a este grupo.
Ejemplo Práctico
Monitoreo de una Instancia EC2
Paso 1: Habilitar Métricas Detalladas
aws cloudwatch put-metric-alarm --alarm-name "HighCPUUtilization" \ --metric-name "CPUUtilization" --namespace "AWS/EC2" \ --statistic "Average" --period 300 --threshold 80 \ --comparison-operator "GreaterThanOrEqualToThreshold" \ --dimensions "Name=InstanceId,Value=i-1234567890abcdef0" \ --evaluation-periods 2 --alarm-actions "arn:aws:sns:us-east-1:123456789012:MyTopic"
Explicación del Código
--alarm-name
: Nombre de la alarma.--metric-name
: Nombre de la métrica a monitorear.--namespace
: Espacio de nombres de la métrica.--statistic
: Estadística a utilizar (por ejemplo, promedio).--period
: Periodo de agregación de datos en segundos.--threshold
: Umbral que activará la alarma.--comparison-operator
: Operador de comparación para el umbral.--dimensions
: Dimensiones de la métrica (por ejemplo, ID de la instancia).--evaluation-periods
: Número de periodos de evaluación.--alarm-actions
: Acciones a tomar cuando se active la alarma (por ejemplo, enviar una notificación a SNS).
Visualización de Métricas en un Dashboard
- En el panel de navegación, seleccione Dashboards.
- Haga clic en Create Dashboard.
- Asigne un nombre al dashboard y haga clic en Create.
- Agregue widgets para visualizar métricas específicas.
- Configure los widgets según sus necesidades (por ejemplo, gráficos de líneas, gráficos de barras).
Ejercicios Prácticos
Ejercicio 1: Crear una Alarma para el Uso de Memoria
- Acceda a la consola de CloudWatch.
- Cree una alarma para monitorear el uso de memoria de una instancia EC2.
- Configure la alarma para que envíe una notificación a un tema de SNS cuando el uso de memoria supere el 75% durante 5 minutos.
Solución
aws cloudwatch put-metric-alarm --alarm-name "HighMemoryUtilization" \ --metric-name "MemoryUtilization" --namespace "System/Linux" \ --statistic "Average" --period 300 --threshold 75 \ --comparison-operator "GreaterThanOrEqualToThreshold" \ --dimensions "Name=InstanceId,Value=i-1234567890abcdef0" \ --evaluation-periods 1 --alarm-actions "arn:aws:sns:us-east-1:123456789012:MyTopic"
Ejercicio 2: Configurar Logs para una Aplicación
- Cree un grupo de logs en CloudWatch.
- Configure su aplicación para enviar logs a este grupo.
- Verifique que los logs se están enviando correctamente.
Solución
- Cree el grupo de logs en la consola de CloudWatch.
- Configure su aplicación (por ejemplo, una aplicación Node.js) para enviar logs:
const AWS = require('aws-sdk'); const CloudWatchLogs = new AWS.CloudWatchLogs({ region: 'us-east-1' }); const logGroupName = '/aws/my-application'; const logStreamName = 'my-log-stream'; CloudWatchLogs.createLogStream({ logGroupName, logStreamName }, (err, data) => { if (err) console.log(err, err.stack); else console.log(data); }); const logEvent = { logGroupName, logStreamName, logEvents: [ { message: 'This is a log message', timestamp: Date.now() } ] }; CloudWatchLogs.putLogEvents(logEvent, (err, data) => { if (err) console.log(err, err.stack); else console.log(data); });
Resumen
En esta sección, hemos aprendido sobre Amazon CloudWatch, un servicio esencial para el monitoreo y la gestión de recursos en AWS. Hemos cubierto conceptos clave como métricas, alarmas, logs, dashboards y eventos. Además, hemos visto cómo configurar CloudWatch para monitorear una instancia EC2 y cómo visualizar métricas en un dashboard. Los ejercicios prácticos proporcionados refuerzan estos conceptos y permiten una comprensión más profunda del uso de CloudWatch en entornos reales.
En el próximo módulo, exploraremos AWS CloudTrail, un servicio que proporciona un registro de las acciones realizadas en su cuenta de AWS.
Curso de AWS
Módulo 1: Introducción a AWS
- ¿Qué es AWS?
- Configuración de tu cuenta de AWS
- Infraestructura global de AWS
- Consola de administración de AWS