0Pricing
Cloud & IT Cert Prep · Lección

Logs y Log Insights de CloudWatch

Agregue logs de EC2, Lambda y contenedores en grupos de logs y ejecute consultas de CloudWatch Logs Insights para encontrar errores y patrones

Logs y Log Insights de CloudWatch es una lección gratuita de Cloud & IT Cert Prep en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cloud & IT Cert Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.

Descripción general de CloudWatch Logs

Amazon CloudWatch Logs es un servicio de agregación de registros totalmente administrado que recopila, almacena y analiza datos de registro de los servicios de AWS y de sus propias aplicaciones. A diferencia de la gestión tradicional de registros, en la que debe conectarse mediante SSH a los servidores para leer archivos, CloudWatch Logs centraliza todos los registros en un almacén duradero y cifrado, con consultas, filtrado, extracción de métricas y gestión de la retención integrados. Se integra de forma nativa con EC2, Lambda, ECS, EKS, API Gateway, CloudTrail y VPC Flow Logs.

Grupos y flujos de registros

Los registros se organizan jerárquicamente: un grupo de registros es un contenedor con nombre para registros que comparten la misma configuración de retención y control de acceso (por ejemplo, /aws/lambda/my-function). Dentro de un grupo de registros, cada flujo de registros representa una única fuente de eventos de registro secuenciales: una instancia de EC2, un contenedor de Lambda o una tarea de ECS. Un grupo de registros puede tener miles de flujos, pero cada flujo pertenece exactamente a un grupo de registros.

# Create a log group with 30-day retention
aws logs create-log-group \
  --log-group-name /myapp/production/api

aws logs put-retention-policy \
  --log-group-name /myapp/production/api \
  --retention-in-days 30

# List log streams in a group
aws logs describe-log-streams \
  --log-group-name /myapp/production/api \
  --order-by LastEventTime \
  --descending

Envío de registros desde Lambda y EC2

AWS Lambda envía automáticamente toda la salida de stdout y stderr a CloudWatch Logs; solo necesita que el rol de ejecución de Lambda incluya logs:CreateLogGroup, logs:CreateLogStream y logs:PutLogEvents. Para las instancias de EC2, debe instalar el CloudWatch Agent y configurar qué archivos de registro supervisar (por ejemplo, /var/log/nginx/access.log), a qué grupo de registros escribir y qué patrón identifica cada entrada de registro.

# CloudWatch Agent config for tailing an application log file
# /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
# {
#   "logs": {
#     "logs_collected": {
#       "files": {
#         "collect_list": [{
#           "file_path": "/var/log/myapp/app.log",
#           "log_group_name": "/myapp/production/api",
#           "log_stream_name": "{instance_id}",
#           "timestamp_format": "%Y-%m-%dT%H:%M:%S"
#         }]
#       }
#     }
#   }
# }

CloudWatch Logs Insights

CloudWatch Logs Insights es un motor de consultas interactivo que permite buscar y analizar datos de registro mediante un lenguaje de consultas diseñado específicamente para este fin. Puede ejecutar consultas en uno o varios grupos de registros, filtrar por intervalo de tiempo, extraer campos de líneas de registro estructuradas o no estructuradas, agregar datos y visualizar los resultados como gráficos de barras o series temporales. Las consultas se ejecutan bajo demanda y se cobran por GB de datos analizados; estructurar los registros como JSON reduce considerablemente el volumen analizado.

# Find the top 10 slowest Lambda invocations in the last hour
aws logs start-query \
  --log-group-name /aws/lambda/my-function \
  --start-time $(date -d '1 hour ago' +%s) \
  --end-time $(date +%s) \
  --query-string 'filter @type = "REPORT"
| fields @requestId, @duration
| sort @duration desc
| limit 10'

Lenguaje de consultas de Logs Insights

El lenguaje de consultas de Logs Insights utiliza comandos separados por tuberías: fields selecciona los campos que se mostrarán, filter acota los eventos (admite expresiones regulares con like y =~), stats agrega los datos, sort ordena los resultados y limit limita el número de resultados. El servicio detecta automáticamente los campos de las líneas de registro con formato JSON. En el caso de registros no estructurados, puede analizar los valores mediante parse con patrones glob o de expresiones regulares.

# Count errors by status code in the last 24 hours
fields @timestamp, @message
| filter @message like /ERROR/
| parse @message '* * * [*] "* *" * *' as host, user, datetime, request, method, status, bytes
| stats count(*) as errorCount by status
| sort errorCount desc
| limit 20

Filtros de métricas: de registros a métricas

Los filtros de métricas analizan continuamente los eventos de registro entrantes en busca de patrones e incrementan una métrica personalizada de CloudWatch cada vez que encuentran una coincidencia. Por ejemplo, puede crear un filtro de métricas en un grupo de registros de Lambda que incremente una métrica ErrorCount cada vez que una línea de registro contenga ERROR. Después, puede crear una alarma de CloudWatch sobre esta métrica para alertar a su equipo. Así convierte los registros en métricas útiles sin almacenar los resultados en una base de datos independiente.

# Create a metric filter that counts ERROR lines
aws logs put-metric-filter \
  --log-group-name /myapp/production/api \
  --filter-name ErrorCount \
  --filter-pattern 'ERROR' \
  --metric-transformations \
    metricName=ApplicationErrors,metricNamespace=MyApp,metricValue=1,defaultValue=0

# Now create an alarm on the resulting metric
aws cloudwatch put-metric-alarm \
  --alarm-name HighErrorRate \
  --metric-name ApplicationErrors \
  --namespace MyApp \
  --statistic Sum \
  --period 60 \
  --evaluation-periods 1 \
  --threshold 10 \
  --comparison-operator GreaterThanThreshold \
  --alarm-actions arn:aws:sns:us-east-1:111122223333:Ops

Suscripciones y streaming de registros

Un filtro de suscripción transmite eventos de registro casi en tiempo real a otro servicio para procesarlos o almacenarlos. Puede transmitirlos a AWS Lambda (para transformar y enrutar registros), Amazon Kinesis Data Streams (para procesar grandes volúmenes de registros) o Amazon Kinesis Firehose (para entregarlos a S3, OpenSearch o Splunk). Cada grupo de registros admite hasta dos filtros de suscripción. La transmisión de registros entre cuentas requiere un destino con una política de recursos adecuada.

# Stream all logs containing ERROR to a Kinesis Firehose for S3 archiving
aws logs put-subscription-filter \
  --log-group-name /myapp/production/api \
  --filter-name ErrorsToFirehose \
  --filter-pattern 'ERROR' \
  --destination-arn arn:aws:firehose:us-east-1:111122223333:deliverystream/LogArchive \
  --distribution 'ByLogStreamName'

Políticas de retención y gestión de costes

De forma predeterminada, CloudWatch Logs almacena los datos indefinidamente, lo que puede resultar caro. Establezca políticas de retención en cada grupo de registros para eliminar automáticamente los eventos antiguos. Los períodos de retención habituales son 7 días para los registros de depuración, 30 días para los registros de aplicaciones y de 1 a 5 años para los registros de auditoría. Puede exportar los grupos de registros a S3 para archivarlos a largo plazo y con bajo coste mediante la API create-export-task, aunque las exportaciones son operaciones por lotes, no en tiempo real.

# Set retention on all log groups that have no retention policy
aws logs describe-log-groups \
  --query 'logGroups[?!retentionInDays].logGroupName' \
  --output text | tr '\t' '\n' | while read lg; do
    aws logs put-retention-policy \
      --log-group-name "$lg" \
      --retention-in-days 90
    echo "Set 90-day retention on $lg"
done

VPC Flow Logs

VPC Flow Logs capturan metadatos sobre el tráfico IP que entra y sale de las interfaces de red de su VPC, sus subredes o sus ENI individuales. Se almacenan en CloudWatch Logs o S3. Los registros de flujo incluyen la IP de origen, la IP de destino, el puerto, el protocolo, el número de paquetes, el número de bytes, la acción (ACCEPT o REJECT) y la marca de tiempo. Son muy útiles para solucionar problemas de las reglas de los grupos de seguridad y las NACL, detectar análisis de puertos y auditar patrones de tráfico, pero NO capturan las cargas útiles reales de los paquetes.

# Enable VPC Flow Logs to CloudWatch Logs
aws ec2 create-flow-logs \
  --resource-ids vpc-0abc1234def567890 \
  --resource-type VPC \
  --traffic-type ALL \
  --log-destination-type cloud-watch-logs \
  --log-group-name /aws/vpc/flow-logs \
  --deliver-logs-permission-arn arn:aws:iam::111122223333:role/FlowLogsRole

Consulta de VPC Flow Logs con Insights

CloudWatch Logs Insights resulta especialmente eficaz para el análisis de VPC Flow Logs. Puede identificar rápidamente el tráfico rechazado, encontrar los principales emisores por volumen de bytes, detectar conexiones inusuales o aislar el tráfico de una instancia concreta. De forma predeterminada, el formato de los registros de flujo está separado por espacios, pero publicarlos en formato JSON en CloudWatch Logs permite extraer automáticamente los campos en las consultas de Insights.

# Find top 10 source IPs by rejected byte volume in the last day
fields srcAddr, dstAddr, dstPort, action, bytes
| filter action = 'REJECT'
| stats sum(bytes) as rejectedBytes by srcAddr
| sort rejectedBytes desc
| limit 10

Cifrado de registros con KMS

CloudWatch Logs cifra todos los datos en reposo de forma predeterminada mediante claves administradas por AWS. Para aumentar la seguridad, especialmente en entornos regulados, puede asociar una clave de KMS administrada por el cliente a un grupo de registros. Esto le permite controlar la rotación y el acceso a la clave, así como revocar el acceso a todos los datos de registro deshabilitando la clave. La clave de KMS debe tener una política de claves que conceda a CloudWatch Logs permiso para utilizarla en el cifrado y descifrado.

# Associate a KMS key with a log group
aws logs associate-kms-key \
  --log-group-name /myapp/production/api \
  --kms-key-id arn:aws:kms:us-east-1:111122223333:key/KEY_ID

# Verify encryption is configured
aws logs describe-log-groups \
  --log-group-name-prefix /myapp/production \
  --query 'logGroups[].{Name:logGroupName,KmsKey:kmsKeyId}'

Comprobación rápida

Compruebe su comprensión de los conceptos de AWS Solutions Architect (SAA-C03) de esta lección.

Resumen de la lección

En esta lección ha aprendido que los grupos y flujos de logs organizan los logs por origen y permiten configurar su retención; Logs Insights permite consultar y agregar datos de logs mediante un potente lenguaje de consultas basado en tuberías; y los filtros de métricas convierten patrones de logs en métricas de CloudWatch que pueden activar alarmas. A continuación, exploraremos los paneles de CloudWatch y Container Insights para obtener visibilidad operativa.

Preguntas frecuentes

¿La lección «Logs y Log Insights de CloudWatch» es gratis?

Sí — el texto completo de «Logs y Log Insights de CloudWatch» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cloud & IT Cert Prep, actualiza a CoddyKit PRO. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.

¿Qué aprenderé en «Logs y Log Insights de CloudWatch»?

Agregue logs de EC2, Lambda y contenedores en grupos de logs y ejecute consultas de CloudWatch Logs Insights para encontrar errores y patrones Practicas Cloud & IT Cert Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cloud & IT Cert Prep?

No se requiere experiencia previa. Cloud & IT Cert Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Logs y Log Insights de CloudWatch»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cloud & IT Cert Prep?

Sí. Cada lección de Cloud & IT Cert Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Métricas, espacios de nombres y dimensiones de CloudWatch
  2. Alarmas y alarmas compuestas de CloudWatch
  3. Logs y Log Insights de CloudWatch
  4. Paneles de CloudWatch y Container Insights
← Volver a Cloud & IT Cert Prep