Interroga il formato del file di registro esteso W3C - Amazon Athena

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 extended 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 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
  1. Apri la console Athena all'indirizzo https://console.aws.amazon.com/athena/.

  2. Incolla un'DDListruzione come la seguente nella console Athena, prendendo nota dei 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.

    2. 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 istruzione CREATE TABLE li sostituisce con trattini bassi (_).

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

    4. 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/'
  3. 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.

Esempio di risultati delle query in Athena dei file di log W3C Extended archiviati in Amazon S3.

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 () e date_parse () in una SELECT query SELECTo CREATETABLEAS per concatenare e convertire le colonne di data e ora in formato timestamp. L'esempio seguente utilizza una query per creare una nuova tabella con una colonnaCTAS. 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.