

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 del server web archiviati in Amazon S3
<a name="querying-web-server-logs"></a>

È possibile utilizzare Athena per interrogare i log dei server Web archiviati in Amazon S3. Gli argomenti di questa sezione mostrano come creare tabelle in Athena per eseguire query sui log del server Web in formati diversi.

**Topics**
+ [Eseguire query sui log Apache archiviati in Amazon S3](querying-apache-logs.md)
+ [Eseguire query sui log Internet Information Server (IIS) archiviati in Amazon S3](querying-iis-logs.md)

# Eseguire query sui log Apache archiviati in Amazon S3
<a name="querying-apache-logs"></a>

Puoi utilizzarlo Amazon Athena per interrogare i [file di log del server HTTP Apache](https://httpd.apache.org/docs/2.4/logs.html) archiviati nel tuo account Amazon S3. Questo argomento illustra come utilizzare schemi di tabelle per eseguire query sui file [Log di accesso](https://httpd.apache.org/docs/2.4/logs.html#accesslog) Apache nel formato di log comune.

I campi nel formato di log comune includono l'indirizzo IP del client, l'ID del client, l'ID utente, 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.

I dati dell'esempio seguente mostrano il formato comune di log per Apache.

```
198.51.100.7 - Li [10/Oct/2019:13:55:36 -0700] "GET /logo.gif HTTP/1.0" 200 232
198.51.100.14 - Jorge [24/Nov/2019:10:49:52 -0700] "GET /index.html HTTP/1.1" 200 2165
198.51.100.22 - Mateo [27/Dec/2019:11:38:12 -0700] "GET /about.html HTTP/1.1" 200 1287
198.51.100.9 - Nikki [11/Jan/2020:11:40:11 -0700] "GET /image.png HTTP/1.1" 404 230
198.51.100.2 - Ana [15/Feb/2019:10:12:22 -0700] "GET /favicon.ico HTTP/1.1" 404 30
198.51.100.13 - Saanvi [14/Mar/2019:11:40:33 -0700] "GET /intro.html HTTP/1.1" 200 1608
198.51.100.11 - 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 Apache
<a name="querying-apache-logs-creating-a-table-in-athena"></a>

Prima di poter eseguire query sui log Apache archiviati in Amazon S3, è necessario creare uno schema di tabella per Athena in modo che possa leggere i dati di log. Per creare una tabella Athena per i log Apache, è possibile utilizzare [Grok SerDe](grok-serde.md). *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 Apache**

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/apache-log-folder/'` per puntare ai log Apache in Amazon S3.

   ```
   CREATE EXTERNAL TABLE apache_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} %{USERNAME: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/apache-log-folder/';
   ```

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

### Query di esempio
<a name="querying-apache-logs-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 `apache_logs`. La clausola `WHERE` filtra per codice di stato HTTP `404` (pagina non trovata).  

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

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


**Example — Filtrare per richieste riuscite**  
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 `apache_logs`. I filtri della clausola `WHERE` per il codice di stato HTTP `200` (riuscito).  

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

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


**Example — Filtrare per timestamp**  
L'esempio seguente cerca i record il cui tempo di ricezione della richiesta è maggiore del timestamp specificato.  

```
SELECT * FROM apache_logs WHERE request_received_time > 10/Oct/2023:00:00:00
```

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