Simple Log Service (SLS) memungkinkan Anda menjalankan pernyataan pencarian untuk menanyakan log yang disimpan dalam logstore. Hasil pencarian dapat digunakan secara independen atau sebagai input untuk pernyataan analitik guna melakukan analisis data kompleks.
Prasyarat
Sintaksis dasar
Setiap pernyataan kueri terdiri dari pernyataan pencarian dan pernyataan analitik, dipisahkan oleh batang vertikal (|). Contoh pernyataan kueri:
* | SELECT status, count(*) AS PV GROUP BY statusPernyataan | Deskripsi |
Pernyataan pencarian | Pernyataan pencarian menentukan satu atau lebih kondisi pencarian. Pernyataan pencarian, yang bisa berupa kata kunci, nilai numerik, rentang, atau asterisk (*), menentukan kondisi pencarian. Menentukan spasi atau asterisk (*) mencocokkan semua log. Penting Tentukan hingga 30 kondisi pencarian dalam sebuah pernyataan pencarian. |
Pernyataan analitik | Penting Anda tidak perlu menentukan klausa FROM atau WHERE dalam pernyataan analitik. Secara default, semua data logstore saat ini dianalisis. Pernyataan analitik tidak peka huruf besar kecil, tidak mendukung offset, dan tidak memerlukan tanda titik koma (;). Pernyataan analitik digunakan untuk mengumpulkan atau menganalisis data dalam hasil pencarian atau semua data dalam logstore. Untuk informasi lebih lanjut tentang fungsi dan sintaksis yang didukung oleh SLS untuk menganalisis log, lihat topik-topik berikut: |
Proses penulisan pernyataan pencarian
Untuk menulis pernyataan kueri, ikuti langkah-langkah berikut:
Langkah 1: Pilih jenis pencarian
Langkah 2: Pilih tipe data bidang
Langkah 3: Pilih mode pencocokan
Contoh pernyataan pencarian
Jika Anda menjalankan pernyataan pencarian pada log yang berbeda berdasarkan konfigurasi indeks yang berbeda, pernyataan tersebut mengembalikan hasil yang berbeda. Contoh yang disediakan dalam bagian ini didasarkan pada log sampel dan konfigurasi indeks berikut.
teks, double, dan long types
Log sampel
Log akses NGINX digunakan sebagai log sampel.

Konfigurasi indeks
Buat indeks sebelum menjalankan pernyataan pencarian. Untuk memeriksa konfigurasi indeks, ikuti langkah-langkah berikut:
Di halaman query and analysis logstore, pilih .
Di panel Pencarian & Analisis, periksa apakah indeks bidang dikonfigurasi.
Contoh pencarian umum
Hasil pencarian yang diharapkan | Pernyataan pencarian | Debugging |
Log yang mencatat permintaan GET yang berhasil (kode status: 200 hingga 299). | | |
Log untuk permintaan GET yang tidak berasal dari wilayah China (Hangzhou). | | Tidak ada |
Log yang mencatat permintaan GET atau POST. | | |
Log yang tidak mencatat permintaan GET. | | |
Log yang mencatat permintaan GET atau POST yang berhasil. | | |
Log yang mencatat permintaan GET atau POST yang gagal. | | |
Log yang mencatat permintaan GET yang berhasil (kode status: 200 hingga 299) dan durasi permintaan kurang dari 60 detik. | | |
Log di mana durasi permintaan sama dengan 60 detik. | | |
| ||
Log di mana durasi permintaan lebih besar dari atau sama dengan 60 detik dan kurang dari 200 detik. | | |
| ||
Apakah bidang request_time ada. | | |
Log di mana bidang request_time kosong atau nilai bidangnya adalah angka yang tidak valid. | | |
Log yang berisi bidang request_time yang nilai bidangnya berupa angka. | | |
Log yang mengandung and. | Catatan Kata | |
Log di mana nilai bidang metode permintaan adalah PUT. | Penting Nama bidang metode permintaan mengandung spasi. Anda harus mengapit nama bidang dalam tanda kutip ganda ("") dalam pernyataan pencarian. | Tidak ada |
Log yang topiknya HTTPS atau HTTP. | | Tidak ada |
Log yang dikumpulkan dari host 192.0.2.1. | Bidang Penting Jika sebuah log diproses menggunakan fitur transformasi data atau plugin Logtail, kunci dalam bidang __tag__:__client_ip__ diubah menjadi kunci umum. Jika Anda ingin mencari log tersebut, Anda harus mengapit nama bidang __tag__:__client_ip__ dalam tanda kutip ganda ("") dalam pernyataan pencarian. Contoh: | Tidak ada |
Log di mana alamat IP cocok dengan | Untuk informasi lebih lanjut, lihat Gunakan klausa LIKE untuk menerapkan pencocokan fuzzy. | Tidak ada |
Log di mana bidang remote_user tidak kosong. | | |
Log di mana bidang remote_user kosong. | | |
Log di mana nilai bidang remote_user bukan null. | | |
Log yang tidak mengandung bidang remote_user. | | |
Log yang mengandung bidang remote_user. | | |
Log di mana nilai bidang city bukan Shanghai. | Catatan Jika Anda ingin menanyakan string Cina, Anda harus mengaktifkan Include Chinese saat Anda mengonfigurasi indeks. Untuk informasi lebih lanjut, lihat Buat indeks. | Tidak ada |
Contoh pencarian lanjutan
Pencarian fuzzy
Hasil pencarian yang diharapkan
Pernyataan pencarian
Debugging
Log yang mengandung kata-kata tertentu. Kata-kata tersebut dimulai dengan cn.
cn*Log di mana nilai bidang region dimulai dengan cn.
region:cn*Tidak ada
Log di mana nilai bidang region mengandung cn*.
region:"cn*"CatatanDalam pernyataan pencarian ini,
cn*adalah string lengkap. Contoh:Jika isi log adalah
region:cn*,endan pemisahnya adalah koma (,), SLS membagi isi log menjadiregion,cn*, danen. Gunakan pernyataan pencarian untuk mencari log tersebut.Jika isi log adalah
region:cn*hangzhou, SLS menganggapcn*hangzhousebagai satu kesatuan, sehingga tidak mungkin mencari log tersebut dengan pernyataan pencarian.
Tidak ada
Log yang mengandung kata-kata tertentu. Kata-kata tersebut dimulai dengan
mozi, diakhiri denganla, dan mencakup satu karakter antaramozidanla.mozi?laLog yang mengandung kata-kata tertentu. Kata-kata tersebut dimulai dengan mo, diakhiri dengan la, dan mencakup nol atau lebih karakter antara
modanla.mo*laLog yang mengandung kata-kata tertentu. Kata-kata tersebut dimulai dengan
mozatausa.moz* and sa*Log yang nilai bidang region-nya diakhiri dengan
hai.Pernyataan pencarian tidak dapat menemukan log tersebut. Sebagai gantinya, gunakan klausa LIKE dalam pernyataan SQL. Untuk informasi lebih lanjut, lihat Gunakan klausa LIKE untuk menerapkan pencocokan fuzzy.
* | select * from log where region like '%hai'Tidak ada
Log di mana nilai bidang message dimulai dengan
"get_time: 0..Gunakan sintaksis like dalam analisis SQL.
*| select message where message like '"get_time: 0.%'Atau gunakan instruksi where dalam Bahasa Proses Terstruktur (SPL) untuk menyaring log.
Tidak ada
Pencarian berbasis pemisah
SLS membagi isi log menjadi beberapa kata berdasarkan pemisah yang Anda tentukan. Pemisah default adalah
, '";=()[]{}?@<>/:\n\t\r. Jika Anda meninggalkan pengaturanPemisahkosong, SLS memperlakukan seluruh nilai bidang sebagai satu istilah, yang hanya dapat dicari menggunakan pencocokan tepat atau pencarian fuzzy pada seluruh string. Untuk informasi lebih lanjut tentang cara menentukan pemisah, lihat Buat indeks.Sebagai contoh, nilai bidang http_user_agent adalah
Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/192.0.2.0 Safari/537.2.Jika Anda membiarkan Delimiter kosong, SLS menganggap nilai bidang tersebut sebagai satu kesatuan. Log tidak dapat dicari menggunakan pernyataan pencarian
http_user_agent:Chrome.Jika Anda menetapkan Delimiter ke
, '";=()[]{}?@<>/:\n\t\r, SLS membagi nilai bidang menjadiMozilla,5.0,Windows,NT,6.1,AppleWebKit,537.2,KHTML,like,Gecko,Chrome,192.0.2.0,Safari, dan537.2. Log dapat dicari menggunakan pernyataan pencarianhttp_user_agent:Chrome.
PentingJika kata kunci pencarian mengandung pemisah, lakukan pencarian frasa atau gunakan klausa LIKE. Contoh:
Pencarian frasa:
#"redo_index/1". Untuk informasi lebih lanjut, lihat Pencarian frasa.Klausa LIKE:
* | select * from log where key like 'redo_index/1'.
Hasil pencarian yang diharapkan
Pernyataan pencarian
Debugging
Log di mana nilai bidang http_user_agent mengandung Chrome.
http_user_agent:ChromeLog di mana nilai bidang http_user_agent mengandung Linux dan Chrome.
http_user_agent:Linux and http_user_agent:Chromehttp_user_agent:"Linux Chrome"Log di mana nilai bidang http_user_agent berisi Firefox atau Chrome.
http_user_agent:Firefox or http_user_agent:ChromeLog di mana nilai bidang request_uri mengandung /request/path-2.
request_uri:/request/path-2Log di mana nilai bidang request_uri dimulai dengan /request dan tidak mengandung /file-0.
request_uri:/request* not request_uri:/file-0Log di mana frasa
redo_index/1sepenuhnya cocok.#"redo_index/1"* | select * from log where key like 'redo_index/1'
CatatanPencarian frasa atau klausa LIKE dapat digunakan untuk pencocokan tepat. Jika Anda melakukan pencarian tepat, kata-kata seperti
redo_indexdan1akan cocok.Tidak ada
Contoh kueri dalam kasus penggunaan khusus
Pernyataan pencarian
Operator ini digunakan untuk mengapit kata kunci sintaksis. Jika kata kunci sintaksis diapit dalam tanda kutip ganda (""), kata kunci tersebut diperlakukan sebagai string literal, bukan operator. Dalam pencarian berbasis bidang, kata-kata yang diapit dalam tanda kutip ganda (
"") dianggap sebagai satu kesatuan.Jika nama bidang atau nilai bidang mengandung karakter khusus seperti spasi, karakter Cina, titik dua (
:), dan tanda hubung (-) atau kata kunci sintaksis sepertianddanor, Anda harus mengapit nama bidang atau nilai bidang dalam tanda kutip ganda (""). Sebagai contoh,"and"mengembalikan log yang mengandung kata "and", memperlakukannya sebagai kata kunci, bukan operator.SLS mendukung operator berikut:
sort,asc,desc,group by,avg,sum,min,max, danlimit. Jika Anda ingin menggunakan operator ini sebagai kata kunci, Anda harus mengapit operator dalam tanda kutip ganda ("").Jika log diproses menggunakan fitur transformasi data atau Plugin Logtail, kunci dalam bidang __tag__:__client_ip__ diubah menjadi kunci umum. Jika Anda ingin mencari log tersebut, Anda harus mengapit nama bidang __tag__:__client_ip__ dengan tanda kutip ganda (
"") dalam pernyataan pencarian. Contoh:"__tag__:__client_ip__":192.0.2.1. Bidang__tag__:__client_ip__adalah bidang khusus di SLS. Bidang ini menunjukkan alamat IP dari Host tempat log dikumpulkan. Untuk informasi selengkapnya, lihat Bidang khusus.
Hasil kueri yang diharapkan
Pernyataan pencarian
Log di mana nilai bidang
request methodmengandungPUT. Nama bidang mengandung spasi."request method":PUTLog di mana nilai bidang
system error descriptionmengandungDB. Nama bidang termasuk spasi."system error description":DB*Log di mana nilai bidang
regionmengandung stringcn*. Jika isi log adalahregion:cn*,endan pemisahnya adalah koma (,), maka akan dibagi menjadiregion,cn*, danen.region:"cn*"Log di mana nilai bidang
remote_userkosong.remote_user:""Log di mana nilai bidang
AuthorizationadalahBearer 12345, yang mencakup spasi."Authorization": "Bearer 12345"Log di mana nilai bidang
errorContentmengandungThe body is not valid json string, yang mencakup spasi.* | select * where errorContent like '%The body is not valid json string%'Log yang dikumpulkan dari host
192.0.2.1."__tag__:__client_ip__":192.0.2.1Pernyataan analitik
Jika nama properti seperti nama bidang atau nama tabel berisi karakter khusus seperti spasi, karakter Mandarin, titik dua (
:), dan tanda hubung (-) atau kata kunci sintaksis sepertianddanor, Anda harus mengapit nama properti tersebut dengan tanda kutip ganda ("") dalam pernyataan analitik.Jika karakter tertentu mewakili string, Anda harus menggunakan tanda kutip tunggal (
'') untuk mengapit karakter tersebut dalam pernyataan analitik. Sebagai contoh,'status'menunjukkan string status, danstatusatau"status"menunjukkan bidang log status.
Hasil kueri yang diharapkan
Pernyataan kueri
Log yang alamat IP-nya cocok dengan
192.168.XX.XX.* | select * from log where key like '192.168.%.%'10 durasi permintaan terpanjang.
Nama kolom dengan spasi harus diapit dalam tanda kutip ganda ("").
* | SELECT max(request_time,10) AS "top 10"Jumlah log yang sesuai dengan status permintaan berbeda.
Bidang
contentdiindeks sebagai tipe JSON. Untuk informasi lebih lanjut, lihat Bagaimana cara menanyakan dan menganalisis bidang JSON yang diindeks?* | SELECT "content.status", COUNT(*) AS PV GROUP BY "content.status"
tipe json
Log sampel
{
"timestamp": "2025-03-21T14:35:18Z",
"level": "ERROR",
"service": {
"name": "payment-processor",
"version": "v2.8.1",
"environment": "production"
},
"error": {
"code": 5031,
"message": "Failed to connect to third-party API",
"details": {
"endpoint": "https://api.paymentgateway.com/v3/verify",
"attempts": 3,
"last_response": {
"status_code": 504,
"headers": {
"Content-Type": "application/json",
"X-RateLimit-Limit": "100"
}
}
}
},
"user": {
"id": "usr-9a2b3c4d",
"session": {
"id": "sess-zxy987",
"device": {
"type": "mobile",
"os": "Android 14",
"network": "4G"
}
}
},
"trace": {
"correlation_id": "corr-6f5e4d3c",
"span_id": "span-00a1b2"
}
}Konfigurasi indeks
Sebelum Anda menjalankan pernyataan pencarian, pastikan bahwa indeks telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Buat indeks. Untuk memeriksa konfigurasi indeks, ikuti langkah-langkah berikut:
Di halaman query and analysis logstore, pilih .
Di panel Pencarian & Analisis, periksa apakah indeks bidang telah dikonfigurasi.
Contoh
Untuk informasi lebih lanjut tentang contoh kueri dan analisis, lihat Kueri dan analisis log JSON dan FAQ tentang kueri dan analisis log JSON.
Hasil kueri yang diharapkan | Pernyataan kueri |
Log yang mencatat permintaan gagal | |
Log yang mencatat permintaan dengan ID pengguna | |
Log yang mencatat permintaan gagal dengan ID pengguna | |
Referensi
Pemecahan masalah
Contoh kueri log