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 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 dalam 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

Dengan gcloud CLI, Anda dapat memigrasikan aturan pemberitahuan dan penerima yang sudah ada untuk membuat saluran notifikasi dan kebijakan pemberitahuan 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 memberikan beberapa file konfigurasi Prometheus secara bersamaan untuk membuat beberapa kebijakan pemberitahuan dengan kondisi berbasis PromQL.

  • Jika Anda menyediakan file Alertmanager Prometheus dengan minimal satu penerima, gcloud CLI akan mengonversi setiap penerima menjadi 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 notifikasi, lalu mengaitkan setiap saluran notifikasi 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 Alertmanager Prometheus 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 merupakan implementasi dari ${metric.label.KEY}, dengan value memiliki nilai kueri PromQL.

{{humanize $value}}

${metric.label.value}

Variabel ini merupakan implementasi dari ${metric.label.KEY}, dengan value memiliki 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 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 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. Dengan perintah ini, Anda juga dapat memigrasikan penerima Prometheus ke saluran notifikasi Cloud Monitoring.

  • Untuk memigrasikan aturan pemberitahuan, Anda harus memiliki file file aturan YAML atau JSON Prometheus yang berisi aturan pemberitahuan.
  • Untuk memigrasikan penerima, Anda harus file Alertmanager YAML atau JSON Prometheus 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 Alertmanager Prometheus

Untuk membuat saluran notifikasi dari file konfigurasi Alertmanager Prometheus, 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 membuat saluran notifikasi dari file konfigurasi Alertmanager Prometheus 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 akan 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 email, PagerDuty, dan penerima 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

Kemudian, gcloud CLI membuat kebijakan pemberitahuan seperti dalam 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 Google Cloud Managed Service for Prometheus

Google Cloud mengonfigurasi evaluasi aturan terkelola untuk Google Cloud 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 langkah berikut:

  1. Salin bagian groups resource kustom ke 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 Aturan, CustomRules, atau GlobalRules, sebaiknya buat dan migrasikan file aturan terpisah untuk setiap resource. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Prometheus.

Mengelola filter dan ekspresi agregasi

Aturan 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 di file aturan Prometheus sebelum memigrasikan file.

Misalnya, evaluator aturan terkelola untuk Google Cloud Managed Service for Prometheus mengeksekusi 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 menjalankan kueri 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 gabungkan berdasarkan label dalam kueri Anda untuk memastikan Cloud Monitoring menjalankan kueri sebagaimana mestinya. Misalnya, jika membuat file aturan dari resource kustom Aturan, 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 Aturan dan ClusterRules:

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

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