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à.
IIS utilizza anche il formato NCSA Logging
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 NCSA di IIS
Per l'istruzione CREATE TABLE
, è possibile utilizzare Grok SerDe e un modello Grok simile a quello per i log dei server Web Apache. 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'utilizzo di Grok SerDe, consulta Writing grok Custom Classifiers nella Developer Guide.AWS Glue
Per creare una tabella in Athena per i log del server Web IIS NCSA
Apri la console Athena all'indirizzo https://console.aws.amazon.com/athena/
. -
Copiare e incollare la seguente istruzione DDL nella console Athena Query Editor. Modificare i valori in
LOCATION 's3://amzn-s3-demo-bucket/
per puntare ai log IIS NCSA in Amazon S3.iis-ncsa-logs
/'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
/'; -
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
Esempio — 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.

Esempio — 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.
