

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
<a name="querying-apache-logs"></a>

Anda dapat menggunakan Amazon Athena untuk menanyakan [file log Apache HTTP Server](https://httpd.apache.org/docs/2.4/logs.html) yang disimpan di akun Amazon S3 Anda. Topik ini menunjukkan cara membuat skema tabel untuk menanyakan file [log Apache Access](https://httpd.apache.org/docs/2.4/logs.html#accesslog) 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
<a name="querying-apache-logs-creating-a-table-in-athena"></a>

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](grok-serde.md). *Untuk informasi selengkapnya tentang menggunakan Grok SerDe, lihat [Menulis pengklasifikasi kustom grok di Panduan Pengembang](https://docs.aws.amazon.com/glue/latest/dg/custom-classifier.html#custom-classifier-grok).AWS Glue *

**Untuk membuat tabel di Athena untuk log server web Apache**

1. Buka konsol Athena di [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Tempelkan pernyataan DDL berikut ke Editor Kueri Athena. 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}}/';
   ```

1. jalankan kueri di konsol Athena untuk mendaftarkan tabel `apache_logs`. Saat permintaan selesai, log siap bagi Anda untuk mengkueri dari Athena.

### Kueri contoh
<a name="querying-apache-logs-example-select-queries"></a>

**Example — Filter untuk 404 kesalahan**  
Contoh kueri berikut memilih waktu permintaan diterima, teks permintaan klien, dan kode status server dari tabel `apache_logs`. Klausa `WHERE` memfilter untuk kode status HTTP`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.  

![Mengkueri log Apache dari Athena untuk entri 404 HTTP.](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/querying-apache-logs-1.png)


**Example — 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`. 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.](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/querying-apache-logs-2.png)


**Example — 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
```