Tools: SOA-Lab1 — Observabilidad mínima: CloudWatch Logs + Alarmas + SNS (2026)
Caso de uso
¿Qué vamos a construir?
Convención de nombres
Requisitos previos
Paso 1 — Preparar acceso por SSH
1.1 Crear el Key Pair
1.2 Crear el Security Group
CLI opcional
Checkpoint
Paso 2 — Lanzar la instancia EC2
Crear la instancia desde la consola
CLI opcional para validar
Checkpoint
Paso 3 — Conectarte por SSH y validar la instancia
Obtener la IP pública
Conectarte por SSH
Validaciones rápidas dentro de la instancia
Checkpoint
Paso 4 — Preparar CloudWatch Logs
Crear el Log Group desde la consola
CLI opcional
Checkpoint
Paso 5 — Instalar y configurar CloudWatch Agent
5.1 Crear el IAM Role para la instancia
5.2 Instalar CloudWatch Agent en la EC2
5.3 Crear la configuración del agente
5.4 Arrancar el agente
5.5 Verificar el estado del agente
Checkpoint
Paso 6 — Consultar logs con CloudWatch Logs Insights
Ejecutar una consulta desde la consola
CLI opcional
Checkpoint
Paso 7 — Crear SNS Topic y suscripción por email
Crear el SNS Topic desde la consola
Crear la suscripción por email
CLI opcional
Checkpoint
Paso 8 — Crear la alarma de CPU y notificar a SNS
Crear la alarma desde la consola
CLI opcional para validar
Checkpoint
Paso 9 — Probar la alarma y confirmar el email
9.1 Conectarte por SSH
9.2 Instalar stress
9.3 Generar carga de CPU
9.4 Validar la alarma en CloudWatch
9.5 Confirmar el correo de SNS
Checkpoint
Clean up completo — SOA-Lab1
Recursos a eliminar
Orden recomendado
Validación final
Troubleshooting rápido
Well-Architected lens: ¿Qué aplicamos aquí?
Resultado esperado
Referencias oficiales
¿Qué viene en el próximo lab? Región: us-east-1
Duración estimada: 35–55 minutosCosto-riesgo: BajoCertificación: AWS Certified CloudOps Engineer - Associate (SOA-C03)Dominio: Monitoring, Logging and Remediation
Tarea 1.1: Implement metrics, alarms, and filters by using AWS monitoring and logging services Digital Cafe Luna inicia sus actividades: un café pequeño, un sueño familiar y una oportunidad para salir adelante. Camilo, hijo de la Sra. Blanca, estudia tecnología y desde el primer día insistió en montar una pequeña aplicación en AWS para apoyar la facturación y llevar un control básico del inventario. Un lunes por la mañana, la Sra. Blanca nota retrasos en la caja, algunos errores en el sistema y suelta esa frase que cualquier equipo técnico ha escuchado alguna vez: “El sistema está lento, ¿qué pasa?.” Camilo revisa la instancia, pero no tiene suficiente visibilidad para entender. No sabe si fue la CPU, logs, errores de arranque, una carga puntual o simplemente una percepción del usuario. La clave es simple: sin observabilidad, diagnosticar se vuelve adivinar. En este laboratorio vamos a construir un baseline mínimo de observabilidad en AWS: logs centralizados, una alarma de CPU y una notificación por email. ¡No es una plataforma completa de monitoreo por Dios!, pero si un primer paso para operar con datos y no con suposiciones. En este laboratorio vas a crear: Figura 1 — Flujo mínimo de observabilidad para Digital Cafe Luna: EC2 envía logs y métricas a CloudWatch, la alarma dispara SNS y Camilo recibe la notificación por email. Usaremos el prefijo soa-lab1 para que puedas buscar, filtrar y eliminar recursos sin perder tiempo. Nota práctica: usar nombres consistentes no es un detalle menor. En labs ayuda al cleanup, en ambientes reales ayuda a operar, auditar y reducir confusión. Antes de comenzar, asegúrate de tener: Ojo: para este laboratorio no abras SSH a 0.0.0.0/0. Vamos a permitir el puerto 22 únicamente desde tu IP pública en formato /32. Antes de crear la instancia, vamos a dejar listo el acceso. La regla es simple: necesitamos poder entrar por SSH, pero sin abrir la instancia al mundo. En este lab vamos a permitir SSH solo desde tu IP pública. Nada de 0.0.0.0/0. Ojo: AWS solo te permite descargar la llave privada una vez. Si la pierdes, tendrás que crear otro key pair o usar otro método de acceso (mas adelante te enseñaré qué hacer cuando pierdes tu Key pair). Ahora crea el Security Group que permitirá SSH solo desde tu IP. En este lab dejamos salida abierta para que la instancia pueda instalar paquetes y comunicarse con servicios de AWS. Lo importante aquí es cuidar el tráfico de entrada. Si prefieres hacerlo por CLI, puedes usar este bloque desde tu terminal. Ojo: MYIP debe obtenerse desde tu máquina local, no desde CloudShell. Si lo ejecutas desde CloudShell, estarías permitiendo la IP pública de CloudShell, no la tuya. Antes de seguir, valida: Ahora vamos a crear la instancia que usaremos como servidor base de Digital Cafe Luna. No estamos buscando una arquitectura compleja todavía; solo necesitamos una EC2 pequeña, identificable por tags y accesible por SSH para instalar el CloudWatch Agent. Cuando la instancia esté corriendo, puedes validar con: Antes de seguir, confirma: Antes de instalar agentes o configurar logs, vamos a validar lo básico: que puedes entrar a la instancia. Si SSH falla aquí, mejor corregirlo ahora y no después. También puedes obtenerla por CLI: En los siguientes comandos usaré el placeholder <PUBLIC_IP>. Reemplázalo por la IP real de tu instancia. Si estás en Mac/Linux, probablemente el archivo quedó en ~/Downloads/kp-soa-lab1.pem. Ajusta la ruta si lo guardaste en otra carpeta. Primero asegura los permisos de la llave: Luego entra a la instancia: Cuando pregunte si confías en el host, responde yes. Una vez dentro, ejecuta: Y valida salida a Internet: Antes de seguir, confirma: Antes de instalar el agente en la instancia, vamos a crear el Log Group donde llegarán los logs. La idea es dejar el destino listo y configurar una retención corta desde el inicio. Ojo: si dejas la retención en “Never expire”, los logs no se eliminan automáticamente. Para un laboratorio pequeño puede parecer poco relevante, pero es una mala costumbre operativa. Si prefieres hacerlo por CLI: Antes de seguir, valida: Ahora vamos a instalar y configurar CloudWatch Agent en la instancia EC2. Este agente enviará logs y métricas básicas hacia CloudWatch. Sin este paso, tendríamos una instancia corriendo, pero con poca visibilidad operativa. No estamos montando una solución completa de observabilidad. Solo queremos una base mínima y funcional: logs centralizados y algunas métricas adicionales desde la instancia. Primero necesitamos que la EC2 tenga permisos para publicar logs y métricas en CloudWatch. Ahora asócialo a la instancia: En los detalles de la instancia, confirma que el campo IAM role muestre soa-lab1-ec2-cw-role. Ojo: si la instancia no tiene este role, el agente puede instalarse y arrancar, pero no podrá publicar correctamente en CloudWatch. Conéctate por SSH a la instancia soa-lab1-app y ejecuta: Nota: usamos yum o dnf para cubrir Amazon Linux 2 y Amazon Linux 2023. Si uno no aplica, el otro debería funcionar. Ahora crea el archivo de configuración del agente. Este archivo le indica al agente qué logs enviar y qué métricas adicionales recolectar. ¿Qué estamos haciendo aquí? Este comando carga la configuración local, indica que el agente corre en modo EC2 y arranca el servicio después de aplicar el archivo. La salida debe mostrar algo parecido a "status": "running". Antes de seguir, valida: Puede tardar unos minutos en aparecer. Si no aparece de inmediato, espera un poco y refresca la consola. Ya estamos enviando logs desde la instancia hacia CloudWatch. Ahora vamos a consultarlos sin entrar por SSH al servidor. Esta es una de las primeras ganancias reales de centralizar logs: puedes investigar desde CloudWatch, filtrar eventos y revisar actividad reciente sin depender de entrar manualmente a la EC2. Deberías ver eventos recientes del archivo /var/log/cloud-init.log, con su timestamp y mensaje correspondiente. También puedes iniciar una consulta desde CloudShell o desde tu terminal con AWS CLI configurado: Luego consulta el resultado: Ojo: si estás en Mac y el comando date -d no funciona, ejecuta esta parte desde CloudShell o ajusta el cálculo de tiempo según tu sistema operativo. Antes de seguir, valida: Ahora necesitamos un canal de notificación. Cuando la alarma de CloudWatch cambie a estado ALARM, queremos que alguien se entere. Para este primer lab usaremos algo simple y efectivo: Amazon SNS + email. No estamos automatizando remediación todavía. Aquí solo queremos cerrar el flujo mínimo de alerta. Ahora entra al topic soa-lab1-alerts-v2 y crea una suscripción: Ojo: si no confirmas la suscripción, SNS no podrá enviarte notificaciones. La suscripción quedará en estado Pending confirmation. Si prefieres hacerlo por CLI: Después de ejecutar esto, revisa tu correo y confirma la suscripción. Antes de seguir, valida: Ya tenemos logs centralizados y un canal de notificación. Ahora vamos a crear una alarma sencilla de CPU. La idea es conectar una señal técnica con una acción operativa: Esto ya le da a Camilo una primera capacidad proactiva: no esperar a que la Sra. Blanca diga “el sistema está lento”, sino recibir una alerta cuando una métrica supere un umbral definido. Configura la condición así: Nota: para un laboratorio, este umbral nos sirve para validar el flujo. En producción, el umbral debe definirse según comportamiento real de la aplicación, baseline histórico y tolerancia del negocio. En Configure actions: En Add name and description: Luego revisa el resumen y selecciona Create alarm. Puedes revisar que la alarma exista y que tenga acciones habilitadas: Antes de seguir, valida: Crear una alarma no es suficiente. En operación, lo importante es validar que el flujo completo funciona. Aquí vamos a probar el camino completo: La idea es generar una carga controlada en la instancia para que la alarma cambie a estado ALARM y recibas la notificación por correo. Conéctate nuevamente a la instancia soa-lab1-app: Reemplaza <PUBLIC_IP> por la IP pública real de tu instancia. Dentro de la EC2, instala la herramienta stress: Ejecuta una carga controlada por unos minutos: Este comando genera carga de CPU durante 600 segundos, es decir, 10 minutos. Ojo: la alarma está configurada con un periodo de 5 minutos. No esperes que cambie de estado al segundo. Dale unos minutos para que CloudWatch recolecte los datos y evalúe la condición. Dependiendo del momento en que revises, podrías ver una transición parecida a esta: No siempre ocurre exactamente en ese orden, pero lo importante es que la alarma llegue a estado ALARM al menos una vez. Revisa el correo que usaste en la suscripción de SNS. Deberías recibir una notificación con un asunto parecido a: Cuando termine la prueba de carga, la CPU debería bajar y la alarma volverá a OK. Esto puede tardar algunos minutos. Antes de cerrar el lab, valida: Ahora vamos a eliminar los recursos creados en el laboratorio. Esto evita costos innecesarios y mantiene tu cuenta limpia para futuros labs. Trabajaremos en la región us-east-1. Elimina los recursos en este orden para evitar bloqueos o dependencias: Ojo: el Security Group puede quedar bloqueado mientras la instancia siga existiendo. Si no te deja borrarlo, espera a que la instancia quede completamente terminada y vuelve a intentar. Al terminar, confirma que: Si algo no funciona, revisa estos puntos: Este laboratorio es pequeño, pero ya toca varios principios importantes del AWS Well-Architected Framework: Al finalizar este laboratorio deberías tener claro cómo construir una observabilidad mínima para una instancia EC2: La idea no era montar una plataforma completa de monitoreo, sino construir una primera base operativa: ver señales, consultar evidencia y recibir una alerta cuando algo se sale del comportamiento esperado. En este laboratorio dejamos una capacidad mínima de observabilidad: logs centralizados, una alarma y una notificación funcionando. Pero observar una carga es solo una parte de operar bien. También necesitamos saber quién hizo qué, cuándo lo hizo y desde dónde. En el próximo laboratorio vamos a entrar en un tema clave de seguridad y auditoría: SCS-Lab1 — CloudTrail: Trail + S3 + KMS + Log Validation La idea será construir un baseline de auditoría en una cuenta AWS: crear un trail, enviar eventos a S3, protegerlos con KMS y habilitar validación de integridad de logs. En otras palabras: pasar de “tengo señales operativas” a “tengo evidencia auditable y protegida”. Nos vemos en el próximo laboratorio de Digital Cafe Luna. Templates let you quickly answer FAQs or store snippets for re-use. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse