Lakukan kueri dan analisis log website berformat JSON dengan membuat indeks dan menjalankan pernyataan SQL.
Prasyarat
Log teks telah dikumpulkan dalam format JSON. Kumpulkan log teks dalam format JSON.
Langkah 1: 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 halaman Query and Analysis untuk Logstore tersebut, pilih . Jika belum ada indeks, klik Enable Indexing. Buat indeks.
CatatanUntuk melakukan kueri terhadap semua bidang, buat full-text index. Untuk melakukan kueri terhadap bidang tertentu dan mengurangi traffic indeks, gunakan field index. Field index juga diperlukan untuk menganalisis bidang menggunakan pernyataan SELECT.
-
Konfigurasikan field index. Contoh log JSON berikut menunjukkan konfigurasi bidangnya.
{ "@timestamp": "2023-01-01T00:00:00+08:00", "remote_addr": "192.168.0.1", "remote_user": "-", "request": { "request_length": 123, "request_method": "GET", "request_uri": "/index.html" }, "status": 200, "http_referer": "http://example.com", "http_user_agent": "Mozilla/5.0", "server_protocal": "HTTP/1.1", "http_x_forward_for": "192.168.0.1", "upstream_addr": "10.0.0.1:8080", "time": { "request_time": 0.006, "upstream_response_time": 0.004 }, "body_bytes_sent": [123, 456] }Atur tipe data bidang content menjadi json. Node daun di bawah request mencakup
request.request_length(long),request.request_method(text), danrequest.request_uri(text). Aktifkan Enable Statistics untuk semua bidang.-
Bidang
__topic__,__source__, dan__tag__adalah bidang tereservasi tingkat sistem. -
Bidang
@timestamp,remote_addr,remote_user,http_referer,http_user_agent,status,server_protocal,http_x_forward_for, danupstream_addrtidak memiliki node daun. Buat indeks untuk bidang-bidang ini secara langsung di bawah bidangcontent. -
Bidang
requestdantimememiliki node daun, dan node daun tersebut bukan array JSON.-
Anda tidak dapat membuat indeks untuk bidang induk
requestdantime, atau melakukan kueri dan analisis terhadapnya. -
Buat indeks untuk node daun di bawah
requestdantimedengan menentukan path lengkap dari induk ke daun. Formatnya adalahKEY1.KEY2.KEY3, sepertitime.request_timedantime.upstream_response_time. Setelah membuat indeks, Anda dapat melakukan kueri terhadaptime.request_timedantime.upstream_response_time.
-
-
Bidang
body_bytes_sentmerupakan array JSON. Anda tidak dapat membuat indeks untuk bidang ini maupun node daunnya, atau melakukan kueri dan analisis terhadapbody_bytes_sentatau node daun daribody_bytes_sent.
-
Langkah 2: Reindex
Indeks hanya berlaku untuk data yang baru dikumpulkan. Untuk melakukan kueri terhadap data historis, gunakan fitur Reindex.
Langkah 3: Lakukan kueri dan analisis log
Pada halaman Query and Analysis, masukkan pernyataan dan pilih rentang waktu. Dalam pernyataan analisis (SELECT), sertakan nama bidang dalam tanda kutip ganda (") dan string dalam tanda kutip tunggal ('). Panduan cepat untuk kueri dan analisis log. FAQ tentang kueri dan analisis log JSON.
-
Cari log dengan status permintaan 200.
content.status:200 -
Cari log dengan panjang permintaan lebih dari 70.
content.request.request_length > 70 -
Cari log untuk permintaan GET.
content.request.request_method:GET -
Hitung jumlah log berdasarkan status permintaan.
* | SELECT "content.status", COUNT(*) AS PV GROUP BY "content.status"Hasilnya menampilkan setiap kode status, seperti
200dannull, beserta jumlah tampilan halamannya (PV). -
Hitung jumlah permintaan berdasarkan durasi permintaan, diurutkan secara ascending.
* | SELECT "content.time.request_time", COUNT(*) AS count GROUP BY "content.time.request_time" ORDER BY "content.time.request_time" -
Hitung rata-rata durasi permintaan berdasarkan metode permintaan.
* | SELECT avg("content.time.request_time") AS avg_time,"content.request.request_method" GROUP BY "content.request.request_method"Hasilnya menunjukkan
avg_timesebesar 45 untuk GET danavg_timesebesar 11 untuk PUT.