Saat membuat aturan peringatan, Anda dapat menggunakan ekspresi aturan peringatan untuk mengonfigurasi kondisi peringatan yang kompleks. Topik ini menjelaskan elemen dasar, fungsi historis, dan skenario dari ekspresi aturan peringatan.
Elemen
CloudMonitor menghitung data agregat dari metrik atau metrik suatu instance berdasarkan ekspresi aturan peringatan yang dikonfigurasi. Jika data pemantauan memenuhi ekspresi tersebut, sebuah peringatan akan dipicu. Ekspresi aturan peringatan terdiri dari nama metrik, anggota metrik, operator, fungsi, dan data pemantauan. Contoh: @cpu_total[60].$instanceId != 'i-2ze3jvsy7620giru****' && @cpu_total[60].$Average > 60.
Nama Metrik
Untuk informasi lebih lanjut tentang metrik dari layanan cloud yang berbeda, lihat Lampiran 1: Metrik.
Ekspresi aturan peringatan untuk metrik berada dalam format
@Nama metrik[Periode Agregasi]. Sebagai contoh, untuk memantau instance Elastic Compute Service (ECS) berdasarkan metrik CPUUtilization, Anda dapat menetapkan ekspresi aturan peringatan menjadi@CPUUtilization[60].CatatanPeriode agregasi metrik untuk ECS ditampilkan di kolom Min Periods pada tabel di halaman Daftar Metrik untuk ECS. Untuk melihat periode agregasi metrik untuk layanan cloud lainnya, pilih layanan cloud dari daftar drop-down.
Nama metrik harus sesuai dengan ekspresi reguler
[a-zA-Z][_a-zA-Z0-9]*. Jika nama metrik tidak sesuai dengan ekspresi reguler, gunakan format@(Nama metrik)[Periode Agregasi], misalnya,@('vm.DiskIORead')[60].
Dalam ekspresi aturan peringatan, nama metrik harus digunakan bersamaan dengan anggota metrik untuk menentukan rentang data pemantauan.
Anggota Metrik
Anggota metrik digunakan untuk menentukan rentang data pemantauan untuk metrik terkait. Anggota metrik harus dimulai dengan tanda dolar ($). Anda harus menentukan ekspresi aturan peringatan dalam format
@Nama metrik[Periode Agregasi].$Anggota metrik. Sebagai contoh, metode statistik untuk metrik CPUUtilization dari ECS adalah Average, Minimum, dan Maximum. Ekspresi aturan peringatan untuk nilai rata-rata metrik tersebut adalah@CPUUtilization[60].$Average. Dimensi untuk metrik CPUUtilization dari ECS adalahuserIddaninstanceId. Ekspresi aturan peringatan untuk metrik CPUUtilization dari instance tertentu adalah@CPUUtilization[60].$instanceId.CatatanAnggota metrik untuk ECS ditampilkan di kolom Dimensions dan Statistics pada tabel di halaman Daftar Metrik untuk ECS. Untuk melihat anggota metrik untuk layanan cloud lainnya, pilih layanan cloud dari daftar drop-down.
Operator
Operator digunakan untuk menghitung apakah data pemantauan memenuhi kondisi peringatan.
Operator dasar
Kategori
Operator dan deskripsi
Operator matematika
+: penambahan-: pengurangan*: perkalian/: pembagian%: modulo**: eksponensiasi
Operator perbandingan
==: sama dengan! =: tidak sama dengan>: lebih besar dari>=: lebih besar dari atau sama dengan<: kurang dari<=: kurang dari atau sama dengan
Operator logika
&&atauand: DAN||atauor: ATAU!ataunot: TIDAK
Contoh:
$Average > 50 && $instanceId != 'i-not-exist'.CatatanJika nilai di kedua sisi operator matematika atau operator perbandingan bukan dari tipe yang sama, string akan dikonversi menjadi angka, misalnya,
'123' + 321 == 123 + '321' == 444.Operator string
Operator string
Deskripsi
Contoh
matches
Cocok dengan ekspresi reguler.
Operator logika NOT dan operator
matchesdigunakan untuk menentukan apakah string cocok dengan ekspresi reguler.!("hello" matches "^fo.+")CatatanOperator
!memiliki prioritas lebih tinggi daripada operator matches. Oleh karena itu, Anda harus menutup ekspresi reguler dalam tanda kurung ().contains
Mengandung string.
'abcdef' contains 'cde'startsWith
Memeriksa apakah string dimulai dengan awalan tertentu.
'abcdef' startsWith 'abc'endsWith
Memeriksa apakah string diakhiri dengan akhiran tertentu.
'abcdef' endsWith 'def'Operator keanggotaan
Operator keanggotaan
Deskripsi
Contoh
in
Mengandung
userld in [120886317861****, 425876]Nilai dari
userldadalah120886317861****atau20654616023382****."foo" in {'foo':1, 'bar':2}Nilai dari foo adalah
fooataubar.
not in
Tidak mengandung
userld not in [120886317861****, 425876]Nilai dari
userldbukan120886317861****atau20654616023382****."foo" not in {'foo1':1, 'bar':2}Nilai dari foo bukan
foo1ataubar.
Operator ternary
?:: Operator ini memiliki efek yang sama dengan operator ternary dalam bahasa C dan Java, misalnya, @CPUUtilization[60].$Average > 30? "ok": "lower".
Operasi data
Tipe data
Tipe data
Deskripsi
Contoh
string
String yang diapit oleh tanda kutip tunggal atau ganda.
"hello", 'hello'number
Nilai numerik. Nilai tersebut bisa berupa bilangan bulat atau bilangan desimal.
CatatanJika nilainya adalah bilangan bulat, Anda dapat menggunakan garis bawah (_) sebagai pemisah untuk meningkatkan keterbacaan dan memudahkan manajemen.
103, 2.5, .5, 2e+61_000_000
array
Array.
[1, 2, 3]map atau dict
Dictionary.
{"foo":"bar"}bool
Nilai Boolean.
trueataufalsenil
Nilai kosong.
nilFungsi bawaan
Fungsi bawaan
Deskripsi
len(array|map|string)Mengembalikan panjang array, map, atau string.
now()Mengembalikan timestamp UTC dalam milidetik.
abs(number)Mengembalikan nilai absolut (bilangan desimal).
rand()Mengembalikan bilangan desimal antara
[0, 1).rand(N)Mengembalikan bilangan desimal antara
[0, N).toLower(string)Mengubah string menjadi huruf kecil.
toUpper(string)Mengubah string menjadi huruf besar.
Perbandingan
CatatanContoh metrik:
@cpu_total[60].Metode agregasi adalah string. Contoh:
'$Average'.Hasil perbandingan adalah nilai Boolean. Jika nilai metrik periode saat ini lebih besar dari nilai metrik periode sebelumnya, hasil perbandingannya adalah
true. Jika nilai metrik periode saat ini lebih kecil dari nilai metrik periode sebelumnya, hasil perbandingannya adalahfalse.
Fungsi
Deskripsi
CompareLastPeriod(metric, metode agregasi, hasil perbandingan)Mendapatkan data dibandingkan dengan periode sebelumnya, misalnya,
CompareLastPeriod(@cpu_total[60], '$Average', true).Jika nilai rata-rata cpu_total pada periode saat ini adalah 20% dan nilai rata-rata cpu_total pada periode sebelumnya adalah 15%. Nilai yang dikembalikan oleh fungsi ini bergantung pada hasil perbandingan.
Jika hasil perbandingan adalah
true, fungsi ini mengembalikan (20 - 15) × 100/20.Jika hasil perbandingan adalah
false, fungsi ini mengembalikan (15 - 20) × 100/20.
CompareLastHour(metric, metode agregasi, hasil perbandingan)Mendapatkan data dibandingkan dengan satu jam sebelumnya.
CompareLastHour(@cpu_total[60], '$Average', true) > 10: Jika nilai rata-rata cpu_total meningkat sebesar 10% dibandingkan kemarin, sebuah peringatan akan dipicu.CompareLastWeek(metric, metode agregasi, hasil perbandingan)Mendapatkan data dibandingkan dengan kemarin.
CompareYesterday(@cpu_total[60], '$Average', true) > 10: Jika nilai rata-rata cpu_total meningkat sebesar 10% dibandingkan minggu sebelumnya, sebuah peringatan akan dipicu.CompareLastWeek(metric, metode agregasi, hasil perbandingan)Mendapatkan data dibandingkan dengan minggu sebelumnya.
CompareLastWeek(@cpu_total[60], '$Average', true) > 10: Jika nilai rata-rata cpu_total meningkat sebesar 10% dibandingkan minggu sebelumnya, sebuah peringatan akan dipicu.ComparePast(metric, metode agregasi, hasil perbandingan, detik)Mendapatkan data dibandingkan dengan jumlah detik tertentu
detiksebelum waktu saat ini.Empat fungsi sebelumnya adalah bentuk sederhana dari fungsi ini.
CompareLastHour(@cpu_total[60], '$Average', true)setara denganComparePast(@cpu_total[60], '$Average', true, 3600).CompareYesterday(@cpu_total[60], '$Average', true)setara denganComparePast(@cpu_total[60], '$Average', true, 24*60*60).CompareLastWeek(@cpu_total[60], '$Average', true)setara denganComparePast(@cpu_total[60], '$Average', true, 7*24*60*60).
Fungsi historis
Fungsi
Deskripsi
LastPeriod(metric)Mendapatkan data dari periode sebelumnya. Contoh:
LastPeriod(@cpu_total[60]).$Average > 75. Jika nilai rata-ratacpu_totalpada periode sebelumnya melebihi 75%, sebuah peringatan akan dipicu.LastHour(metric)Mendapatkan data dari satu jam sebelumnya. Contoh:
LastHour(@cpu_total[60]).$Average > 75. Jika nilai rata-ratacpu_totalpada satu jam sebelumnya melebihi 75%, sebuah peringatan akan dipicu.Yesterday(metric)Mendapatkan data dari hari sebelumnya. Contoh:
Yesterday(@cpu_total[60]).$Average > 75. Jika nilai rata-ratacpu_totalpada hari sebelumnya melebihi 75%, sebuah peringatan akan dipicu.LastWeek(metric)Mendapatkan data dari minggu sebelumnya. Contoh:
LastWeek(@cpu_total[60]).$Average > 75. Jika nilai rata-ratacpu_totalpada minggu sebelumnya melebihi 75%, sebuah peringatan akan dipicu.Past(metric, detik)Mendapatkan data dalam jumlah detik tertentu sebelum waktu saat ini. Angka tersebut harus merupakan kelipatan integral dari periode agregasi metrik. Fungsi-fungsi sebelumnya adalah bentuk sederhana dari fungsi ini. Sebagai contoh,
Past(@cpu_total[60], 3600) > 75setara denganLastHour(@cpu_total[60]).$Average > 75.
Skenario
Tabel berikut menjelaskan skenario penggunaan ekspresi aturan peringatan.
Skenario | Ekspresi aturan peringatan | Deskripsi |
Konfigurasikan ambang batas eksklusif prioritas tinggi untuk instance tertentu dalam grup aplikasi dan ambang batas berbeda untuk instance lainnya |
| Untuk instance |
Konfigurasikan daftar hitam untuk instance tertentu |
| Untuk instance |
Konfigurasikan kondisi peringatan berdasarkan beberapa metrik |
| Jika nilai rata-rata cpu_total untuk suatu instance melebihi 50% dan nilai rata-rata memory_usage untuk instance tersebut melebihi 80%, sebuah peringatan akan dipicu. |
Memantau latensi pelaporan metrik |
| Jika timeout heartbeat melebihi satu menit, sebuah peringatan akan dipicu. Catatan Parameter reportTime menunjukkan waktu ketika metrik dilaporkan. Ini adalah parameter bawaan dari setiap metrik. Fungsi |