Kebijakan pemberitahuan dengan MQL

Anda dapat membuat kebijakan pemberitahuan Monitoring yang kondisinya mencakup kueri Bahasa Kueri Monitoring (MQL). Kueri MQL untuk kondisi kebijakan pemberitahuan sama seperti kueri MQL lainnya, kecuali bahwa kueri tersebut juga mencakup operasi pemberitahuan MQL. Jika Anda menggunakan MQL dalam suatu kondisi, kondisi tersebut harus menjadi satu-satunya kondisi dalam kebijakan.

Halaman ini memperkenalkan operasi pemberitahuan MQL dan menjelaskan cara membuat kebijakan pemberitahuan yang menggunakannya. Untuk informasi umum tentang Memantau kebijakan pemberitahuan, lihat Perilaku kebijakan pemberitahuan berbasis metrik.

Mulai

Semua kueri MQL dimulai dengan komponen berikut:

  • Operasi fetch, yang mengambil deret waktu dari Cloud Monitoring.
  • Argumen, yang terdiri dari resource yang dipantau dan jenis metrik, yang mengidentifikasi deret waktu yang akan diambil.

Misalnya, kueri berikut mengambil deret waktu yang ditulis oleh instance Compute Engine untuk jenis metrik compute.googleapis.com/instance/cpu/utilization, yang mencatat penggunaan CPU instance tersebut:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization

Argumen perintah fetch terdiri dari jenis resource yang dimonitor gce_instance, sepasang karakter titik dua, ::, dan jenis metrik, compute.googleapis.com/instance/cpu/utilization.

Untuk menggunakan kueri dalam kebijakan pemberitahuan dengan kondisi berbasis MQL, kueri Anda harus diakhiri dengan operasi yang menentukan parameter yang digunakan Cloud Monitoring untuk memicu pemberitahuan. Operasinya bervariasi, bergantung pada apakah Anda membuat kebijakan pemberitahuan batas metrik atau kebijakan pemberitahuan yang tidak ada metrik.

Kueri MQL untuk kebijakan pemberitahuan nilai minimum metrik

Kueri MQL batas metrik memerlukan operasi condition yang mengevaluasi ekspresi boolean di setiap titik dalam waktu eksekusi kueri. Jika ekspresi bernilai true untuk semua titik dalam periode durasi, Cloud Monitoring akan memicu pemberitahuan.

Misalnya, kueri berikut mengevaluasi instance VM Compute Engine dan memicu pemberitahuan jika ada instance yang menulis lebih dari 5 gigabyte ke disk selama 24 jam terakhir:

fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count
| group_by 24h, .sum
| every 30s
| condition val() > 5'GBy'

Anda dapat menggunakan kondisi yang kompleks untuk mengevaluasi rentang data tertentu. Misalnya, kondisi berikut memicu pemberitahuan jika sebuah instance VM selama 24 jam terakhir menulis data lebih dari lima gigabyte dan kurang dari enam gigabyte, atau lebih dari 8 gigabyte data:

fetch gce_instance :: compute.googleapis.com/instance/disk/write_bytes_count
| group_by 24h, .sum
| every 30s
| condition (val() > 5'GBy' && val() < 6'GBy') || val() > 8'GBy'

Contoh berikut menggunakan filter, operasi group_by geser, dan kondisi kompleks untuk mengevaluasi setiap titik data dalam tabel input yang selaras dan menentukan apakah nilai pemanfaatan melebihi nilai batas 15%:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| group_by sliding(5m), mean(val())
| every 30s
| condition val() > .15 '10^2.%'

Pada kueri sebelumnya, tabel yang dihasilkan dari operator condition memiliki dua kolom nilai, kolom boolean yang mencatat hasil evaluasi nilai minimum, dan kolom kedua berisi salinan kolom nilai utilization dari tabel input. Karena setelan jendela group_by default adalah bergeser, ekspresi group_by sama dengan group_by 5m, mean(val()).

Nilai pemakaian CPU disimpan sebagai pemanfaatan fraksional; nilai berkisar dari 0,0 hingga 1,0. Deskripsi metrik menentukan satuan untuk nilai ini sebagai 10^2.%, yang ditampilkan diagram sebagai persentase. Satuan nilai minimum harus kompatibel, jadi kita menyatakan nilai minimum sebagai .15 '10^2.%.

Kueri MQL untuk kebijakan pemberitahuan yang tidak ada metrik

Kueri MQL tanpa metrik menggunakan operasi absent_for, yang memerlukan durasi saat data harus tidak ada. Misalnya, kueri berikut menguji apakah data hilang dari zona tengah AS selama delapan jam:

fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
| filter zone =~ 'us-central.*'
| every 30s
| absent_for 8h

Operasi absent_for hanya memerlukan argumen durasi, yang menunjukkan berapa lama data harus tidak ada untuk memenuhi kondisi.

Data dianggap tidak ada jika data muncul dalam periode 24 jam terakhir tetapi tidak dalam durasi, dalam contoh ini, delapan jam terakhir.

Kueri absent_for membuat tabel output dengan nilai yang disejajarkan, menggunakan penyelarasan default atau dengan menggunakan operasi every setelah operasi absent_for.

Tabel {i>output<i} memiliki dua kolom.

  • Yang pertama adalah kolom active, yang mencatat hasil boolean untuk ketiadaan data. Nilai true berarti ada satu titik input dalam 24 jam terakhir dan tidak ada titik input dalam periode durasi.

  • Kolom kedua adalah kolom signal. Jika tabel input memiliki kolom nilai, kolom signal akan berisi nilai dari kolom nilai pertama titik input terbaru. Jika tabel input tidak memiliki kolom nilai, kolom signal akan berisi jumlah menit sejak titik input terakhir dicatat. Anda dapat memaksa kasus ini, seperti yang ditunjukkan pada contoh berikut:

    fetch gce_instance::compute.googleapis.com/instance/cpu/utilization
    | filter zone =~ 'us-central.*'
    | value []
    | every 30s
    | absent_for 8h
    

    Pada contoh sebelumnya, operasi value [] menghapus kolom nilai dari tabel inputnya, sehingga kolom signal dalam tabel yang dibuat oleh operasi absent_for berisi jumlah menit sejak titik input terakhir dicatat.

Konfigurasi kebijakan pemberitahuan

Selain kueri MQL, kondisi kebijakan pemberitahuan mencakup dua nilai lain:

  • Jumlah deret waktu input yang harus memenuhi kondisi. Nilainya dapat berupa salah satu dari hal berikut:
    • Satu deret waktu.
    • Sejumlah deret waktu tertentu.
    • Persentase deret waktu.
    • Semua deret waktu.
  • Durasi status pemberitahuan, yaitu berapa lama kondisi pemberitahuan harus terus dievaluasi menjadi true.

Jika kueri terus bernilai true untuk durasi yang ditentukan untuk deret waktu tertentu, deret waktu tersebut akan dianggap aktif. Jika jumlah deret waktu yang ditentukan aktif, kebijakan pemberitahuan akan dipicu dan pemberitahuan akan dibuat untuk setiap deret waktu yang aktif. Untuk mengetahui informasi selengkapnya mengenai cara mengevaluasi kebijakan pemberitahuan, lihat Perilaku kebijakan pemberitahuan berbasis metrik.

Saat data deret waktu berhenti tiba atau saat data tertunda, Monitoring akan mengklasifikasikan data sebagai tidak ada. Untuk mengetahui informasi cara mengonfigurasi Monitoring guna mengevaluasi kondisi batas metrik saat data berhenti masuk, lihat Data metrik parsial.

Jika Anda menggunakan MQL dalam suatu kondisi, kondisi tersebut harus menjadi satu-satunya kondisi dalam kebijakan. Anda tidak dapat menggunakan beberapa kondisi dalam kebijakan pemberitahuan berbasis MQL.

Pedoman

MQL memungkinkan Anda membuat label yang ditentukan pengguna dan melampirkannya ke insiden. Misalnya, lihat Menambahkan tingkat keparahan ke kebijakan pemberitahuan.

Unit untuk jenis metrik tercantum dalam tabel jenis metrik yang relevan; untuk jenis metrik compute.googleapis.com/instance/cpu/utilization, lihat tabel compute.

Langkah selanjutnya

Untuk mengetahui informasi tentang cara menggunakan Konsol Google Cloud dan Cloud Monitoring API untuk membuat kebijakan pemberitahuan dengan kondisi berbasis MQL, lihat Membuat pemberitahuan MQL.

Untuk mengetahui daftar pedoman dan rekomendasi terkait cara mengonfigurasi kebijakan pemberitahuan yang efektif dengan kondisi berbasis MQL, lihat Praktik terbaik untuk pemberitahuan MQL.

Untuk mengetahui informasi tentang cara memecahkan masalah umum terkait kebijakan pemberitahuan dengan kondisi berbasis MQL, lihat Memecahkan masalah pemberitahuan MQL.

Untuk mengetahui contoh kebijakan pemberitahuan dengan kondisi berbasis MQL, baca artikel Kasus penggunaan untuk pemberitahuan MQL.