All Products
Search
Document Center

Simple Log Service:Tentukan ekspresi evaluasi

Last Updated:Jun 26, 2025

Dalam aturan peringatan, hasil eksekusi dari ekspresi evaluasi digunakan untuk memeriksa apakah kondisi pemicu peringatan terpenuhi dan mengevaluasi tingkat keparahan dinamis dari peringatan. Topik ini menjelaskan cara menggunakan ekspresi evaluasi.

Ikhtisar

Dalam aturan peringatan, Anda dapat menentukan hasil dari pernyataan kueri sebagai input dan bidang dalam hasil operasi set sebagai variabel. Jika ekspresi evaluasi mengembalikan nilai true, peringatan akan dipicu.

Batasan

Ekspresi evaluasi yang dapat ditentukan dalam aturan peringatan memiliki batasan berikut:

  • Nomor negatif harus diletakkan di dalam tanda kurung (). Contoh: x+(-100)<100.

  • Nilai numerik dikonversi menjadi bilangan titik mengambang 64-bit. Jika angka tersebut digunakan dalam perbandingan, mungkin terjadi kesalahan. Sebagai contoh, Anda dapat membandingkan dua angka untuk memeriksa apakah angka-angka tersebut sama.

  • Nama variabel hanya boleh berisi huruf dan angka, dan harus dimulai dengan huruf.

  • Ekspresi evaluasi harus memiliki panjang 1 hingga 128 karakter.

  • Peringatan hanya akan dipicu jika ekspresi evaluasi mengembalikan nilai true dan jumlah kali berturut-turut kondisi pemicu terpenuhi mencapai nilai parameter Threshold of Continuous Triggers. Sebagai contoh, jika ekspresi evaluasi adalah 100+100, hasil perhitungan adalah 200, yang bukan nilai true. Dalam hal ini, tidak ada peringatan yang dipicu.

  • true, false, tanda dolar ($), dan tanda titik (.) adalah kata-kata cadangan untuk ekspresi evaluasi. Anda tidak dapat menggunakan kata-kata cadangan sebagai variabel.

Sintaksis

Tabel berikut menjelaskan jenis sintaksis yang didukung oleh ekspresi evaluasi dari aturan peringatan.

Catatan

Nama bidang adalah nama bidang yang dikembalikan dalam set hasil. Kami merekomendasikan agar Anda menggunakan string sebagai nama bidang. Kami juga merekomendasikan agar Anda tidak menggunakan nama bidang yang hanya berisi angka atau nama bidang yang berisi karakter khusus. Karakter khusus termasuk tanda persen (%). Jika nama bidang berisi karakter khusus atau hanya angka, nama bidang harus diletakkan di dalam tanda kurung []. Contoh:

  • [5xx percentage (%)] > 20

  • [404] > 20

Jenis sintaksis

Operator

Metode operasi

Contoh

Operasi antar variabel

Operasi antara konstanta non-string dan variabel

Operasi antara konstanta string dan variabel

Operator aritmatika

penjumlahan (+), pengurangan (-), perkalian (*), pembagian (/), dan modulus (%)

Sebelum operator aritmatika diterapkan, operand kiri dan kanan dikonversi menjadi bilangan titik mengambang 64-bit.

Sebelum operator aritmatika diterapkan, operand kiri dan kanan dikonversi menjadi bilangan titik mengambang 64-bit.

Tidak didukung.

  • x * 100 + y > 200

  • x % 10 > 5

Operator perbandingan

Operator perbandingan:

lebih besar dari (>), lebih besar dari atau sama dengan (>=), lebih kecil dari (<), lebih kecil dari atau sama dengan (<=), sama dengan (==), dan tidak sama dengan (!=)

Layanan Log Sederhana menggunakan aturan perbandingan berikut yang diurutkan berdasarkan urutan prioritas:

  1. Operand kiri dan kanan dikonversi menjadi bilangan titik mengambang 64-bit dan kemudian dibandingkan berdasarkan urutan numerik. Jika konversi gagal, aturan prioritas berikutnya diterapkan.

  2. Operand kiri dan kanan dikonversi menjadi string dan kemudian dibandingkan berdasarkan urutan alfabetis.

Operand kiri dan kanan dikonversi menjadi bilangan titik mengambang 64-bit dan kemudian dibandingkan.

Operand kiri dan kanan dikonversi menjadi string dan kemudian dibandingkan berdasarkan urutan alfabetis.

  • x >= 0

  • x < 100

  • x <= 100

  • x == 100

  • x == "foo"

  • (x > 100) == true

    Catatan

    Konstanta Boolean didukung.

Operator ekspresi reguler:

regex match (=~) dan regex not match (!~)

Catatan
  • Garis miring terbalik (\) harus diloloskan.

  • Sintaks Regular Expression 2 (RE2) digunakan. Untuk informasi lebih lanjut, lihat Sintaks.

Sebelum operator ekspresi reguler diterapkan, operand kiri dan kanan dikonversi menjadi string.

Tidak didukung.

Sebelum operator ekspresi reguler diterapkan, operand kiri dan kanan dikonversi menjadi string.

Pencocokan regex: x =~ "\\w+".

Operator logika

Operator logika:

AND (&&) dan OR (||)

Operand kiri dan kanan harus sub-ekspresi, dan hasil operasi harus berupa nilai Boolean. Sebagai contoh, ekspresi evaluasi adalah $0.success_ratio < 90 && $1.Average response time > 60.

Operand kiri dan kanan harus sub-ekspresi, dan hasil operasi harus berupa nilai Boolean. Sebagai contoh, ekspresi evaluasi adalah $0.success_ratio < 90 && $1.Average response time > 60.

Operand kiri dan kanan harus sub-ekspresi, dan hasil operasi harus berupa nilai Boolean. Sebagai contoh, ekspresi evaluasi adalah $0.success_ratio < 90 && $1.Average response time > 60.

  • x >= 0 && y <= 100

  • x > 0 || y >0

Operator Not

Operator Not (!)

Operand yang diperlukan harus sub-ekspresi, dan hasil operasi harus berupa nilai Boolean. Sebagai contoh, ekspresi evaluasi adalah !($0.success_ratio < 90).

Anda tidak dapat langsung menggunakan operator ini untuk bidang dalam hasil operasi set.

Operand yang diperlukan harus sub-ekspresi, dan hasil operasi harus berupa nilai Boolean. Sebagai contoh, ekspresi evaluasi adalah !($0.success_ratio < 90).

Anda tidak dapat langsung menggunakan operator ini untuk bidang dalam hasil operasi set.

Operand yang diperlukan harus sub-ekspresi, dan hasil operasi harus berupa nilai Boolean. Sebagai contoh, ekspresi evaluasi adalah !($0.success_ratio < 90).

Anda tidak dapat langsung menggunakan operator ini untuk bidang dalam hasil operasi set.

!(a < 1 && a > 100)

Fungsi contains

Fungsi contains

Sebelum fungsi contains dijalankan, operand kiri dan kanan dikonversi menjadi string.

Tidak didukung.

Sebelum fungsi contains dijalankan, operand kiri dan kanan dikonversi menjadi string.

contains(foo, 'hello'): Jika true dikembalikan, string foo mengandung substring hello.

Tanda kurung

Tanda kurung ()

Tanda kurung () digunakan untuk mengganti urutan prioritas standar dalam perhitungan.

Tanda kurung () digunakan untuk mengganti urutan prioritas standar dalam perhitungan.

Tanda kurung () digunakan untuk mengganti urutan prioritas standar dalam perhitungan.

x * (y + 100) > 100

Evaluasi hasil operasi set

Layanan Log Sederhana mendukung pemantauan terkait hingga tiga set data dan mengevaluasi hasil operasi set.

Hasil operasi set

Dalam aturan peringatan, Anda dapat menentukan hasil dari pernyataan kueri sebagai input dan bidang dalam hasil operasi set sebagai variabel untuk mengevaluasi apakah peringatan dapat dipicu. Untuk informasi lebih lanjut tentang operasi set, lihat Hubungkan hasil dari beberapa operasi kueri dan analisis. Tabel berikut menjelaskan hasil operasi set.

Catatan

Hasil operasi set yang dilakukan pada hasil kueri dan analisis dievaluasi. Operasi set termasuk operasi CROSS JOIN dan LEFT JOIN.

  • Jika hasil kueri dan analisis tidak mengandung bidang duplikat, Anda dapat merujuk bidang dalam ekspresi evaluasi tanpa perlu menambahkan awalan ke bidang tersebut. Awalan termasuk $0, $1, dan $2. Contoh: name == 'sls'.

  • Jika hasil kueri dan analisis mengandung bidang duplikat, Anda dapat merujuk bidang dalam ekspresi evaluasi dengan menambahkan awalan ke bidang tersebut. Awalan termasuk $0, $1, dan $2. Contoh: $0.name == 'sls' || $1.name == 'ecs'.

Kategori

Subkategori

Deskripsi

Log

Pernyataan kueri yang tidak mengandung SELECT

Hanya pernyataan pencarian yang digunakan untuk menanyakan log.

Saat menentukan ekspresi evaluasi untuk kondisi pemicu, Anda dapat merujuk bidang yang terkandung dalam hasil kueri.

Pernyataan kueri yang mengandung SELECT * FROM log

Saat menentukan ekspresi evaluasi untuk kondisi pemicu, Anda dapat merujuk bidang untuk mana Enable Analytics diaktifkan.

Pernyataan kueri yang mengandung SELECT * FROM (SELECT...)

Saat menentukan ekspresi evaluasi untuk kondisi pemicu, Anda dapat merujuk bidang yang terkandung dalam subkueri SELECT tertentu.

Metrik

Pernyataan kueri yang mengandung SELECT promql(...)

Fungsi promql_query(string) dan promql_query_range(string, string) selalu mengembalikan bidang berikut: metric, labels, time, dan value. Layanan Log Sederhana memperluas bidang labels dalam format peta.

Saat menentukan ekspresi evaluasi untuk kondisi pemicu, Anda dapat merujuk bidang berikut: metric, labels, time, dan value. Anda juga dapat merujuk subbidang dari bidang labels.

Pernyataan kueri yang mengandung SELECT a, b FROM (SELECT promql(...))

Saat menentukan ekspresi evaluasi untuk kondisi pemicu, Anda dapat merujuk bidang untuk mana Enable Analytics diaktifkan.

Pernyataan kueri yang mengandung SELECT * FROM log

Saat menentukan ekspresi evaluasi untuk kondisi pemicu, Anda dapat merujuk bidang untuk mana Enable Analytics diaktifkan.

Data sumber daya

Tidak ada

Nilai bidang dalam data sumber daya dapat berupa string, bilangan titik mengambang, atau tipe numerik. Tipe JSON tidak didukung.

Saat menentukan ekspresi evaluasi untuk kondisi pemicu, Anda dapat merujuk ID bidang dalam data sumber daya.

Konfigurasikan kondisi pemicu

Dalam kondisi pemicu, ekspresi evaluasi digunakan untuk mengevaluasi hasil operasi set. Jika ekspresi evaluasi mengembalikan nilai true, peringatan akan dipicu. Kondisi pemicu mendukung opsi berikut:

  • Data is returned: Jika hasil operasi set mengandung data, peringatan akan dipicu.

    image

  • The query result contains: Jika hasil operasi set mengandung sejumlah entri data tertentu, peringatan akan dipicu. Operator perbandingan yang didukung termasuk lebih besar dari (>), lebih kecil dari (<), dan sama dengan (==). Sebagai contoh, jika Anda menentukan the query result contains > 10 sebagai kondisi pemicu dan hasil operasi set mengandung empat entri data, tidak ada peringatan yang dipicu karena jumlah entri data dalam hasil tidak memenuhi kondisi pemicu yang ditentukan.

    image

  • Data matches the expression: Jika hasil operasi set mengandung data yang cocok dengan ekspresi evaluasi tertentu, peringatan akan dipicu. Sebagai contoh, jika Anda menentukan data matches the expression, pv>1000 sebagai kondisi pemicu dan hasil operasi set hanya mengandung satu entri data yang page view (PV)-nya adalah 900, tidak ada peringatan yang dipicu karena data dalam hasil tidak memenuhi kondisi pemicu yang ditentukan.

    image

  • The query result contains and matches: Jika hasil operasi set mengandung sejumlah entri data tertentu yang cocok dengan ekspresi evaluasi tertentu, peringatan akan dipicu. Sebagai contoh, jika Anda menentukan the query result contains and matches>3, pv>1000 sebagai kondisi pemicu dan hasil operasi set mengandung empat entri data yang PV masing-masing adalah 900, 1100, 1200, dan 1001, peringatan akan dipicu karena data dalam hasil memenuhi kondisi pemicu yang ditentukan.

    image

Contoh

Contoh 1

Jika tingkat keberhasilan permintaan kurang dari 90% dan waktu respons rata-rata permintaan lebih lama dari 60 detik dalam periode 15 menit, peringatan akan dipicu. Detail konfigurasi:

Query Statistics:

  • s0: Hitung tingkat keberhasilan permintaan, yang ditunjukkan oleh success_ratio. Pernyataan kueri: * | select round(sum(if(status < 300, 1, 0)) * 100.0 / count(1) , 2) as success_ratio.

  • s1: Hitung waktu respons rata-rata permintaan per menit. Pernyataan kueri: * | select date_format(date_trunc('minute',__time__), '%m-%d %H:%i') as t,avg(request_time) as "Average response time(s)" group by t order by t asc limit 2000

Trigger Condition: Tentukan $0.success_ratio < 90 && $1.Average response time\(s\) > 60 sebagai ekspresi evaluasi.

image

Contoh 2

Jika jumlah kali kode status HTTP 500 dikembalikan melebihi 10 dalam periode 15 menit, peringatan akan dipicu. Detail konfigurasi:

Query Statistics: Hitung jumlah kali setiap kode status dikembalikan. Pernyataan kueri: * | select status, COUNT(*) as total group by status.

Trigger Condition: Tentukan status == 500 && total > 10 sebagai ekspresi evaluasi.

image