Memigrasikan aturan pemberitahuan dan penerima dari Prometheus

Halaman ini menjelaskan cara memigrasikan aturan pemberitahuan Prometheus ke kebijakan pemberitahuan Cloud Monitoring dengan kondisi berbasis PromQL. Proses migrasi ini berguna jika Anda menggunakan PromQL di lingkungan di luar Google Cloud. Dengan memigrasikan aturan pemberitahuan Prometheus ke Cloud Monitoring, Anda dapat mengelola semua kebijakan pemberitahuan di satu lingkungan.

Untuk mengetahui informasi umum tentang kebijakan pemberitahuan dengan kondisi berbasis PromQL, lihat Kebijakan pemberitahuan dengan PromQL.

Anda juga dapat mengimpor dasbor Grafana. Untuk mengetahui informasi selengkapnya, lihat Mengimpor dasbor Grafana ke Cloud Monitoring.

Cara kerja migrasi

Di gcloud CLI, Anda dapat memigrasikan aturan pemberitahuan dan penerima yang ada untuk membuat kebijakan pemberitahuan dan saluran notifikasi Cloud Monitoring. gcloud CLI dapat melakukan jenis migrasi berikut:

  • Jika Anda memberikan file konfigurasi Prometheus dengan aturan pemberitahuan, gcloud CLI akan membuat kebijakan pemberitahuan dengan kondisi berbasis PromQL.

    Anda dapat menyediakan beberapa file konfigurasi Prometheus secara bersamaan untuk membuat beberapa kebijakan pemberitahuan dengan kondisi berbasis PromQL.

  • Jika Anda menyediakan file Alertmanager Prometheus dengan setidaknya satu penerima, gcloud CLI akan mengonversi setiap penerima ke saluran notifikasi yang setara di Monitoring.

  • Jika Anda memberikan file Prometheus Alertmanager dan file konfigurasi Prometheus secara bersamaan, gcloud CLI akan membuat kebijakan pemberitahuan dan saluran pemberitahuan, lalu mengaitkan setiap saluran pemberitahuan baru dengan kebijakan pemberitahuan baru.

    Jika Anda memberikan beberapa file konfigurasi dengan aturan pemberitahuan, gcloud CLI akan menetapkan setiap saluran notifikasi dari file Alertmanager ke setiap kebijakan pemberitahuan baru.

Jika aturan pemberitahuan Prometheus Anda mereferensikan metrik kustom, gcloud CLI memerlukan deskripsi metrik yang setara untuk membuat kebijakan pemberitahuan.

File konfigurasi Prometheus dan file Prometheus Alertmanager harus diformat sebagai file aturan Prometheus yang valid dalam YAML atau JSON.

Pemetaan Kolom

gcloud CLI memetakan kolom antara aturan pemberitahuan Prometheus dan kebijakan pemberitahuan Cloud Monitoring sebagai berikut:

Aturan pemberitahuan Prometheus Kebijakan pemberitahuan Cloud Monitoring
alert conditionPrometheusQueryLanguage.alertRule
expr conditionPrometheusQueryLanguage.query
for conditionPrometheusQueryLanguage.duration
labels conditionPrometheusQueryLanguage.labels
annotations: "summary" documentation.subject
annotations: "description" documentation.content

Variabel dokumentasi Google Cloud dalam aturan pemberitahuan Prometheus yang dimigrasikan

Prometheus menggunakan template kolom pemberitahuan untuk mengonfigurasi variabel dalam anotasi dan label aturan pemberitahuan. Saat Anda memigrasikan aturan pemberitahuan Prometheus yang memiliki template kolom pemberitahuan, Cloud Monitoring akan mengonversi template tersebut menjadi variabel dokumentasi Cloud Monitoring sebagai berikut:

Template kolom pemberitahuan Prometheus Variabel dokumentasi Cloud Monitoring
{{$value}}

${metric.label.value}

Variabel ini adalah implementasi ${metric.label.KEY}, dengan value menyimpan nilai kueri PromQL.

{{humanize $value}}

${metric.label.value}

Variabel ini adalah implementasi ${metric.label.KEY}, dengan value menyimpan nilai kueri PromQL.

{{$labels}} ${metric_or_resource.labels}
{{humanize $labels}} ${metric_or_resource.labels}
{{$labels.key}}

Muncul sebagai ${metric_or_resource.label.KEY} dalam konfigurasi dokumentasi kebijakan pemberitahuan.

  • Jika KEY adalah label yang valid, variabel ini akan dirender dalam notifikasi sebagai nilai ${metric.label.KEY}.
  • Jika KEY adalah resource yang valid, variabel ini akan dirender dalam notifikasi sebagai nilai ${resource.label.KEY}.
  • Jika KEY bukan label yang valid atau resource yang valid, variabel ini akan dirender dalam notifikasi sebagai string kosong.
{{humanize $labels.<key>}}

Muncul sebagai ${metric_or_resource.label.KEY} dalam konfigurasi dokumentasi kebijakan pemberitahuan.

  • Jika KEY adalah label yang valid, variabel ini akan dirender dalam notifikasi sebagai nilai ${metric.label.KEY}.
  • Jika KEY adalah resource yang valid, variabel ini akan dirender dalam notifikasi sebagai nilai ${resource.label.KEY}.
  • Jika KEY bukan label yang valid atau resource yang valid, variabel ini akan dirender dalam notifikasi sebagai string kosong.

Memigrasikan aturan pemberitahuan dan penerima dari Prometheus

Untuk memigrasikan aturan pemberitahuan Prometheus ke kebijakan pemberitahuan Cloud Monitoring dengan kondisi berbasis PromQL, gunakan perintah gcloud alpha monitoring policies migrate. Perintah ini juga memungkinkan Anda memigrasikan penerima Prometheus ke saluran notifikasi Cloud Monitoring.

  • Untuk memigrasikan aturan pemberitahuan, Anda harus memiliki file file aturan Prometheus YAML atau JSON yang berisi aturan pemberitahuan.
  • Untuk memigrasikan penerima, Anda harus memiliki file Alertmanager Prometheus YAML atau JSON yang berisi penerima.

Google Cloud tidak mendukung migrasi aturan perekaman Prometheus. Untuk menggunakan aturan perekaman, sebaiknya gunakan evaluator aturan yang di-deploy sendiri.

Membuat kebijakan pemberitahuan dari file konfigurasi Prometheus

Untuk membuat kebijakan pemberitahuan dari file konfigurasi Prometheus, jalankan perintah berikut. Anda dapat membuat beberapa kebijakan pemberitahuan dengan memberikan beberapa jalur file:

gcloud alpha monitoring policies migrate \
--policies-from-prometheus-alert-rules-yaml=PATH_TO_FILE_1,PATH_TO_FILE_2

Membuat saluran notifikasi dari file konfigurasi Prometheus Alertmanager

Untuk membuat saluran notifikasi dari file konfigurasi Prometheus Alertmanager, jalankan perintah berikut:

gcloud alpha monitoring policies migrate \
--channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE

Membuat kebijakan pemberitahuan dan saluran notifikasi secara bersamaan

Untuk membuat kebijakan pemberitahuan dari file konfigurasi Prometheus dan untuk membuat saluran notifikasi dari file konfigurasi Prometheus Alertmanager secara bersamaan, jalankan perintah berikut:

gcloud alpha monitoring policies migrate \
--policies-from-prometheus-alert-rules-yaml=PATH_TO_FILE_1,PATH_TO_FILE_2 \
--channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE

Contoh

Anda memiliki file konfigurasi Prometheus dengan aturan pemberitahuan yang mengirimkan pemberitahuan saat penggunaan CPU tetap lebih besar dari 75% selama satu menit. Aturan pemberitahuan dikonfigurasi sebagai berikut:

groups:
- name: Utilization_Alerts
  interval: 30s
  rules:
  - alert: CPU_Utilization_Over_75
    expr: compute_googleapis_com:instance_cpu_utilization > 75
    for: 60s
    labels:
      severity: page
    annotations:
      subject: "Subject: ${metric.label.value}"
      description: "CPU utilization is over 75%"

Anda juga memiliki file Prometheus AlertManager yang berisi penerima email, PagerDuty, dan webhook.

receivers:
- name: 'team-emails'
  email_configs:
  - to: EMAIL_ADDRESS
- name: 'team-pager'
  pagerduty_configs:
  - service_key: SERVICE_KEY
- name: 'team-webhook'
  webhook_configs:
  - url: WEBHOOK_ADDRESS

Untuk membuat kebijakan pemberitahuan dan saluran notifikasi, jalankan perintah berikut:

gcloud alpha monitoring policies migrate \
--policies-from-prometheus-alert-rules-yaml=PATH_TO_CONFIG_FILE \
--channels-from-prometheus-alertmanager-yaml=PATH_TO_ALERTMANAGER_FILE

gcloud CLI kemudian akan membuat kebijakan pemberitahuan seperti contoh berikut:

  {
  "name": "projects/PROJECT_ID/alertPolicies/POLICY_ID",
  "displayName": "Utilization_Alerts/CPU_Utilization_Over_75",
  "documentation": {
    "content": "CPU utilization is over 75%",
    "mimeType": "text/markdown",
    "subject": "Subject: ${metric.label.value}"
  },
  "userLabels": {},
  "conditions": [
    {
      "name": "projects/PROJECT_ID/alertPolicies/POLICY_ID/conditions/CONDITION_ID",
      "displayName": "CPU_Utilization_Over_75"
      "conditionPrometheusQueryLanguage": {
        "alertRule": "CPU_Utilization_Over_75",
        "duration": "60s",
        "evaluationInterval": "30s",
        "labels": {
          "severity": "page"
        },
        "query": "compute_googleapis_com:instance_cpu_utilization > 75",
        "ruleGroup": "Utilization_Alerts"
      }
    }
  ],
  "alertStrategy": {},
  "combiner": "OR",
  "enabled": true,
  "notificationChannels": [
    "projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_1",
    "projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_2",
    "projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_3"
  ]
}

Memigrasikan aturan pemberitahuan dari Managed Service for Prometheus

Google Cloud mengonfigurasi evaluasi aturan terkelola untuk Managed Service for Prometheus menggunakan resource kustom Rules, ClusterRules, dan GlobalRules.

Untuk memigrasikan resource ini ke kebijakan pemberitahuan Google Cloud dengan kondisi berbasis PromQL, lakukan hal berikut:

  1. Salin bagian groups dari resource kustom ke dalam file aturan Prometheus baru.

  2. Migrasikan file aturan dengan menggunakan gcloud CLI.

Misalnya, Anda memiliki resource kustom Aturan berikut:

apiVersion: monitoring.googleapis.com/v1
kind: Rules
metadata:
  namespace: NAMESPACE_NAME
  name: example-rules
spec:
  groups:
  - name: example
    interval: 30s
    rules:
    - alert: FewerThanTenInstancesUp
      expr: sum(up) < 10

File aturan Prometheus yang dibuat dengan menyalin groups dari resource kustom Aturan sebelumnya akan terlihat seperti berikut:

  groups:
  - name: example
    interval: 30s
    rules:
    - alert: FewerThanTenInstancesUp
      expr: sum(up) < 10

Memigrasikan beberapa resource kustom Aturan

Jika Anda ingin memigrasikan beberapa Rules, CustomRules, atau GlobalRules, sebaiknya buat dan migrasikan file aturan terpisah untuk setiap resource. Untuk informasi selengkapnya, lihat dokumentasi Prometheus.

Mengelola ekspresi filter dan agregasi

Rules dan ClusterRules secara otomatis memfilter ekspresi pemberitahuan Prometheus berdasarkan label tertentu. Untuk mempertahankan perilaku ini dalam kueri kebijakan pemberitahuan yang dimigrasikan, Anda harus menyertakan label ini secara eksplisit dalam filter atau ekspresi agregasi dalam file aturan Prometheus sebelum memigrasikan file.

Misalnya, evaluator aturan terkelola untuk Managed Service for Prometheus menjalankan ekspresi sum(up) < 10 sebagai berikut:

sum(up{project_id="test-project", cluster="test-cluster", namespace="NAMESPACE_NAME"}) < 10

Namun, jika kebijakan pemberitahuan memiliki kueri PromQL sum(up) < 10, Cloud Monitoring akan mengeksekusi kueri tersebut hanya sebagai sum(up) < 10. Kueri ini diterapkan ke setiap project, cluster, dan namespace Google Cloud dalam cakupan metrik Anda. Untuk menghindari perilaku ini, sebaiknya agregasi menurut label dalam kueri Anda untuk memastikan Cloud Monitoring mengeksekusi kueri Anda sebagaimana mestinya. Misalnya, saat membuat file aturan dari resource kustom Rules, Anda dapat mengubah sum(up) < 10 menjadi ekspresi berikut:

sum (up) by (project_id, cluster, namespace) < 10

Ekspresi sebelumnya menghasilkan deret waktu terpisah untuk setiap project, cluster, dan namespace Google Cloud, lalu membandingkan setiap deret waktu dengan nilai minimum pemberitahuan <10.

Tabel berikut menunjukkan urutan evaluasi filter ekspresi pemberitahuan untuk Rules dan ClusterRules:

Jenis resource aturan Filter label
Aturan
  1. project_id
  2. cluster
  3. namespace
ClusterRule
  1. project_id
  2. cluster

Untuk informasi selengkapnya tentang perilaku pemfilteran dalam ekspresi Prometheus, lihat Pemilih vektor instan.