Membuat kebijakan pemberitahuan

Kebijakan pemberitahuan untuk laju pengeluaran anggaran error didasarkan pada pemilih deret waktu select_slo_burn_rate, yang dijelaskan dalam Mengambil data SLO. Ada pemilih deret waktu lainnya, dan Anda dapat menggunakan beberapa pemilih tersebut sebagai dasar untuk kebijakan pemberitahuan. Untuk diskusi tentang kebijakan pemberitahuan berbasis SLO, lihat Pemberitahuan tentang laju pengeluaran.

Anda membuat kebijakan pemberitahuan menggunakan metode alertPolicies.create. Penggunaan umum metode ini didokumentasikan dalam Mengelola kebijakan pemberitahuan.

Kebijakan pemberitahuan untuk SLO mirip dengan kebijakan pemberitahuan batas metrik lainnya, tetapi berbeda dalam satu cara tertentu: filter dalam spesifikasi kondisi MetricThreshold menggunakan pemilih deret waktu, bukan sepasang metrik dan jenis resource yang dimonitor.

Kondisi untuk kebijakan pemberitahuan berbasis SLO

Kebijakan pemberitahuan harus memiliki minimal satu kondisi. Untuk kondisi berbasis SLO, gunakan kondisi jenis MetricThreshold.

Kondisi nilai minimum metrik dapat berisi dua pasangan konfigurasi deret waktu: filter dan aggregations. Karena data SLO diambil secara berbeda dari data deret waktu lainnya, satu-satunya kolom yang digunakan dalam kondisi untuk SLO adalah kolom filter.

Kondisi untuk SLO menetapkan kolom comparison, thresholdValue, duration, dan trigger.

Contoh ini membuat kondisi yang dilanggar saat tingkat pembakaran melebihi 2 kali lipat dari tingkat normal. Strukturnya terlihat seperti ini:

  "conditions": [
    {
      "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
      "conditionThreshold": {
        "filter": DATA_RETRIEVAL_FILTER_FOR_SLO,
        "comparison":"COMPARISON_GT",
        "thresholdValue": 2,
        "duration": {
          "seconds":"0",
        },
      },
    }
  ],

Untuk menetapkan kolom filter, Anda memerlukan nama resource SLO tertentu. Nilai ini berbentuk projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}. Untuk mengetahui informasi tentang cara menemukan ID SLO, lihat Mencantumkan SLO.

Untuk membuat pemberitahuan tentang tingkat penggunaan, gunakan pemilih deret waktu select_slo_burn_rate. Pemilih ini menggunakan dua nilai, SLO target dan periode lihat balik. Untuk informasi selengkapnya, lihat select_slo_burn_rate.

Misalnya, filter berikut mendapatkan tingkat penggunaan SLO target dengan periode lihat balik 1 jam:

"filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")"

Kebijakan pemberitahuan lainnya

Untuk menyelesaikan kebijakan pemberitahuan, tentukan nilai untuk kolom yang tersisa:

  • displayName: Deskripsi kebijakan pemberitahuan.
  • combiner: Menjelaskan logika untuk menggabungkan kondisi. Kebijakan ini hanya memiliki satu kondisi, sehingga AND atau OR berfungsi.
  • notificationChannels: Array saluran notifikasi yang ada untuk digunakan saat kebijakan pemberitahuan dipicu. Untuk informasi tentang cara menemukan dan membuat saluran notifikasi, lihat Saluran notifikasi.
  • documentation: Informasi yang dikirim saat kondisi dilanggar untuk membantu penerima mendiagnosis masalah. Untuk mengetahui detailnya, lihat Documentation.

Membuat kebijakan pemberitahuan

Contoh berikut menggunakan API untuk membuat kebijakan pemberitahuan burn rate. Untuk informasi tentang cara mencantumkan, mengubah, dan menghapus kebijakan pemberitahuan, lihat Mengelola kebijakan pemberitahuan menurut API.

Protokol

Untuk membuat kebijakan pemberitahuan menggunakan curl, kirim pesan POST ke endpoint https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies, dan berikan kebijakan pemberitahuan dalam isi permintaan. JSON dalam isi permintaan menjelaskan kebijakan pemberitahuan yang menggunakan kondisi nilai minimum berdasarkan pemilih deret waktu select_slo_burn_rate dengan periode lihat balik satu jam.

  1. Buat variabel untuk menyimpan isi permintaan:

    CREATE_ALERT_POST_BODY=$(cat <<EOF
    {
      "displayName":"SLO burn-rate alert for ${SLO_ID} with a threshold of 2",
      "combiner":"AND",
      "conditions": [
        {
          "displayName":"SLO burn rate alert for ${SLO_ID} exceeds 2",
          "conditionThreshold": {
            "filter":"select_slo_burn_rate(\"projects/${PROJECT}/services/${SERVICE_ID}/serviceLevelObjectives/${SLO_ID}\", \"60m\")",
            "comparison":"COMPARISON_GT",
            "thresholdValue": 2,
            "duration": {
              "seconds":"0",
            },
          },
        }
      ],
      "notificationChannels": ["${NOTIFICATION_CHANNEL}", ],
      "documentation": {
         "content": "SLO burn for the past 60m exceeded twice the acceptable budget burn rate.",
         "mime_type": "text/markdown",
      },
    }
    EOF
    )
    
  2. Posting permintaan ke endpoint:

    curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" --header "Content-Type: application/json" -X POST -d "${CREATE_ALERT_POST_BODY}" https://monitoring.googleapis.com/v3/projects/${PROJECT_ID}/alertPolicies