Topik ini menjelaskan cara mengkueri dan menganalisis log situs web di konsol Simple Log Service.
Prasyarat
Log akses situs web telah dikumpulkan, dan konfigurasi Logtail telah dibuat. Untuk informasi lebih lanjut, lihat Kumpulkan log teks dari server.
Langkah 1: Buat indeks
Anda hanya dapat mengkueri dan menganalisis log setelah membuat indeks. Simple Log Service mendukung indeks teks penuh dan indeks bidang. Untuk informasi lebih lanjut, lihat Buat Indeks. Dalam topik ini, indeks bidang dibuat untuk log akses situs web.
Masuk ke konsol Simple Log Service.
Di bagian Projects, klik proyek yang ingin Anda kelola.

Pada tab , klik Logstore yang ingin Anda kelola.

Di pojok kanan atas halaman, pilih . Jika fitur pengindeksan tidak diaktifkan, klik Enable.
Konfigurasikan indeks bidang dan klik OK. Anda dapat menambahkan indeks bidang secara manual satu per satu atau klik Automatic Index Generation. Simple Log Service secara otomatis menghasilkan indeks bidang berdasarkan log pertama dalam hasil pratinjau pengumpulan data.
PentingFitur pengindeksan hanya berlaku untuk data log yang ditulis ke Logstore saat ini setelah Anda mengonfigurasi indeks. Jika Anda ingin mengkueri data historis, gunakan fitur pengindeksan ulang. Untuk informasi lebih lanjut, lihat Indeks Ulang Log untuk Logstore.
Jika Anda ingin mengeksekusi pernyataan SQL SELECT untuk analisis, aktifkan Analitik untuk bidang yang ingin Anda analisis saat mengonfigurasi indeks.
Indeks secara otomatis dikonfigurasikan untuk beberapa bidang cadangan di Simple Log Service. Untuk informasi lebih lanjut, lihat Bidang Cadangan.

Langkah 2: Kueri dan analisis log
Untuk informasi lebih lanjut tentang cara mengkueri dan menganalisis log di konsol, lihat Kueri dan Analisis Log. Anda harus menggunakan pernyataan analitik bersama dengan pernyataan pencarian dalam format Pernyataan Pencarian|Pernyataan Analitik. Pernyataan pencarian dapat dieksekusi sendiri, tetapi pernyataan analitik harus dieksekusi bersama dengan pernyataan pencarian.
Secara default, hanya 100 baris data yang dikembalikan setelah Anda mengeksekusi pernyataan kueri. Anda dapat menggunakan klausa LIMIT untuk mengubah jumlah baris yang dikembalikan. Untuk informasi lebih lanjut, lihat Klausa LIMIT.
Pernyataan pencarian
Untuk mengkueri entri log yang mengandung Chrome, eksekusi pernyataan pencarian berikut:
ChromeUntuk mengkueri entri log yang durasi permintaannya lebih dari 60 detik, eksekusi pernyataan pencarian berikut:
request_time > 60Untuk mengkueri entri log yang durasi permintaannya berkisar antara 60 hingga 120 detik, eksekusi pernyataan pencarian berikut:
request_time in [60 120]Untuk mengkueri entri log yang mencatat permintaan GET yang berhasil (kode status: 200 hingga 299), eksekusi pernyataan pencarian berikut:
request_method : GET and status in [200 299]Untuk mengkueri entri log yang nilainya pada bidang
request_uriadalah/request/path-2, eksekusi pernyataan pencarian berikut:request_uri:/request/path-2/file-2
Pernyataan analisis
Hitung jumlah tampilan halaman (PV) sebuah situs web.
Gunakan fungsi count untuk menghitung PV sebuah situs web.
* | SELECT count(*) AS PV
Hitung PV sebuah situs web 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 mendapatkan rasio PV minggu ini terhadap PV minggu lalu. Dalam pernyataan kueri berikut,
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 klien.
Gunakan fungsi ip_to_province untuk mendapatkan 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 banyak 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 nilainya pada bidang
request_uridiakhiri 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 Anda ingin mengkueri bidang yang diakhiri dengan karakter tertentu, gunakan operator LIKE dalam pernyataan analitik.
* | select * from website_log where request_uri like '%file-7'website_logdalam pernyataan kueri sebelumnya adalah 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 nilainya pada bidang
request_urimengandung%abc%.* | SELECT * where request_uri like '%/%abc/%%' escape '/'
Contoh log akses situs web
__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