

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 sui log Internet Information Server (IIS) archiviati in Amazon S3
<a name="querying-iis-logs"></a>

Puoi usare Amazon Athena per eseguire query sui log del server Web Microsoft Internet Information Server (IIS) archiviati nell'account Amazon S3. Mentre IIS utilizza una [varietà](https://docs.microsoft.com/en-us/previous-versions/iis/6.0-sdk/ms525807(v%3Dvs.90)) dei formati dei file di log, questo argomento illustra come creare schemi di tabella per eseguire una query sui log con formato W3C extended e IIS da Athena.

Poiché i formati di file di registro W3C esteso e IIS utilizzano delimitatori di caratteri singoli (rispettivamente spazi e virgole) e non hanno valori racchiusi tra virgolette, è possibile utilizzarli per creare tabelle Athena per [LazySimpleSerDe](lazy-simple-serde.md)tali formati.

**Topics**
+ [Eseguire query sul formato dei file di log W3C extended](querying-iis-logs-w3c-extended-log-file-format.md)
+ [Eseguire query sul formato del file di log IIS](querying-iis-logs-iis-log-file-format.md)
+ [Eseguire query sul formato del file di log NCSA](querying-iis-logs-ncsa-log-file-format.md)

# Eseguire query sul formato dei file di log W3C extended
<a name="querying-iis-logs-w3c-extended-log-file-format"></a>

Il formato dei dati del file di log [W3C extended](https://docs.microsoft.com/en-us/windows/win32/http/w3c-logging) presenta campi separati da spazi. I campi visualizzati nei log W3C extended sono determinati da un amministratore del server Web che sceglie quali campi di log includere. Nell'esempio seguente i dati di log contengono i campi `date, time`, `c-ip`, `s-ip`, `cs-method`, `cs-uri-stem`, `sc-status`, `sc-bytes`, `cs-bytes`, `time-taken` e `cs-version`.

```
2020-01-19 22:48:39 203.0.113.5 198.51.100.2 GET /default.html 200 540 524 157 HTTP/1.0
2020-01-19 22:49:40 203.0.113.10 198.51.100.12 GET /index.html 200 420 324 164 HTTP/1.0
2020-01-19 22:50:12 203.0.113.12 198.51.100.4 GET /image.gif 200 324 320 358 HTTP/1.0
2020-01-19 22:51:44 203.0.113.15 198.51.100.16 GET /faq.html 200 330 324 288 HTTP/1.0
```

## Creare una tabella in Athena per i log W3C extended
<a name="querying-iis-logs-creating-a-table-in-athena-for-w3c-extended-logs"></a>

Prima di poter eseguire una query sui W3C extended, è necessario creare uno schema di tabella in modo che Athena possa leggere i dati del log.

**Per creare una tabella in Athena per i log W3C extended**

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

1. Incollare un'istruzione DDL come la seguente nella console Athena, osservando i seguenti punti:

   1. Aggiungere o rimuovere le colonne dell'esempio in modo che corrispondano ai campi dei log per cui si desidera eseguire la query.

   1. I nomi delle colonna nel formato di file di log W3C Extended contengono trattini (`-`). Tuttavia, in conformità con le [convenzioni di denominazione di Athena](tables-databases-columns-names.md), l'esempio di istruzione `CREATE TABLE` li sostituisce con trattini bassi (`_`).

   1. Per specificare uno spazio come separatore, utilizzare `FIELDS TERMINATED BY ' '`.

   1. Modificare i valori in `LOCATION 's3://amzn-s3-demo-bucket/w3c-log-folder/'` per puntare ai log W3C extended in Amazon S3.

   ```
   CREATE EXTERNAL TABLE `iis_w3c_logs`( 
     date_col string, 
     time_col string, 
     c_ip string,
     s_ip string,
     cs_method string, 
     cs_uri_stem string, 
     sc_status string,
     sc_bytes string,
     cs_bytes string,
     time_taken string,
     cs_version string
     ) 
   ROW FORMAT DELIMITED  
     FIELDS TERMINATED BY ' '  
   STORED AS INPUTFORMAT  
     'org.apache.hadoop.mapred.TextInputFormat'  
   OUTPUTFORMAT  
     'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' 
   LOCATION   's3://amzn-s3-demo-bucket/w3c-log-folder/'
   ```

1. Eseguire la query nella console Athena per registrare la tabella `iis_w3c_logs`. Al termine della query, i registri sono pronti per le query da Athena.

## Esempio di query di selezione dei log W3C Extended
<a name="querying-iis-logs-example-w3c-extended-log-select-query"></a>

Il seguente esempio di query seleziona la data, l'ora, la destinazione della richiesta e il tempo impiegato dalla tabella `iis_w3c_logs`. La clausola `WHERE` filtra per casi in cui il metodo HTTP è `GET` e il codice di stato HTTP è `200` (riuscito).

```
SELECT date_col, time_col, cs_uri_stem, time_taken
FROM iis_w3c_logs
WHERE cs_method = 'GET' AND sc_status = '200'
```

L'immagine seguente mostra i risultati della query nell'editor di query Athena.

![\[Esempio di risultati delle query in Athena dei file di log W3C Extended archiviati in Amazon S3.\]](http://docs.aws.amazon.com/it_it/athena/latest/ug/images/querying-iis-logs-1.png)


## Combinare i campi data e ora
<a name="querying-iis-logs-example-w3c-extended-log-combining-date-and-time"></a>

I campi `date` e `time` delimitati da spazio sono voci separate nei dati di origine del log, ma è possibile combinarle in una marca temporale se lo si desidera. Usa le funzioni [concat()](https://prestodb.io/docs/current/functions/string.html#concat) e [date\$1parse()](https://prestodb.io/docs/current/functions/datetime.html#date_parse) in una query [SELECT](select.md) o [CREATE TABLE AS SELECT](create-table-as.md) per concatenare e convertire le colonne di data e ora in formato marca temporale. Nell'esempio seguente viene utilizzata una query CTAS per creare una nuova tabella con una colonna `derived_timestamp`.

```
CREATE TABLE iis_w3c_logs_w_timestamp AS
SELECT 
  date_parse(concat(date_col,' ', time_col),'%Y-%m-%d %H:%i:%s') as derived_timestamp, 
  c_ip, 
  s_ip, 
  cs_method, 
  cs_uri_stem, 
  sc_status, 
  sc_bytes, 
  cs_bytes, 
  time_taken, 
  cs_version
FROM iis_w3c_logs
```

Dopo aver creato la tabella, è possibile eseguire query direttamente sulla nuova colonna della marca temporale, come nell'esempio seguente.

```
SELECT derived_timestamp, cs_uri_stem, time_taken
FROM iis_w3c_logs_w_timestamp
WHERE cs_method = 'GET' AND sc_status = '200'
```

L'immagine seguente mostra i risultati della query.

![\[Risultati delle query del file di log W3C Extended su una tabella con una colonna di marca temporale derivata.\]](http://docs.aws.amazon.com/it_it/athena/latest/ug/images/querying-iis-logs-1a.png)


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

A differenza del formato W3C Extended, il [formato del file di log IIS](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc728311(v%3dws.10)) ha un insieme fisso di campi e include una virgola come separatore. LazySimpleSerDe Tratta la virgola come delimitatore e lo spazio dopo la virgola come inizio del campo successivo.

L'esempio seguente mostra dati di esempio nel formato del file di log IIS.

```
203.0.113.15, -, 2020-02-24, 22:48:38, W3SVC2, SERVER5, 198.51.100.4, 254, 501, 488, 200, 0, GET, /index.htm, -, 
203.0.113.4, -, 2020-02-24, 22:48:39, W3SVC2, SERVER6, 198.51.100.6, 147, 411, 388, 200, 0, GET, /about.html, -, 
203.0.113.11, -, 2020-02-24, 22:48:40, W3SVC2, SERVER7, 198.51.100.18, 170, 531, 468, 200, 0, GET, /image.png, -, 
203.0.113.8, -, 2020-02-24, 22:48:41, W3SVC2, SERVER8, 198.51.100.14, 125, 711, 868, 200, 0, GET, /intro.htm, -,
```

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

Per eseguire le query sui log del formato del file di log IIS in Amazon S3, devi prima creare uno schema di tabella in modo che Athena possa leggere i dati del log.

**Per creare una tabella in Athena per i registri del formato del file di log IIS**

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

1. Incollare la seguente istruzione DDL nella console Athena, osservando i seguenti punti:

   1. Per specificare il separatore decimale, utilizzare `FIELDS TERMINATED BY ','`.

   1. Modifica i valori in LOCATION 's3://amzn-s3-demo-bucket/ *iis-log-file-folder* /' in modo che puntino ai tuoi file di log in formato di log IIS in Amazon S3.

   ```
   CREATE EXTERNAL TABLE `iis_format_logs`(
   client_ip_address string,
   user_name string,
   request_date string,
   request_time string,
   service_and_instance string,
   server_name string,
   server_ip_address string,
   time_taken_millisec string,
   client_bytes_sent string,
   server_bytes_sent string,
   service_status_code string,
   windows_status_code string,
   request_type string,
   target_of_operation string,
   script_parameters string
      )
   ROW FORMAT DELIMITED
     FIELDS TERMINATED BY ','
   STORED AS INPUTFORMAT
     'org.apache.hadoop.mapred.TextInputFormat'
   OUTPUTFORMAT
     'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
   LOCATION
     's3://amzn-s3-demo-bucket/iis-log-file-folder/'
   ```

1. Eseguire la query nella console Athena per registrare la tabella `iis_format_logs`. Al termine della query, i registri sono pronti per le query da Athena.

## Esempio di query di selezione nel formato di log IIS
<a name="querying-iis-logs-example-iis-log-format-select-query"></a>

Il seguente esempio di query seleziona la data della richiesta, l'ora della richiesta, la destinazione della richiesta e il tempo impiegato in millisecondi dalla tabella `iis_format_logs`. La clausola `WHERE` filtra per casi in cui il tipo di richiesta è `GET` e il codice di stato HTTP è `200` (riuscito). Nella query, si noti che gli spazi iniziali in `' GET'` e `' 200'` sono necessari per far sì che la query abbia esito positivo. 

```
SELECT request_date, request_time, target_of_operation, time_taken_millisec
FROM iis_format_logs
WHERE request_type = ' GET' AND service_status_code = ' 200'
```

L'immagine seguente mostra i risultati della query dei dati di esempio.

![\[Esempio di risultati delle query in Athena dei file di log nel formato del file di log W3C Extended archiviati in Amazon S3.\]](http://docs.aws.amazon.com/it_it/athena/latest/ug/images/querying-iis-logs-2.png)


# 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)
