Topik ini menjelaskan cara melakukan kueri dan analisis log website di Konsol Simple Log Service.
Prasyarat
Log akses website telah dikumpulkan dan konfigurasi Logtail telah dibuat. Untuk informasi selengkapnya, lihat Kumpulkan log teks dari server.
Langkah 1: Buat indeks
Anda hanya dapat melakukan kueri dan analisis log setelah membuat indeks. Simple Log Service mendukung indeks teks penuh dan indeks bidang. Untuk informasi selengkapnya, lihat Buat indeks. Pada topik ini, indeks bidang dibuat untuk log akses website.
Masuk ke Konsol Simple Log Service.
Pada bagian Projects, klik project yang diinginkan.

Pada tab , klik penyimpanan log yang diinginkan.

-
Di pojok kanan atas halaman kueri dan analisis, pilih . Jika Anda belum mengaktifkan pengindeksan, klik Enable Indexing.
Konfigurasikan indeks bidang, lalu klik OK. Anda dapat menambahkan indeks bidang satu per satu secara manual atau klik Automatic Index Generation. Simple Log Service akan secara otomatis menghasilkan indeks bidang berdasarkan log pertama dalam hasil pratinjau pengumpulan data.
PentingFitur pengindeksan hanya berlaku untuk data log yang ditulis ke Logstore setelah Anda mengonfigurasi indeks. Jika ingin melakukan kueri terhadap data historis, Anda dapat menggunakan fitur pengindeksan ulang. Untuk informasi selengkapnya, lihat Pengindeksan ulang log untuk Logstore.
Jika ingin menjalankan pernyataan SQL SELECT untuk analisis, Anda harus mengaktifkan Enable Analytics untuk bidang-bidang yang ingin dianalisis saat mengonfigurasi indeks.
Indeks dikonfigurasi secara otomatis untuk beberapa bidang tercadang di Simple Log Service. Untuk informasi selengkapnya, lihat Bidang tercadang.

Langkah 2: Lakukan kueri dan analisis log
Untuk informasi selengkapnya tentang cara melakukan kueri dan analisis log di konsol, lihat Kueri dan analisis log. Anda harus menggunakan pernyataan analitik bersamaan dengan pernyataan pencarian dalam format Pernyataan pencarian|Pernyataan analitik. Pernyataan pencarian dapat dijalankan sendiri, tetapi pernyataan analitik harus dijalankan bersamaan dengan pernyataan pencarian.
Secara default, hanya 100 baris data yang dikembalikan setelah Anda menjalankan pernyataan kueri. Anda dapat menggunakan klausa LIMIT untuk mengubah jumlah baris yang dikembalikan. Untuk informasi selengkapnya, lihat Klausa LIMIT.
Pernyataan pencarian
Untuk mengkueri entri log yang berisi Chrome, jalankan pernyataan pencarian berikut:
ChromeUntuk mengkueri entri log yang durasi permintaannya lebih dari 60 detik, jalankan pernyataan pencarian berikut:
request_time > 60Untuk mengkueri entri log yang durasi permintaannya berkisar antara 60 hingga 120 detik, jalankan pernyataan pencarian berikut:
request_time in [60 120]Untuk mengkueri entri log yang mencatat permintaan GET berhasil (kode status: 200 hingga 299), jalankan pernyataan pencarian berikut:
request_method : GET and status in [200 299]Untuk mengkueri entri log yang nilai bidang
request_uri-nya adalah/request/path-2, jalankan pernyataan pencarian berikut:request_uri:/request/path-2/file-2
Pernyataan analisis
Hitung jumlah tampilan halaman (PV) sebuah website.
Gunakan fungsi count untuk menghitung PV website.
* | SELECT count(*) AS PV
Hitung PV website per 1 menit.
Gunakan fungsi date_trunc untuk memotong waktu per menit dan gunakan klausa GROUP BY untuk mengelompokkan hasil analisis berdasarkan waktu. Kemudian, gunakan fungsi count untuk menghitung jumlah PV per menit dan gunakan klausa ORDER BY untuk mengurutkan hasil analisis berdasarkan waktu.
* | SELECT count(*) as PV, date_trunc('minute', __time__) as time GROUP BY time ORDER BY time
Hitung jumlah permintaan untuk setiap metode permintaan per 5 menit.
Gunakan
__time__ - __time__ %300untuk memotong waktu per 5 menit dan gunakan klausa GROUP BY untuk mengelompokkan hasil analisis berdasarkan waktu. Kemudian, gunakan fungsi count untuk menghitung jumlah permintaan setiap 5 menit dan gunakan klausa ORDER BY untuk mengurutkan hasil analisis berdasarkan waktu.* | SELECT request_method, count(*) as count, __time__ - __time__ %300 as time GROUP BY time, request_method ORDER BY time
-
Bandingkan jumlah PV minggu ini dengan jumlah PV minggu lalu.
Gunakan fungsi count untuk menghitung total jumlah PV. Kemudian, gunakan fungsi ts_compare untuk memperoleh perbandingan minggu ke minggu. Dalam kueri ini,
website_logadalah nama Logstore.* | SELECT diff[1] as this_week, diff[2] as last_week, time FROM (SELECT ts_compare(pv, 604800) as diff, time FROM (SELECT COUNT(*) as pv, date_trunc('week', __time__) as time FROM website_log GROUP BY time ORDER BY time) GROUP BY time)
Kumpulkan statistik distribusi alamat IP client.
Gunakan fungsi ip_to_province untuk memperoleh provinsi tempat alamat IP berada, dan gunakan klausa GROUP BY untuk mengelompokkan hasil analisis berdasarkan provinsi. Kemudian, gunakan fungsi count untuk menghitung jumlah kemunculan setiap alamat IP, dan gunakan klausa ORDER BY untuk mengurutkan hasil analisis berdasarkan jumlah kemunculan.
* | SELECT count(*) as count, ip_to_province(client_ip) as address GROUP BY address ORDER BY count DESC
Hitung 10 URI permintaan yang paling sering diakses.
Gunakan klausa GROUP BY untuk mengelompokkan hasil analisis berdasarkan URI permintaan. Gunakan fungsi count untuk menghitung jumlah permintaan akses untuk setiap URI. Kemudian, gunakan klausa ORDER BY untuk mengurutkan hasil analisis berdasarkan jumlah permintaan akses.
* | SELECT count(*) as PV, request_uri as PATH GROUP BY PATH ORDER BY PV DESC LIMIT 10
-
Kueri entri log yang nilai bidang
request_uri-nya diakhiri dengan%file-7.PentingDalam pernyataan kueri, karakter wildcard asterisk (*) dan tanda tanya (?) digunakan untuk pencarian fuzzy. Karakter wildcard harus digunakan di tengah atau di akhir kata. Jika ingin mengkueri bidang yang diakhiri dengan karakter tertentu, Anda dapat menggunakan operator LIKE dalam pernyataan analitik.
* | select * from website_log where request_uri like '%file-7'Dalam pernyataan ini,
website_logadalah nama Logstore.
Hitung statistik URI permintaan yang diakses.
Gunakan fungsi regexp_extract untuk mengekstrak bagian file dari bidang
request_uri. Kemudian, gunakan fungsi count untuk menghitung jumlah permintaan akses untuk setiap URI.* | SELECT regexp_extract(request_uri, '.*\/(file.*)', 1) file, count(*) as count group by file
Kueri entri log yang nilai bidang
request_uri-nya berisi%abc%.* | SELECT * where request_uri like '%/%abc/%%' escape '/'
Contoh log akses website
__tag__:__client_ip__:192.0.2.0
__tag__:__receive_time__:1609985755
__source__:198.51.100.0
__topic__:website_access_log
body_bytes_sent:4512
client_ip:198.51.100.10
host:example.com
http_host:example.com
http_user_agent:Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
http_x_forwarded_for:198.51.100.1
instance_id:i-02
instance_name:instance-01
network_type:vlan
owner_id:%abc%-01
referer:example.com
region:cn-shanghai
remote_addr:203.0.113.0
remote_user:neb
request_length:4103
request_method:POST
request_time:69
request_uri:/request/path-1/file-0
scheme:https
server_protocol:HTTP/2.0
slbid:slb-02
status:200
time_local:07/Jan/2021:02:15:53
upstream_addr:203.0.113.10
upstream_response_time:43
upstream_status:200
user_agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.33 (KHTML, like Gecko) Ubuntu/9.10 Chromium/13.0.752.0 Chrome/13.0.752.0 Safari/534.33
vip_addr:192.0.2.2
vpc_id:3db327b1****82df19818a72