

# Consulta ao formato de arquivo de log do NCSA
<a name="querying-iis-logs-ncsa-log-file-format"></a>

O IIS também usa o formato de [log do NCSA](https://docs.microsoft.com/en-us/windows/win32/http/ncsa-logging), que tem um número fixo de campos em formato de texto ASCII separados por espaços. A estrutura é semelhante ao formato de log comum usado para logs de acesso do Apache. Os campos no formato de dados de log comum do NCSA incluem endereço IP do cliente, ID do cliente (não costuma ser usado), ID do usuário do domínio, carimbo de data/hora de recebimento da solicitação, texto da solicitação do cliente, código de status do servidor e tamanho do objeto retornado ao cliente.

O exemplo a seguir mostra os dados no formato de log comum do NCSA, conforme documentado para o 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
```

## Criar uma tabela no Athena para logs do NCSA do IIS
<a name="querying-iis-logs-ncsa-creating-a-table-in-athena"></a>

Na instrução `CREATE TABLE`, você pode usar [Grok SerDe](grok-serde.md) e um padrão do grok similar ao usado nos [logs do servidor Web do Apache](querying-apache-logs.md). Ao contrário dos logs do Apache, o padrão do grok usa `%{DATA:user_id}` para o terceiro campo, em vez de `%{USERNAME:user_id}` para considerar a presença da barra invertida em `domain\user_id`. Para obter mais informações sobre como usar o SerDe do Grok, consulte [Escrever classificadores grok personalizados](https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-grok) no *Guia do desenvolvedor do AWS Glue*.

**Para criar uma tabela no Athena para logs do servidor Web do NCSA do IIS**

1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Cole a instrução DDL a seguir no editor de consultas do Athena. Modifique os valores em `LOCATION 's3://amzn-s3-demo-bucket/iis-ncsa-logs/'` para apontar para seus logs do NCSA do IIS no 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. Execute a consulta no console do Athena para registrar a tabela `iis_ncsa_logs`. Quando a consulta for concluída, os logs estarão prontos para você consultar no Athena.

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

**Example – Filtragem de erros 404**  
A consulta de exemplo a seguir seleciona a hora de recebimento da solicitação, o texto da solicitação do cliente e o código de status do servidor da tabela `iis_ncsa_logs`. A cláusula `WHERE` filtra o código de status HTTP `404` (página não encontrada).  

```
SELECT request_received_time, client_request, server_status
FROM iis_ncsa_logs
WHERE server_status = '404'
```
A imagem a seguir mostra os resultados da consulta no editor de consultas do Athena.  

![\[Consultar entradas HTTP 404 em um log do NCSA do IIS pelo Athena.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/querying-iis-logs-3.png)


**Example – Filtragem de solicitações com êxito de um domínio específico**  
A consulta de exemplo a seguir seleciona o ID do usuário, a hora de recebimento da solicitação, o texto da solicitação do cliente e o código de status do servidor da tabela `iis_ncsa_logs`. A cláusula `WHERE` filtra as solicitações com código de status HTTP `200`(com êxito) de usuários no domínio `AnyCompany`.  

```
SELECT user_id, request_received_time, client_request, server_status
FROM iis_ncsa_logs
WHERE server_status = '200' AND user_id LIKE 'AnyCompany%'
```
A imagem a seguir mostra os resultados da consulta no editor de consultas do Athena.  

![\[Consultar entradas HTTP 200 em um log do NCSA do IIS pelo Athena.\]](http://docs.aws.amazon.com/pt_br/athena/latest/ug/images/querying-iis-logs-4.png)
