Kueri format file log diperpanjang W3C - Amazon Athena

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kueri format file log diperpanjang W3C

Format data berkas log W3C extended memiliki bidang yang dipisahkan dengan spasi. Bidang yang muncul di log diperpanjang W3C ditentukan oleh administrator server web yang memilih bidang log yang akan disertakan. Data log contoh berikut memiliki bidang date, time, c-ip, s-ip, cs-method, cs-uri-stem, sc-status, sc-bytes, cs-bytes, time-taken, dan 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

Buat tabel di Athena untuk log diperpanjang W3C

Sebelum Anda dapat mengkueri log W3C diperpanjang Anda, Anda harus membuat skema tabel sehingga Athena dapat membaca data log.

Untuk membuat tabel di Athena untuk log diperpanjang W3C
  1. Buka konsol Athena di https://console.aws.amazon.com/athena/.

  2. Tempelkan DDL pernyataan seperti berikut ini ke konsol Athena, perhatikan poin-poin berikut:

    1. Menambahkan atau menghapus kolom dalam contoh untuk sesuai dengan bidang di log yang ingin Anda kueri.

    2. Nama kolom dalam format berkas log diperluas W3C berisi tanda hubung (-). Namun, sesuai dengan Konvensi penamaan Athena, contoh pernyataan CREATE TABLE menggantikannya dengan garis bawah (_).

    3. Untuk menentukan pembatas ruang, gunakan. FIELDS TERMINATED BY ' '

    4. Modifikasi nilai diLOCATION 's3://amzn-s3-demo-bucket/w3c-log-folder/' untuk menunjuk ke W3C extended log Anda di 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. Jalankan kueri di konsol Athena untuk mendaftarkan tabel iis_w3c_logs. Saat permintaan selesai, log siap bagi Anda untuk mengkueri dari Athena.

Contoh kueri pilih log diperpanjang W3C

Contoh kueri berikut memilih tanggal, waktu, permintaan target, dan waktu yang dibutuhkan untuk permintaan dari tabel iis_w3c_logs. Filter WHERE klausa untuk kasus di mana HTTP metode ini GET dan kode HTTP status 200 (berhasil).

SELECT date_col, time_col, cs_uri_stem, time_taken FROM iis_w3c_logs WHERE cs_method = 'GET' AND sc_status = '200'

Gambar berikut menunjukkan hasil kueri di Editor Kueri Athena.

Contoh hasil kueri di Athena dari berkas log W3C extended yang disimpan di Amazon S3.

Gabungkan bidang tanggal dan waktu

Bidang date dan time yang dibatasi spasi adalah entri terpisah dalam data sumber log, tetapi dapat menggabungkan mereka ke stempel waktu jika Anda ingin. Gunakan fungsi concat () dan date_parse () dalam SELECT kueri SELECTatau CREATETABLEAS untuk menggabungkan dan mengonversi kolom tanggal dan waktu menjadi format stempel waktu. Contoh berikut menggunakan CTAS query untuk membuat tabel baru dengan derived_timestamp kolom.

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

Setelah tabel dibuat, Anda dapat mengkueri kolom stempel waktu baru langsung, seperti dalam contoh berikut.

SELECT derived_timestamp, cs_uri_stem, time_taken FROM iis_w3c_logs_w_timestamp WHERE cs_method = 'GET' AND sc_status = '200'

Gambar berikut menunjukkan hasil kueri.

W3C diperpanjang hasil permintaan berkas log di atas tabel dengan kolom stempel waktu berasal.