

# Consulta del formato del archivo de los registros de NCSA
<a name="querying-iis-logs-ncsa-log-file-format"></a>

IIS también utiliza el formato de [registro NCSA](https://docs.microsoft.com/en-us/windows/win32/http/ncsa-logging), que tiene un número fijo de campos en formato de texto ASCII separados por espacios. La estructura es similar al formato de registro común utilizado para los registros de acceso de Apache. Los campos en el formato de datos de registro común de NCSA incluyen la dirección IP del cliente, el ID del cliente (no se utiliza normalmente), el dominio\$1 ID de usuario, la marca temporal de la solicitud recibida, el texto de la solicitud del cliente, el código de estado del servidor y el tamaño del objeto devuelto al cliente.

En el siguiente ejemplo, se muestran los datos en el formato de registro común de NCSA documentado para IIS.

```
198.51.100.7 - ExampleCorp\Li [10/Oct/2019:13:55:36 -0700] "GET /logo.gif HTTP/1.0" 200 232
198.51.100.14 - AnyCompany\Jorge [24/Nov/2019:10:49:52 -0700] "GET /index.html HTTP/1.1" 200 2165
198.51.100.22 - ExampleCorp\Mateo [27/Dec/2019:11:38:12 -0700] "GET /about.html HTTP/1.1" 200 1287
198.51.100.9 - AnyCompany\Nikki [11/Jan/2020:11:40:11 -0700] "GET /image.png HTTP/1.1" 404 230
198.51.100.2 - ExampleCorp\Ana [15/Feb/2019:10:12:22 -0700] "GET /favicon.ico HTTP/1.1" 404 30
198.51.100.13 - AnyCompany\Saanvi [14/Mar/2019:11:40:33 -0700] "GET /intro.html HTTP/1.1" 200 1608
198.51.100.11 - ExampleCorp\Xiulan [22/Apr/2019:10:51:34 -0700] "GET /group/index.html HTTP/1.1" 200 1344
```

## Creación de una tabla en Athena para los registros de NCSA de IIS
<a name="querying-iis-logs-ncsa-creating-a-table-in-athena"></a>

Para la instrucción `CREATE TABLE`, puede utilizar [El SerDe de Grok](grok-serde.md) y un patrón grok similar al de los [registros del servidor web de Apache](querying-apache-logs.md). A diferencia de los registros de Apache, el patrón grok utiliza `%{DATA:user_id}` para el tercer campo en lugar de `%{USERNAME:user_id}` para dar cuenta de la presencia de la barra invertida en `domain\user_id`. Para obtener más información sobre el uso del SerDe de Grok, consulte [Escritura de clasificadores personalizados de Grok](https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-grok) en la *Guía para desarrolladores de AWS Glue*.

**Para crear una tabla en Athena para los registros del servidor web NCSA de IIS**

1. Abra la consola de Athena en [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Pegue la siguiente instrucción DDL en el Editor de consultas de Athena. Modifique los valores de `LOCATION 's3://amzn-s3-demo-bucket/iis-ncsa-logs/'` para apuntar a los registros NCSA de IIS en Amazon S3.

   ```
   CREATE EXTERNAL TABLE iis_ncsa_logs(
     client_ip string,
     client_id string,
     user_id string,
     request_received_time string,
     client_request string,
     server_status string,
     returned_obj_size string
     )
   ROW FORMAT SERDE
      'com.amazonaws.glue.serde.GrokSerDe'
   WITH SERDEPROPERTIES (
      'input.format'='^%{IPV4:client_ip} %{DATA:client_id} %{DATA:user_id} %{GREEDYDATA:request_received_time} %{QUOTEDSTRING:client_request} %{DATA:server_status} %{DATA: returned_obj_size}$'
      )
   STORED AS INPUTFORMAT
      'org.apache.hadoop.mapred.TextInputFormat'
   OUTPUTFORMAT
      'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
      's3://amzn-s3-demo-bucket/iis-ncsa-logs/';
   ```

1. Ejecute la consulta en la consola de Athena para registrar la tabla `iis_ncsa_logs`. Cuando se complete la consulta, los registros estarán listos para su consulta desde Athena.

## Ejemplo de consultas Select para registros NCSA de IIS
<a name="querying-iis-logs-ncsa-example-select-queries"></a>

**Example – Filtrado de errores 404**  
En la siguiente consulta de ejemplo, se selecciona la hora recibida de la solicitud, el texto de la solicitud del cliente y el código de estado del servidor en la tabla `iis_ncsa_logs`. La cláusula `WHERE` filtra el código de estado HTTP `404` (página no encontrada).  

```
SELECT request_received_time, client_request, server_status
FROM iis_ncsa_logs
WHERE server_status = '404'
```
En la siguiente imagen se muestran los resultados de la consulta en el Editor de consultas de Athena.  

![\[Consulta de un registro NCSA de IIS desde Athena para entradas HTTP 404.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/querying-iis-logs-3.png)


**Example – Filtrar solicitudes correctas de un dominio en particular**  
En la siguiente consulta de ejemplo, se selecciona el ID de usuario, la hora recibida de la solicitud, el texto de la solicitud del cliente y el código de estado del servidor en la tabla `iis_ncsa_logs`. La cláusula `WHERE` filtra solicitudes con código de estado HTTP `200` (satisfactorio) de los usuarios en el dominio `AnyCompany`.  

```
SELECT user_id, request_received_time, client_request, server_status
FROM iis_ncsa_logs
WHERE server_status = '200' AND user_id LIKE 'AnyCompany%'
```
En la imagen siguiente se muestran los resultados de la consulta en el Editor de consultas de Athena.  

![\[Consulta de un registro NCSA de IIS desde Athena para entradas HTTP 200.\]](http://docs.aws.amazon.com/es_es/athena/latest/ug/images/querying-iis-logs-4.png)
