Menanyakan log Apache yang disimpan di Amazon S3 - Amazon Athena

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

Menanyakan log Apache yang disimpan di Amazon S3

Anda dapat menggunakan Amazon Athena untuk menanyakan file log Apache HTTP Server yang disimpan di akun Amazon S3 Anda. Topik ini menunjukkan cara membuat skema tabel untuk menanyakan file log Apache Access dalam format log umum.

Bidang dalam format log umum termasuk alamat IP klien, ID klien, ID pengguna, permintaan diterima stempel waktu, teks permintaan klien, kode status server, dan ukuran objek kembali ke klien.

Contoh data berikut menunjukkan Apache format log umum.

198.51.100.7 - Li [10/Oct/2019:13:55:36 -0700] "GET /logo.gif HTTP/1.0" 200 232 198.51.100.14 - Jorge [24/Nov/2019:10:49:52 -0700] "GET /index.html HTTP/1.1" 200 2165 198.51.100.22 - Mateo [27/Dec/2019:11:38:12 -0700] "GET /about.html HTTP/1.1" 200 1287 198.51.100.9 - Nikki [11/Jan/2020:11:40:11 -0700] "GET /image.png HTTP/1.1" 404 230 198.51.100.2 - Ana [15/Feb/2019:10:12:22 -0700] "GET /favicon.ico HTTP/1.1" 404 30 198.51.100.13 - Saanvi [14/Mar/2019:11:40:33 -0700] "GET /intro.html HTTP/1.1" 200 1608 198.51.100.11 - Xiulan [22/Apr/2019:10:51:34 -0700] "GET /group/index.html HTTP/1.1" 200 1344

Membuat tabel di Athena untuk log Apache

Sebelum Anda dapat meminta log Apache disimpan di Amazon S3, Anda harus membuat skema tabel untuk Athena sehingga dapat membaca data log. Untuk membuat tabel Athena untuk Apache log, Anda dapat menggunakan Grok SerDe. Untuk informasi selengkapnya tentang menggunakan Grok SerDe, lihat Menulis pengklasifikasi kustom grok di Panduan Pengembang.AWS Glue

Untuk membuat tabel di Athena untuk log server web Apache
  1. Buka konsol Athena di https://console.aws.amazon.com/athena/.

  2. Tempelkan pernyataan DDL berikut ke Editor Kueri Athena. Modifikasi nilai di LOCATION 's3://DOC-EXAMPLE-BUCKET/apache-log-folder/' untuk mengarahkan ke log Apache Anda di Amazon S3.

    CREATE EXTERNAL TABLE apache_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} %{USERNAME: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://DOC-EXAMPLE-BUCKET/apache-log-folder/';
  3. jalankan kueri di konsol Athena untuk mendaftarkan tabel apache_logs. Saat permintaan selesai, log siap bagi Anda untuk mengkueri dari Athena.

Contoh kueri pilih untuk log Apache

contoh – Pemfilteran untuk kesalahan 404

Contoh kueri berikut memilih waktu permintaan diterima, teks permintaan klien, dan kode status server dari tabel apache_logs. Klausa WHERE memfilter untuk kode status HTTP404 (halaman tidak ditemukan).

SELECT request_received_time, client_request, server_status FROM apache_logs WHERE server_status = '404'

Gambar berikut menunjukkan hasil kueri di Editor Kueri Athena.

Mengkueri log Apache dari Athena untuk entri 404 HTTP.
contoh – Memfilter untuk permintaan yang berhasil

Contoh kueri berikut memilih ID pengguna, waktu permintaan diterima, teks permintaan klien, dan kode status server dari tabel apache_logs. Klausa WHERE memfilter untuk kode status HTTP 200 (berhasil).

SELECT user_id, request_received_time, client_request, server_status FROM apache_logs WHERE server_status = '200'

Gambar berikut menunjukkan hasil kueri di Editor Kueri Athena.

Mengkueri log Apache dari Athena untuk entri 200 HTTP.
contoh — Penyaringan dengan stempel waktu

Contoh kueri berikut untuk catatan yang permintaannya diterima waktu lebih besar dari stempel waktu yang ditentukan.

SELECT * FROM apache_logs WHERE request_received_time > 10/Oct/2023:00:00:00