

# Consulta de registros con información de Registros de CloudWatch
<a name="sal-cw-querying-insights"></a>

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](using-s3-access-logs-to-identify-requests.md#querying-s3-access-logs-for-requests). Para consultar el duplicado de tablas de S3 con SQL, consulte [Consulta de los registros de acceso en las tablas de S3](sal-cw-querying-s3tables.md).

## Introducción
<a name="sal-cw-insights-getting-started"></a>

1. Abra la consola de CloudWatch en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. En el panel de navegación, elija **Registros** y, luego, **Información de registros**.

1. Seleccione el grupo de registros de acceso al servidor en el selector de grupos de registros.

1. Elija un intervalo de tiempo para la consulta.

1. Escriba una consulta y elija **Ejecutar consulta**.

## Análisis del tráfico
<a name="sal-cw-insights-traffic"></a>

Las siguientes consultas ayudan a comprender el volumen de solicitudes y los patrones de tráfico.

**Example Volumen de solicitudes a lo largo del tiempo**  

```
stats count(*) as requests by bin(5m) as interval
| sort interval asc
```

**Example Solicitud de una combinación por tipo de operación**  

```
stats count(*) as cnt by operation
| sort cnt desc
```

**Example 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
<a name="sal-cw-insights-errors"></a>

Las consultas siguientes, ayudan a identificar y diagnosticar errores.

**Example Desglose de tasas de error**  

```
filter http_status >= 400
| stats count(*) as error_count by http_status, error_code, operation
| sort error_count desc
```

**Example Solicitudes 403 Access Denied**  

```
filter http_status = 403
| stats count(*) as denied_count by key_name, remote_ip, requester
| sort denied_count desc
```

**Example Solicitudes 404 Not Found**  

```
filter http_status = 404
| stats count(*) as miss_count by key_name, error_code, remote_ip
| sort miss_count desc
```

**Example 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
<a name="sal-cw-insights-access"></a>

Las siguientes consultas ayudan a entender quién accede a los datos y cómo.

**Example 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
```

**Example Operaciones por solicitante**  

```
stats count(*) as requests by requester, operation
| sort requests desc
```

**Example 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
<a name="sal-cw-insights-latency"></a>

Las consultas siguientes ayudan a identificar las solicitudes lentas y las tendencias de latencia.

**Example 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
```

**Example 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
```

**Example 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
<a name="sal-cw-insights-cost"></a>

Las siguientes consultas ayudan a entender la transferencia de datos e identificar los factores que generan los costos.

**Example 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
```

**Example 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
<a name="sal-cw-insights-security"></a>

Las siguientes consultas ayudan a detectar patrones de acceso sospechosos.

**Example 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
```

**Example 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
```

**Example Distribución de versiones de TLS**  

```
stats count(*) as cnt by tls_version
| sort cnt desc
```