Simple Log Service menyediakan fitur analisis berbasis pemindaian yang memindai log berdasarkan bidang tertentu untuk menghasilkan hasil analisis. Fitur ini memungkinkan Anda menganalisis log tanpa perlu mengonfigurasi indeks terlebih dahulu. Topik ini menjelaskan sintaks dasar analisis berbasis pemindaian.
Cara kerjanya
Ketika Simple Log Service menerima permintaan analisis berbasis pemindaian, langkah-langkah berikut dilakukan:
Menjalankan pernyataan pencarian untuk menanyakan log.
PentingPernyataan pencarian memerlukan indeks. Sebagai contoh, sebelum menjalankan pernyataan
status:200 | set session mode=scan;SELECT api, count(*) AS PV GROUP BY api, Anda harus membuat indeks untuk bidang status. Indeks tidak diperlukan untuk bidang api.Memindai hasil kueri dari pernyataan pencarian berdasarkan bidang yang ditentukan dalam pernyataan analitik dan mengekstrak data untuk bidang-bidang tersebut.
Menjalankan pernyataan analitik untuk mengumpulkan dan menganalisis data yang diekstraksi serta mengembalikan hasil analisis.
Sintaks dasar
Untuk menggunakan fitur analisis berbasis pemindaian, tambahkan set session mode=scan; sebelum pernyataan analitik berbasis sintaks SQL standar.
Pernyataan pencarian | set session mode=scan;Pernyataan analitik berbasis sintaks SQL standarContoh
* and status:200 | set session mode=scan;SELECT api, count(*) AS PV GROUP BY apiBatasan
Dalam mode analisis berbasis pemindaian, semua bidang dianggap bertipe varchar.
Jika Anda perlu menganalisis bidang dengan tipe data lain, gunakan fungsi cast untuk mengonversi tipe data. Untuk informasi lebih lanjut, lihat fungsi cast.
Sebagai contoh, jika Anda ingin menghitung latensi rata-rata Operasi API, gunakan fungsi cast untuk mengonversi tipe bidang latency ke tipe bigint karena fungsi avg memerlukan input numerik.
status:200 | set session mode=scan;SELECT avg(cast(latency AS bigint)) AS 'Latensi Rata-rata', api GROUP BY apiDalam mode analisis berbasis pemindaian, Simple Log Service memindai log untuk mengekstrak data untuk bidang yang ditentukan dalam pernyataan analitik. Indeks bidang yang ada tidak digunakan.
Sebagai contoh, jika Anda telah membuat indeks tipe panjang untuk bidang status dan menjalankan pernyataan berikut untuk melakukan analisis berbasis pemindaian, indeks bidang status tidak akan digunakan.
* | set session mode=scan;SELECT count(1) AS pv, api WHERE cast(status AS bigint) = 200 GROUP BY apiDalam skenario ini, kami merekomendasikan penggunaan pernyataan berikut.
CatatanJika Anda telah membuat indeks untuk suatu bidang, letakkan bidang tersebut sebelum tanda vertikal (|) sebagai kondisi filter.
status:200 | set session mode=scan;SELECT count(1) as pv, api GROUP BY apiDalam mode analisis berbasis pemindaian, jumlah data yang dapat dianalisis dibatasi. Dalam satu shard, hingga 500.000 log dapat dianalisis, dan hingga 10 juta log dapat dipindai. Jika pernyataan pencarian digunakan, batas pemindaian merujuk pada jumlah log yang dikembalikan oleh pernyataan pencarian. Jika salah satu batas tersebut terlampaui, sistem hanya akan mengembalikan hasil analisis untuk beberapa log dan memberi tahu bahwa hasil analisis tidak akurat.
Berikut adalah metode untuk mencegah hasil yang tidak akurat:
Gunakan analisis berbasis indeks untuk data terstruktur berskala besar. Pastikan indeks bidang telah dibuat dan fitur analisis log diaktifkan.
Gunakan pernyataan pencarian untuk memfilter log dan mengurangi jumlah data yang perlu dipindai. Pastikan indeks telah dibuat untuk bidang yang ditentukan dalam pernyataan pencarian.
Kurangi rentang waktu kueri untuk mengurangi jumlah data yang perlu dipindai.
Dalam mode analisis berbasis pemindaian, pernyataan
*|select *tidak didukung.Jika Anda ingin menganalisis data di beberapa Logstore menggunakan klausa JOIN dalam mode analisis berbasis pemindaian, tambahkan nama Logstore sebelum bidang. Format:
LogstoreName.key.
Perbandingan antara analisis berbasis indeks dan analisis berbasis pemindaian
Item | Analisis Berbasis Indeks | Analisis Berbasis Pemindaian |
Sintaks |
|
|
Apakah indeks perlu dikonfigurasi | Anda perlu mengonfigurasi indeks untuk bidang dan mengaktifkan fitur analisis log. | Indeks tidak diperlukan. Penting Pernyataan pencarian sebelum tanda vertikal (|) memerlukan indeks. |
Sintaks SQL | Rentang luas sintaks SQL dan fungsi SQL didukung. Untuk informasi lebih lanjut, lihat Ikhtisar Fungsi. | Sintaks SQL dan fungsi SQL yang didukung untuk analisis berbasis indeks juga didukung. Batasan penggunaan diberlakukan dalam beberapa skenario. Untuk informasi lebih lanjut, lihat Batasan. |
Analisis | Ratusan juta baris log dapat dianalisis. Untuk informasi lebih lanjut, lihat Ikhtisar Kueri dan Analisis Log. Fitur Dedicated SQL dapat diaktifkan untuk analisis yang lebih canggih. | Jutaan baris log dapat dianalisis. Untuk menganalisis sejumlah besar data, gunakan pernyataan pencarian untuk memfilter log terlebih dahulu. Pernyataan pencarian memerlukan indeks. |
Biaya | Biaya dikenakan untuk lalu lintas indeks dan penyimpanan indeks. Untuk informasi lebih lanjut, lihat Item Tagihan Pay-by-Feature. | Biaya dikenakan untuk pemindaian berdasarkan lalu lintas pemindaian, yang setara dengan jumlah data yang dikembalikan setelah pemindaian. Sistem mengidentifikasi log berdasarkan hasil kueri berbasis indeks. |