

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Eseguire query sul formato del file di log NCSA
<a name="querying-iis-logs-ncsa-log-file-format"></a>

IIS utilizza anche il formato [NCSA Logging](https://docs.microsoft.com/en-us/windows/win32/http/ncsa-logging), che ha un numero fisso di campi in formato testo ASCII separati da spazi. La struttura è simile al formato di log comune utilizzato per i log di accesso Apache. I campi nel formato di log comune NCSA includono l'indirizzo IP del client, l'ID del client (non usato di norma), l'ID utente/dominio, la marca temporale della richiesta ricevuta, il testo della richiesta client, il codice di stato del server e la dimensione dell'oggetto restituito al client.

L'esempio seguente mostra i dati nel formato di log comune NCSA come documentato per 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
```

## Creare una tabella in Athena per i log IIS NCSA
<a name="querying-iis-logs-ncsa-creating-a-table-in-athena"></a>

Per l'istruzione `CREATE TABLE`, è possibile utilizzare [Grok SerDe](grok-serde.md) e un modello Grok simile a quello per i [log dei server Web Apache](querying-apache-logs.md). A differenza dei log di Apache, il modello Grok utilizza `%{DATA:user_id}` per il terzo campo invece di `%{USERNAME:user_id}` per tenere conto della presenza della barra rovesciata in `domain\user_id`. *Per ulteriori informazioni sull'uso di Grok SerDe, consulta [Writing grok custom classifiers](https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-grok) nella Developer Guide.AWS Glue *

**Per creare una tabella in Athena per i log del server Web IIS NCSA**

1. Apri la console Athena all'indirizzo [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Copiare e incollare la seguente istruzione DDL nella console Athena Query Editor. Modificare i valori in `LOCATION 's3://amzn-s3-demo-bucket/iis-ncsa-logs/'` per puntare ai log IIS NCSA in 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. Eseguire la query nella console Athena per registrare la tabella `iis_ncsa_logs`. Al termine della query, i registri sono pronti per le query da Athena.

## Esempio di query di selezione per i log IIS NCSA
<a name="querying-iis-logs-ncsa-example-select-queries"></a>

**Example — Filtrare per errori 404**  
La query di esempio seguente seleziona l'ora di ricezione della richiesta, il testo della richiesta client e il codice di stato del server dalla tabella `iis_ncsa_logs`. La clausola `WHERE` filtra per codice di stato HTTP `404` (pagina non trovata).  

```
SELECT request_received_time, client_request, server_status
FROM iis_ncsa_logs
WHERE server_status = '404'
```
L'immagine seguente mostra i risultati della query nell'editor di query Athena.  

![\[Esecuzione di query su un log IIS NCSA da Athena per le voci HTTP 404.\]](http://docs.aws.amazon.com/it_it/athena/latest/ug/images/querying-iis-logs-3.png)


**Example — Filtrare per richieste riuscite da un determinato dominio**  
La query di esempio seguente seleziona l'ID utente, l'ora di ricezione della richiesta, il testo della richiesta client e il codice di stato del server dalla tabella `iis_ncsa_logs`. La clausola `WHERE` filtra per richieste con codice di stato HTTP `200` (riuscito) dagli utenti nel 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%'
```
L'immagine seguente mostra i risultati della query nell'editor di query Athena.  

![\[Esecuzione di query su un log IIS NCSA da Athena per le voci HTTP 200.\]](http://docs.aws.amazon.com/it_it/athena/latest/ug/images/querying-iis-logs-4.png)
