Kueri log Apache 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.

Kueri log Apache 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

Buat 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 DDL pernyataan berikut ke Athena Query Editor. Modifikasi nilai di LOCATION 's3://amzn-s3-demo-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://amzn-s3-demo-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.

Kueri contoh

contoh — Filter untuk 404 kesalahan

Contoh kueri berikut memilih waktu permintaan diterima, teks permintaan klien, dan kode status server dari tabel apache_logs. Filter WHERE klausa untuk kode HTTP status 404 (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.

Meminta log Apache dari Athena untuk entri. HTTP 404
contoh — Filter untuk permintaan yang berhasil

Contoh kueri berikut memilih ID pengguna, waktu permintaan diterima, teks permintaan klien, dan kode status server dari tabel apache_logs. Filter WHERE klausa untuk kode HTTP status 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.

Meminta log Apache dari Athena untuk entri. HTTP 200
contoh — Filter 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