Consulta de registros con información de Registros de CloudWatch
Puede utilizar la información de Registros de CloudWatch para buscar y analizar de forma interactiva los datos de registro de acceso al servidor. Las consultas se ejecutan en el grupo de registros donde se entregan los registros y devuelven los resultados en cuestión de segundos.
nota
Para consultar registros entregados a un bucket de uso general de Amazon S3, consulte Consultar los registros de acceso para solicitudes mediante Amazon Athena. Para consultar el duplicado de tablas de S3 con SQL, consulte Consulta de los registros de acceso en las tablas de S3.
Introducción
-
Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/
. -
En el panel de navegación, elija Registros y, luego, Información de registros.
-
Seleccione el grupo de registros de acceso al servidor en el selector de grupos de registros.
-
Elija un intervalo de tiempo para la consulta.
-
Escriba una consulta y elija Ejecutar consulta.
Análisis del tráfico
Las siguientes consultas ayudan a comprender el volumen de solicitudes y los patrones de tráfico.
ejemplo Volumen de solicitudes a lo largo del tiempo
stats count(*) as requests by bin(5m) as interval | sort interval asc
ejemplo Solicitud de una combinación por tipo de operación
stats count(*) as cnt by operation | sort cnt desc
ejemplo Tráfico por bucket
stats count(*) as requests, sum(bytes_sent_size) as bytes_out by bucket_arn | sort requests desc
Solución de errores
Las consultas siguientes, ayudan a identificar y diagnosticar errores.
ejemplo Desglose de tasas de error
filter http_status >= 400 | stats count(*) as error_count by http_status, error_code, operation | sort error_count desc
ejemplo Solicitudes 403 Access Denied
filter http_status = 403 | stats count(*) as denied_count by key_name, remote_ip, requester | sort denied_count desc
ejemplo Solicitudes 404 Not Found
filter http_status = 404 | stats count(*) as miss_count by key_name, error_code, remote_ip | sort miss_count desc
ejemplo Eventos 503 SlowDown (limitación)
filter http_status = 503 | stats count(*) as throttle_count by key_name, remote_ip | sort throttle_count desc
Patrones de acceso
Las siguientes consultas ayudan a entender quién accede a los datos y cómo.
ejemplo Tráfico por IP de origen
stats count(*) as total_requests, sum(http_status >= 400) as errors, sum(bytes_sent_size) as bytes_transferred by remote_ip | sort total_requests desc
ejemplo Operaciones por solicitante
stats count(*) as requests by requester, operation | sort requests desc
ejemplo Claves más consultadas
filter operation like /REST\.(GET|PUT)\.OBJECT/ | stats count(*) as access_count, sum(bytes_sent_size) as bytes_out by key_name | sort access_count desc | limit 10
Análisis de la latencia
Las consultas siguientes ayudan a identificar las solicitudes lentas y las tendencias de latencia.
ejemplo Latencia por tipo de operación
filter operation like /REST\.(GET|PUT)\.OBJECT/ | stats avg(total_duration) as avg_ms, pct(total_duration, 50) as p50_ms, pct(total_duration, 95) as p95_ms, max(total_duration) as max_ms, count(*) as requests by operation
ejemplo Teclas más lentas por latencia de p95
filter operation like /REST\.GET\.OBJECT/ | stats avg(total_duration) as avg_ms, pct(total_duration, 95) as p95_ms, count(*) as requests by key_name | sort p95_ms desc | limit 10
ejemplo Latencia a lo largo del tiempo
filter operation like /REST\.(GET|PUT)\.OBJECT/ | stats avg(total_duration) as avg_ms, pct(total_duration, 95) as p95_ms by bin(5m) as interval | sort interval asc
Atribución de costos
Las siguientes consultas ayudan a entender la transferencia de datos e identificar los factores que generan los costos.
ejemplo Transferencia de datos por operación
filter operation like /REST\.(GET|PUT|DELETE)\.OBJECT/ | stats sum(bytes_sent_size) as total_bytes_out, sum(object_size) as total_object_bytes, count(*) as request_count by operation | sort total_bytes_out desc
ejemplo Los objetos más grandes que se están sirviendo
filter operation like /REST\.GET\.OBJECT/ and bytes_sent_size > 0 | stats max(object_size) as max_size, avg(object_size) as avg_size, count(*) as reads by key_name | sort max_size desc | limit 10
Análisis de seguridad
Las siguientes consultas ayudan a detectar patrones de acceso sospechosos.
ejemplo IP con altas tasas de error
stats count(*) as total, sum(http_status >= 400) as errors by remote_ip | filter errors > 10 | sort errors desc
ejemplo Intentos de acceso erróneos por clave
filter http_status >= 400 | stats count(*) as attempts by remote_ip, key_name, operation, http_status | sort attempts desc | limit 20
ejemplo Distribución de versiones de TLS
stats count(*) as cnt by tls_version | sort cnt desc