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à.
Interroga il formato del file di registro esteso W3C
Il formato dei dati del file di log W3C extendeddate,
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 estesi del W3C
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
Apri la console Athena all'indirizzo https://console.aws.amazon.com/athena/
. -
Incolla un'DDListruzione come la seguente nella console Athena, prendendo nota dei seguenti punti:
-
Aggiungere o rimuovere le colonne dell'esempio in modo che corrispondano ai campi dei log per cui si desidera eseguire la query.
-
I nomi delle colonna nel formato di file di log W3C Extended contengono trattini (
-
). Tuttavia, in conformità con le convenzioni di denominazione di Athena, l'esempio di istruzioneCREATE TABLE
li sostituisce con trattini bassi (_
). -
Per specificare uno spazio come separatore, utilizzare
FIELDS TERMINATED BY ' '
. -
Modificare i valori in
LOCATION 's3://amzn-s3-demo-bucket/
per puntare ai log W3C extended in Amazon S3.w3c-log-folder
/'
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
/' -
-
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
Il seguente esempio di query seleziona la data, l'ora, la destinazione della richiesta e il tempo impiegato dalla tabella iis_w3c_logs
. La WHERE
clausola filtra i casi in cui il HTTP metodo è valido GET
e il codice di HTTP stato è 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.
Combina i campi di data e ora
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. Utilizzate le funzioni concat ()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.