全部产品
Search
文档中心

Cloud Monitor:Ekspresi Aturan Peringatan

更新时间:Jul 02, 2025

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].

    Catatan
    • Periode 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 adalah userId dan instanceId. Ekspresi aturan peringatan untuk metrik CPUUtilization dari instance tertentu adalah @CPUUtilization[60].$instanceId.

    Catatan

    Anggota 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

      • && atau and: DAN

      • || atau or: ATAU

      • ! atau not: TIDAK

      Contoh: $Average > 50 && $instanceId != 'i-not-exist'.

      Catatan

      Jika 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 matches digunakan untuk menentukan apakah string cocok dengan ekspresi reguler.

      !("hello" matches "^fo.+")

      Catatan

      Operator ! 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 userld adalah 120886317861**** atau 20654616023382****.

      • "foo" in {'foo':1, 'bar':2}

        Nilai dari foo adalah foo atau bar.

      not in

      Tidak mengandung

      • userld not in [120886317861****, 425876]

        Nilai dari userld bukan 120886317861**** atau 20654616023382****.

      • "foo" not in {'foo1':1, 'bar':2}

        Nilai dari foo bukan foo1 atau bar.

    • 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.

      Catatan

      Jika nilainya adalah bilangan bulat, Anda dapat menggunakan garis bawah (_) sebagai pemisah untuk meningkatkan keterbacaan dan memudahkan manajemen.

      • 103, 2.5, .5, 2e+6

      • 1_000_000

      array

      Array.

      [1, 2, 3]

      map atau dict

      Dictionary.

      {"foo":"bar"}

      bool

      Nilai Boolean.

      true atau false

      nil

      Nilai kosong.

      nil

    • Fungsi 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

      Catatan
      • Contoh 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 adalah false.

      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 detik sebelum waktu saat ini.

      Empat fungsi sebelumnya adalah bentuk sederhana dari fungsi ini.

      • CompareLastHour(@cpu_total[60], '$Average', true) setara dengan ComparePast(@cpu_total[60], '$Average', true, 3600).

      • CompareYesterday(@cpu_total[60], '$Average', true) setara dengan ComparePast(@cpu_total[60], '$Average', true, 24*60*60).

      • CompareLastWeek(@cpu_total[60], '$Average', true) setara dengan ComparePast(@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-rata cpu_total pada 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-rata cpu_total pada 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-rata cpu_total pada 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-rata cpu_total pada 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) > 75 setara dengan LastHour(@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

@cpu_total[60].$Average > (@cpu_total[60].$instanceId == 'i-io8kfvcpp7x5****'? 80: 50)

Untuk instance i-io8kfvcpp7x5****, jika nilai rata-rata cpu_total melebihi 80, sebuah peringatan akan dipicu. Untuk instance lainnya, jika nilai rata-rata cpu_total melebihi 50, sebuah peringatan akan dipicu.

Konfigurasikan daftar hitam untuk instance tertentu

@cpu_total[60].$instanceId != 'i-io8kfvcpp7x5****' && @cpu_total[60].$Average > 50

Untuk instance i-io8kfvcpp7x5****, false dikembalikan dan tidak ada peringatan yang dipicu. Untuk instance lainnya, jika nilai rata-rata cpu_total melebihi 50, sebuah peringatan akan dipicu.

Konfigurasikan kondisi peringatan berdasarkan beberapa metrik

@cpu_total[60].$Average > 50 && @memory_usage[60].$Average > 80

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

now() - @heartbeat[60].$reportTime > 60_000

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 now() adalah fungsi bawaan yang mengembalikan timestamp UTC dalam milidetik.