2 minute read

👁️ Día 5: CloudWatch - Tu Torre de Control en AWS

Tu servidor ya está corriendo y tiene contenido, pero ¿qué pasa si se queda sin memoria o el CPU llega al 100%? Hoy aprenderemos a configurar CloudWatch usando CloudFormation para crear Alarmas que nos avisen de problemas y un Dashboard para visualizar la salud de nuestra EC2 en tiempo real.

¿Por qué es importante esto?

No puedes gestionar lo que no puedes medir. Implementar observabilidad te permite: Reaccionar rápido: Enterarte de una caída antes que tus usuarios. Optimizar costos: Ver si tu instancia es demasiado grande (o pequeña) para el tráfico que recibe. Histórico de datos: Analizar patrones de uso durante el día o la semana. Automatización: Disparar acciones automáticas (como reiniciar la instancia) si algo falla.

🛠️ El Código (CloudFormation)

En este post nos enfocamos en los recursos de monitoreo que se conectan a tu instancia actual.

1. La Alarma de CPU

Agregamos una alerta que vigila si nuestro servidor está bajo mucho estrés:

AlarmaCPUAlta:
  Type: AWS::CloudWatch::Alarm
  Properties:
    AlarmDescription: "Alerta si el CPU supera el 45% por más de 2 minutos"
    MetricName: CPUUtilization
    Namespace: AWS/EC2
    Statistic: Average
    Period: 60 # Segundos
    EvaluationPeriods: 2
    Threshold: 45
    ComparisonOperator: GreaterThanThreshold
    Dimensions:
      - Name: InstanceId
        Value: !Ref MiServidorWeb # Referencia a tu EC2

2. El Dashboard Visual

Creamos un tablero con gráficos para ver el CPU y la Red de un vistazo:

MiDashboard:
  Type: AWS::CloudWatch::Dashboard
  Properties:
    DashboardName: !Sub "Monitor-EC2-${AWS::StackName}"
    DashboardBody: !Sub |
      {
        "widgets": [
          {
            "type": "metric",
            "properties": {
              "metrics": [ [ "AWS/EC2", "CPUUtilization", "InstanceId", "${MiServidorWeb}" ] ],
              "title": "Uso de CPU (%)",
              "region": "${AWS::Region}"
            }
          }
        ]
      }

📚 Conceptos Nuevos Explicados

1. Métricas (Metrics)

Son los datos numéricos que AWS recolecta de tus recursos. Por defecto, EC2 envía métricas cada 5 minutos (monitoreo básico) sin costo adicional.

2. Alarmas y Umbrales (Thresholds)

Una alarma vigila una métrica. Si la métrica cruza el Threshold (umbral) durante los EvaluationPeriods (periodos de evaluación) definidos, la alarma cambia de estado a ALARM.

3. Namespace y Dimensions

Namespace: Es el contenedor de la métrica (ej. AWS/EC2). Dimensions: Es el filtro para saber exactamente qué recurso medir. Usamos InstanceId para medir solo nuestra instancia específica.

4. Dashboards como Código

Los tableros de CloudWatch se definen internamente como un JSON. CloudFormation nos permite “dibujar” estos tableros definiendo la posición y el tipo de gráfico (widget).

🚀 Cómo Desplegarlo

Actualiza tu stack usando la CLI o la consola de AWS:

aws cloudformation update-stack \
  --stack-name Mi-Infra-Con-Monitoreo \
  --template-body file://dia7-cloudwatch.yaml \
  --parameters ParameterKey=KeyName,ParameterValue=tu-llave

📈 Cómo probar tu Alarma

Para ver la alarma en acción sin esperar a tener tráfico real, puedes estresar el CPU de tu instancia: Conecta por SSH a tu EC2. Instala la herramienta de estrés:

sudo yum install stress -y

Ejecuta:

stress --cpu 1 --timeout 900 

Ve a la consola de CloudWatch > Alarms y verás cómo cambia a color rojo.

📂 Código Adjunto

Puedes encontrar el template completo con la EC2 + Alarma + Dashboard aquí: Ver archivo en GitHub


🎥 Video Tutorial

Mira el proceso paso a paso en video:


💡 Próximos pasos

  • Enviar una notificación por correo (SNS) cuando la alarma se active.