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
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 IIS NCSA
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'uso 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.