Buat indeks dan jalankan pernyataan pencarian serta analitik pada log akses website di Simple Log Service.
Prasyarat
Log akses website dikumpulkan menggunakan konfigurasi Logtail. Kumpulkan log teks dari server.
Langkah 1: Buat indeks
Indeks diperlukan sebelum Anda dapat melakukan kueri dan menganalisis log. Simple Log Service mendukung indeks teks penuh dan indeks bidang. Topik ini menggunakan indeks bidang untuk log akses website. Buat indeks.
Masuk ke Simple Log Service console.
Pada bagian Projects, klik project yang diinginkan.

Pada tab , klik logstore yang diinginkan.

-
Di pojok kanan atas, pilih . Jika pengindeksan belum diaktifkan, klik Enable.
-
Konfigurasikan indeks bidang dan klik OK. Anda dapat menambahkan indeks bidang secara manual atau klik Automatic Index Generation untuk menghasilkan indeks dari log pertama dalam pratinjau pengumpulan data.
Penting-
Indeks hanya berlaku untuk data log yang ditulis setelah konfigurasi indeks. Untuk mengkueri data historis, gunakan fitur pengindeksan ulang. Lakukan pengindeksan ulang log untuk Logstore.
-
Untuk menggunakan pernyataan analitik (SELECT), aktifkan Enable Analytics untuk bidang target saat mengonfigurasi indeks.
-
Simple Log Service secara otomatis mengonfigurasi indeks untuk beberapa bidang tereservasi. Bidang tereservasi.
Pada kotak dialog Index Attributes, klik Automatic Index Generation untuk menghasilkan indeks bidang. Bidang yang dihasilkan mencakup
body_bytes_sent(long),client_ip(text),host(text),http_host(text),http_user_agent(text),request_length(long), danrequest_method(text). Bidang teks menggunakan pembatas default,"';=()[]{}?@&<>/:\n\t\r, dengan opsi Case-Sensitive dan Include Chinese dinonaktifkan serta Enable Analytics diaktifkan. Klik OK untuk mengonfirmasi. -
Langkah 2: Lakukan kueri dan analisis log
Jalankan pernyataan pencarian dan analitik dalam format Search statement|Analytic statement. Pernyataan pencarian dapat dijalankan secara mandiri, tetapi pernyataan analitik harus digabungkan dengan pernyataan pencarian. Lakukan kueri dan analisis log.
Secara default, kueri hanya mengembalikan 100 baris. Gunakan klausa LIMIT untuk mengubah jumlah baris yang dikembalikan.
Search statement
-
Kueri entri log yang berisi Chrome:
Chrome -
Kueri entri log dengan durasi permintaan lebih dari 60 detik:
request_time > 60 -
Kueri entri log dengan durasi permintaan antara 60 dan 120 detik:
request_time in [60 120] -
Kueri permintaan GET yang berhasil (kode status 200–299):
request_method : GET and status in [200 299] -
Kueri entri log di mana
request_uriadalah/request/path-2:request_uri:/request/path-2/file-2
Analysis statement
-
Hitung jumlah tampilan halaman (PVs).
Gunakan fungsi count untuk menghitung total PV.
* | SELECT count(*) AS PVHasilnya adalah PV sebesar
9685. -
Hitung PV per menit.
Gunakan fungsi date_trunc untuk memotong waktu per menit, fungsi count untuk menghitung PV per menit, serta GROUP BY dan ORDER BY untuk mengelompokkan dan mengurutkan berdasarkan waktu.
* | SELECT count(*) as PV, date_trunc('minute', __time__) as time GROUP BY time ORDER BY timeHasilnya ditampilkan dalam bentuk grafik garis yang menunjukkan tren PV per menit.
-
Hitung jumlah permintaan per metode dalam interval 5 menit.
Gunakan
__time__ - __time__ %300untuk memotong waktu menjadi interval 5 menit, fungsi count untuk menghitung jumlah permintaan, serta GROUP BY dan ORDER BY untuk mengelompokkan dan mengurutkan berdasarkan waktu.* | SELECT request_method, count(*) as count, __time__ - __time__ %300 as time GROUP BY time, request_method ORDER BY timeContoh hasil: 778 permintaan GET, 242 permintaan PUT, 231 permintaan POST, 101 permintaan DELETE, dan 4 permintaan HEAD, semuanya dengan timestamp 1610673300.
-
Bandingkan PV minggu ini dengan minggu lalu.
Gunakan fungsi count untuk total PV dan fungsi ts_compare untuk membandingkan PV minggu ini dengan minggu lalu. Dalam pernyataan 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)
-
Analisis distribusi alamat IP client berdasarkan provinsi.
Gunakan fungsi ip_to_province untuk memetakan alamat IP ke provinsi, dan fungsi count untuk menghitung frekuensi kemunculan. Gunakan GROUP BY dan ORDER BY untuk mengelompokkan dan mengurutkan hasil.
* | SELECT count(*) as count, ip_to_province(client_ip) as address GROUP BY address ORDER BY count DESCContoh hasil kueri: 451 permintaan dari provinsi Guangdong, 447 dari provinsi Jiangsu, 433 dari Beijing, dan 425 dari provinsi Shandong.
-
Cari 10 URI permintaan yang paling sering diakses.
Gunakan GROUP BY untuk mengelompokkan hasil berdasarkan URI permintaan, fungsi count untuk menghitung jumlah akses per URI, dan ORDER BY untuk mengurutkan berdasarkan jumlah akses.
* | SELECT count(*) as PV, request_uri as PATH GROUP BY PATH ORDER BY PV DESC LIMIT 10Setelah Anda menjalankan pernyataan kueri, hasil contoh menunjukkan 10 path permintaan teratas (PATH) dan jumlah kunjungan yang sesuai (PV).
-
Kueri entri log di mana
request_uridiakhiri dengan%file-7.PentingDalam pernyataan pencarian, karakter wildcard asterisk (*) dan tanda tanya (?) mendukung pencarian fuzzy tetapi harus muncul di tengah atau di akhir kata. Untuk mencocokkan bidang yang diakhiri dengan string tertentu, gunakan operator LIKE dalam pernyataan analitik.
* | select * from website_log where request_uri like '%file-7'website_logadalah nama Logstore. -
Hitung statistik akses berdasarkan URI permintaan.
Gunakan fungsi regexp_extract untuk mengekstrak bagian file dari
request_uri, dan fungsi count untuk menghitung jumlah akses per URI.* | SELECT regexp_extract(request_uri, '.*\/(file.*)', 1) file, count(*) as count group by fileSebagai contoh, hasil dengan nilai file sebesar
file-5dan count sebesar17127berarti file tersebut diakses sebanyak 17.127 kali. -
Kueri entri log di mana
request_uriberisi%abc%.* | SELECT * where request_uri like '%/%abc/%%' escape '/'Kueri ini mengembalikan entri log yang cocok. Nilai bidang
request_uriadalah/request/path-1/file-92 %abc%qereqwr, di mana bagian%abc%merupakan kecocokan.
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