

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

# Kueri log server web yang disimpan di Amazon S3
<a name="querying-web-server-logs"></a>

Anda dapat menggunakan Athena untuk mengkueri log server Web yang disimpan di Amazon S3. Topik di bagian ini menunjukkan cara membuat tabel di Athena untuk meminta log server Web dalam berbagai format.

**Topics**
+ [Kueri log Apache disimpan di Amazon S3](querying-apache-logs.md)
+ [Log kueri server informasi internet (IIS) yang disimpan di Amazon S3](querying-iis-logs.md)

# 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
```

# Log kueri server informasi internet (IIS) yang disimpan di Amazon S3
<a name="querying-iis-logs"></a>

Anda dapat menggunakan Amazon Athena untuk mengkueri log server web Microsoft Internet Information Services (IIS) disimpan dalam akun Amazon S3 Anda. Sementara IIS menggunakan [berbagai](https://docs.microsoft.com/en-us/previous-versions/iis/6.0-sdk/ms525807(v%3Dvs.90)) format berkas log, topik ini menunjukkan cara membuat tabel skema untuk mengkueri W3C diperpanjang dan log format berkas log IIS dari Athena.

Karena format file log W3C diperluas dan IIS menggunakan pembatas karakter tunggal (spasi dan koma, masing-masing) dan tidak memiliki nilai terlampir dalam tanda kutip, Anda dapat menggunakan untuk membuat tabel Athena untuk mereka. [LazySimpleSerDe](lazy-simple-serde.md)

**Topics**
+ [Kueri format file log diperpanjang W3C](querying-iis-logs-w3c-extended-log-file-format.md)
+ [Kueri format file log IIS](querying-iis-logs-iis-log-file-format.md)
+ [Kueri format file log NCSA](querying-iis-logs-ncsa-log-file-format.md)

# Kueri format file log diperpanjang W3C
<a name="querying-iis-logs-w3c-extended-log-file-format"></a>

Format data berkas log [W3C extended](https://docs.microsoft.com/en-us/windows/win32/http/w3c-logging) 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
<a name="querying-iis-logs-creating-a-table-in-athena-for-w3c-extended-logs"></a>

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/](https://console.aws.amazon.com/athena/home).

1. Paste pernyataan DDL seperti berikut ke konsol Athena, mencatat hal-hal berikut:

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

   1. Nama kolom dalam format berkas log diperluas W3C berisi tanda hubung (`-`). Namun, sesuai dengan [Konvensi penamaan Athena](tables-databases-columns-names.md), contoh pernyataan `CREATE TABLE` menggantikannya dengan garis bawah (`_`).

   1. Untuk menentukan pembatas ruang, gunakan. `FIELDS TERMINATED BY ' '`

   1. Modifikasi nilai di`LOCATION '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/'
   ```

1. 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
<a name="querying-iis-logs-example-w3c-extended-log-select-query"></a>

Contoh kueri berikut memilih tanggal, waktu, permintaan target, dan waktu yang dibutuhkan untuk permintaan dari tabel `iis_w3c_logs`. Klausa `WHERE` memfilter untuk kasus dengan metode HTTP adalah `GET` dan kode status HTTP adalah `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.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/querying-iis-logs-1.png)


## Gabungkan bidang tanggal dan waktu
<a name="querying-iis-logs-example-w3c-extended-log-combining-date-and-time"></a>

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 ()](https://prestodb.io/docs/current/functions/string.html#concat) dan [date\$1parse ()](https://prestodb.io/docs/current/functions/datetime.html#date_parse) di kueri[SELECT](select.md) atau [CREATE TABLE AS SELECT](create-table-as.md) untuk menggabungkan dan mengonversi tanggal dan waktu kolom ke dalam format stempel waktu. Contoh berikut menggunakan kueri CTAS untuk membuat tabel baru dengan kolom `derived_timestamp`.

```
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.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/querying-iis-logs-1a.png)


# Kueri format file log IIS
<a name="querying-iis-logs-iis-log-file-format"></a>

Berbeda dengan format W3C extended, [format berkas log IIS](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc728311(v%3dws.10)) memiliki seperangkat bidang tetap dan termasuk koma sebagai pembatas. LazySimpleSerDe Perlakukan koma sebagai pembatas dan spasi setelah koma sebagai awal bidang berikutnya.

Contoh berikut menunjukkan data sampel dalam format berkas log IIS.

```
203.0.113.15, -, 2020-02-24, 22:48:38, W3SVC2, SERVER5, 198.51.100.4, 254, 501, 488, 200, 0, GET, /index.htm, -, 
203.0.113.4, -, 2020-02-24, 22:48:39, W3SVC2, SERVER6, 198.51.100.6, 147, 411, 388, 200, 0, GET, /about.html, -, 
203.0.113.11, -, 2020-02-24, 22:48:40, W3SVC2, SERVER7, 198.51.100.18, 170, 531, 468, 200, 0, GET, /image.png, -, 
203.0.113.8, -, 2020-02-24, 22:48:41, W3SVC2, SERVER8, 198.51.100.14, 125, 711, 868, 200, 0, GET, /intro.htm, -,
```

## Buat tabel di Athena untuk file log IIS
<a name="querying-iis-logs-creating-a-table-in-athena-for-iis-log-files"></a>

Untuk kueri log format berkas log IIS Anda di Amazon S3, Anda pertama kali membuat skema tabel sehingga Athena dapat membaca data log.

**Untuk membuat tabel di Athena untuk log format berkas log IIS**

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

1. Paste pernyataan DDL berikut ke konsol Athena, mencatat poin-poin berikut:

   1. Untuk menentukan pembatas koma, gunakan `FIELDS TERMINATED BY ','`.

   1. Ubah nilai di LOCATION 's3://amzn-s3-demo-bucket/ *iis-log-file-folder* /' untuk menunjuk ke file log format log IIS Anda di Amazon S3.

   ```
   CREATE EXTERNAL TABLE `iis_format_logs`(
   client_ip_address string,
   user_name string,
   request_date string,
   request_time string,
   service_and_instance string,
   server_name string,
   server_ip_address string,
   time_taken_millisec string,
   client_bytes_sent string,
   server_bytes_sent string,
   service_status_code string,
   windows_status_code string,
   request_type string,
   target_of_operation string,
   script_parameters 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/iis-log-file-folder/'
   ```

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

## Contoh kueri pilih format log IIS
<a name="querying-iis-logs-example-iis-log-format-select-query"></a>

Contoh kueri berikut memilih tanggal permintaan, permintaan waktu, permintaan target, dan waktu yang dibutuhkan dalam milidetik dari tabel `iis_format_logs`. Klausa `WHERE` memfilter untuk kasus dengan tipe permintaan adalah `GET` dan kode status HTTP adalah `200` (berhasil). Dalam kueri, perhatikan bahwa spasi utama masuk `' GET'` dan `' 200'` diperlukan untuk membuat kueri berhasil. 

```
SELECT request_date, request_time, target_of_operation, time_taken_millisec
FROM iis_format_logs
WHERE request_type = ' GET' AND service_status_code = ' 200'
```

Gambar berikut menunjukkan hasil kueri data sampel.

![\[Contoh hasil kueri di Athena dari berkas log format berkas log IIS yang disimpan di Amazon S3.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/querying-iis-logs-2.png)


# Kueri format file log NCSA
<a name="querying-iis-logs-ncsa-log-file-format"></a>

IIS juga menggunakan format [logging NCSA](https://docs.microsoft.com/en-us/windows/win32/http/ncsa-logging), yang memiliki jumlah bidang tetap dalam format teks ASCII yang dipisahkan oleh spasi. Struktur ini mirip dengan format log umum yang digunakan untuk log akses Apache. Kolom dalam format data log umum NCSA termasuk alamat IP klien, ID klien (tidak biasanya digunakan), domain\$1 user ID, permintaan diterima stempel waktu, teks permintaan klien, kode status server, dan ukuran objek kembali ke klien.

Contoh berikut menunjukkan data dalam format log umum NCSA sebagai didokumentasikan untuk IIS.

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

## Buat tabel di Athena untuk log IIS NCSA
<a name="querying-iis-logs-ncsa-creating-a-table-in-athena"></a>

Untuk`CREATE TABLE`pernyataan, Anda dapat menggunakan[Grok SerDe](grok-serde.md)dan pola grok yang mirip dengan yang[Log server web Apache](querying-apache-logs.md). Tidak seperti Apache log, pola grok menggunakan`%{DATA:user_id}`untuk bidang ketiga, bukan`%{USERNAME:user_id}`untuk memperhitungkan adanya backslash di`domain\user_id`. *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 IIS NCSA**

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

1. Paste pernyataan DDL berikut ke Editor Kueri Athena. Modifikasi nilai di`LOCATION 's3://amzn-s3-demo-bucket/iis-ncsa-logs/'`Untuk menunjuk ke log IIS NCSA di Amazon S3.

   ```
   CREATE EXTERNAL TABLE iis_ncsa_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} %{DATA: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/iis-ncsa-logs/';
   ```

1. Menjalankan kueri di konsol Athena untuk mendaftar`iis_ncsa_logs`Tabel. Saat permintaan selesai, log siap bagi Anda untuk mengkueri dari Athena.

## Contoh kueri pilih untuk log IIS NCSA
<a name="querying-iis-logs-ncsa-example-select-queries"></a>

**Example – Pemfilteran untuk kesalahan 404**  
Contoh kueri berikut memilih waktu permintaan diterima, teks permintaan klien, dan kode status server dari tabel `iis_ncsa_logs`. Klausa `WHERE` memfilter untuk kode status HTTP`404` (halaman tidak ditemukan).  

```
SELECT request_received_time, client_request, server_status
FROM iis_ncsa_logs
WHERE server_status = '404'
```
Gambar berikut menunjukkan hasil kueri di Editor Kueri Athena.  

![\[Kueri log IIS NCSA dari Athena untuk HTTP404Entri.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/querying-iis-logs-3.png)


**Example – Memfilter untuk permintaan sukses dari domain tertentu**  
Contoh kueri berikut memilih ID pengguna, waktu permintaan diterima, teks permintaan klien, dan kode status server dari tabel `iis_ncsa_logs`. Klausa `WHERE` memfilter untuk permintaan dengan kode status HTTP `200` (berhasil) dari pengguna di domain `AnyCompany`.  

```
SELECT user_id, request_received_time, client_request, server_status
FROM iis_ncsa_logs
WHERE server_status = '200' AND user_id LIKE 'AnyCompany%'
```
Gambar berikut menunjukkan hasil kueri di Editor Kueri Athena.  

![\[Kueri log IIS NCSA dari Athena untuk HTTP200Entri.\]](http://docs.aws.amazon.com/id_id/athena/latest/ug/images/querying-iis-logs-4.png)
