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
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
Buka konsol Athena di https://console.aws.amazon.com/athena/
. -
Tempelkan DDL pernyataan berikut ke Athena Query Editor. Modifikasi nilai di
LOCATION 's3://amzn-s3-demo-bucket/
untuk mengarahkan ke log Apache Anda di Amazon S3.apache-log-folder
/'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
/'; -
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.
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.
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