全部产品
Search
文档中心

Simple Log Service:Sintaksis dari kueri berbasis pemindaian

更新时间:Jul 06, 2025

Simple Log Service menyediakan fitur kueri berbasis pemindaian yang memungkinkan Anda mencari log menggunakan bidang tertentu tanpa perlu konfigurasi indeks. Fitur ini juga mendukung pernyataan Simple Log Service Processing Language (SPL) untuk menyaring, mengonversi, dan mengurai hasil. Topik ini menjelaskan sintaksis dasar untuk kueri berbasis pemindaian.

Cara kerjanya

Setelah menerima permintaan analisis berbasis pemindaian, Simple Log Service menjalankan langkah-langkah berikut:

  1. Menjalankan pernyataan pencarian untuk mengambil log.

    Penting

    Pernyataan pencarian di pipa tingkat pertama bergantung pada kueri berbasis indeks. Gunakan * jika tidak diperlukan penyaringan indeks. Sebagai contoh, sebelum menjalankan status:200 | WHERE userId = '123' | extend host=upper(hostname), Anda harus membuat indeks untuk bidang status, tetapi tidak untuk bidang userId atau hostname.

  2. Menjalankan pernyataan SPL pada hasil pencarian dan mengembalikan hasil akhir. Sebagai contoh, Anda dapat menggunakan pernyataan SPL untuk menyaring, mengonversi, dan mengurai data.

Sintaksis dasar

Kueri berbasis pemindaian mendukung sintaksis SPL. Pernyataan SPL memungkinkan Anda mengekstrak informasi terstruktur, melakukan operasi bidang, dan menyaring data dari data mentah yang dibaca. Fitur ini juga mendukung kaskade pipa multi-level. Pipa tingkat pertama adalah kondisi filter indeks, diikuti oleh instruksi SPL di level selanjutnya. Hasil akhir adalah data yang diproses oleh SPL.

Pernyataan pencarian berbasis indeks | <spl-cmd> ... | <spl-cmd> ...

Contoh log

  • Bidang mentah: dilabeli [R], berlaku untuk pencarian pemindaian.

  • Bidang indeks: dilabeli , berlaku untuk pencarian indeks.

[I] __topic__: nginx-access-log
[I] Status: 200
[I] Host: api.abc.com
[R] Method: PUT
[R] ClientIp: 192.168.1.1
[R] Payload: {"Item": "1122", "UserId": "112233", "Operation": "AddCart"}
[R] BeginTime: 1.705.029.260
[R] EndTime: 1.705.028.561
[R] RT: 87
[R] Uri: /request/path-3/file-1
[R] UserAgent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; ar) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4

Contoh

Catatan
  • Dalam pernyataan SPL, string konstan diapit tanda petik tunggal ('), seperti * | where ClientIp = '192.168.1.1'.

  • Jika nama bidang mencakup karakter khusus, apit dengan tanda kutip ganda ("), seperti * | project-away "user-agent".

Filter berdasarkan kondisi berbeda

  • Perbandingan kesetaraan

    Status: 200 | where ClientIp = '192.168.1.1'
  • Pencarian tanpa memperhatikan huruf besar/kecil

    __topic__: nginx-access-log | where lower(Method) != 'put'
  • Pencocokan kabur

    Status: 200 | where UserAgent like '%Macintosh%'
  • Perbandingan numerik

    Perhatikan bahwa tipe bidang default adalah varchar. Konversikan tipe menjadi bigint sebelum melakukan perbandingan numerik.

    Status: 200 |  where cast(RT as bigint) > 50
  • Pencocokan ekspresi reguler

    # Temukan URI yang mengandung "path-number"
    Status: 200 | where regexp_like(Uri, 'path-\d+')

Menghitung bidang baru

Silakan berikan teks bahasa Inggris yang perlu diterjemahkan ke dalam bahasa Indonesia.Hitung bidang baru dari yang sudah ada menggunakan instruksi extend.

  • Ekstrak bidang menggunakan ekspresi reguler

    # Ekstrak nomor file dari bidang Uri
    * not Status: 200 | extend fileNumber=regexp_extract(Uri, 'file-(\d+)', 1)
  • Ekstrak bidang dari JSON

    Status:200 | extend Item = json_extract_scalar(Payload, '$.Item')
  • Ekstrak bidang berdasarkan pemisah

    Status:200 | extend urlParam=split_part(Uri, '/', 3)
  • Hitung bidang baru dari beberapa nilai bidang

    # Hitung selisih waktu berdasarkan BeginTime dan EndTime
    Status:200 | extend timeRange = cast(BeginTime as bigint) - cast(EndTime as bigint)

Simpan, hapus, dan ubah nama bidang

  • Simpan hanya bidang tertentu dan hapus sisanya

    Status:200 | project Status, Uri
  • Hapus bidang tertentu dan simpan sisanya

    Status:200 | project-away UserAgent
  • Ubah nama bidang

    Status:200 | project-rename Latency=RT

Perluas data tak terstruktur

  • Perluas semua bidang dalam JSON

    # Filter Payload yang tidak kosong dan perluas semua bidang JSON
    __topic__: nginx-access-log | where Payload is not null | parse-json Payload
  • Perluas bidang JSON dan buang yang asli

    status:200 
    | parse-json body 
    | project-away body
  • Ekstrak beberapa bidang menggunakan ekspresi reguler

    Status:200 | parse-regexp Uri, 'path-(\d+)/file-(\d+)' as pathIndex, fileIndex

Kaskade pipa multi-level

Anda dapat melakukan semua operasi yang disebutkan di atas dalam satu pernyataan pencarian menggunakan kaskade pipa multi-level, yang dieksekusi secara berurutan.

Status:200 
| where Payload is not null 
| parse-json Payload 
| project-away Payload 
| where Host='api.qzzw.com' and cast(RT as bigint) > 80 
| extend timeRange=cast(BeginTime as bigint) - cast(EndTime as bigint)
| where timeRange > 500
| project UserId, Uri

Batasan

  1. Eksekusi pernyataan SPL untuk kueri berbasis pemindaian dibatasi. Untuk informasi lebih lanjut, lihat Batasan.

  2. Pemindahan halaman acak tidak didukung.

Perbandingan antara kueri berbasis indeks dan pemindaian

Item

Kueri Berbasis Indeks

Kueri Berbasis Pemindaian

Sintaksis

Pernyataan pencarian. Untuk informasi lebih lanjut, lihat Sintaksis dan Fungsi Pencarian.

Pernyataan pencarian | Instruksi SPL 1 | Instruksi SPL 2 | .... Untuk informasi lebih lanjut, lihat Sintaksis SPL.

Konfigurasi Indeks Diperlukan

Ya.

Pernyataan pencarian berbasis indeks memerlukan indeks, sedangkan pernyataan lainnya tidak.

Pernyataan Analitik Didukung

Ya.

Ya.

Paginasi Acak Didukung

Ya.

Tidak.

Paginasi acak tidak didukung. Hanya paginasi kontinu (maju atau mundur) yang diizinkan.

Histogram Log

Ditampilkan berdasarkan hasil dari pernyataan pencarian.

Ditampilkan berdasarkan hasil dari pernyataan pencarian dan kemajuan pemindaian.

Operator dan Fungsi

Operasi logika dan matematika, serta pencarian kabur didukung. Fungsi SQL tidak didukung.

Untuk detailnya, lihat Instruksi SPL dan Fungsi SQL yang Didukung SPL.

Tipe Bidang

Ditentukan oleh tipe data yang ditentukan dalam konfigurasi indeks.

Sistem menganggap tipe bidang dalam pernyataan SPL sebagai teks terlepas dari apakah indeks dikonfigurasikan untuk bidang tersebut. Untuk informasi lebih lanjut, lihat Konversi Tipe Data.

Ukuran Hasil

Jumlah log yang akan dikembalikan dapat ditentukan di konsol Simple Log Service atau dengan memanggil SDK. Jumlah maksimum adalah 100.

Jika salah satu dari kondisi berikut terpenuhi, sistem menghentikan pemindaian saat ini dan mengembalikan hasil:

  • Jumlah log yang diidentifikasi mencapai jumlah log yang ditentukan untuk dikembalikan.

    Anda dapat mengatur ini di konsol Simple Log Service atau dengan memanggil SDK.

  • Jumlah log yang dipindai melebihi batas atas yang secara otomatis ditentukan untuk pemindaian saat ini. Nilai defaultnya adalah 100.000, yang ditentukan berdasarkan hasil dari pernyataan pencarian.

  • Durasi pemindaian melebihi 45 detik.

Biaya

Anda dikenakan biaya untuk lalu lintas indeks dan penyimpanan indeks. Untuk informasi lebih lanjut, lihat Item Tagihan Pay-by-Feature.

Anda dikenakan biaya untuk pemindaian berdasarkan lalu lintas pemindaian, yang setara dengan jumlah data yang dikembalikan setelah pemindaian. Sistem mengidentifikasi log berdasarkan hasil dari kueri berbasis indeks.