全部产品
Search
文档中心

Managed Service for Prometheus:Kelola aturan peringatan sebagai kode menggunakan aturan Managed Service for Prometheus

更新时间:Dec 12, 2025

Perintah ruleup dari promtool Managed Service for Prometheus membaca, memvalidasi, dan mengelola file konfigurasi PrometheusRule. Perintah ini memuat file aturan dari direktori lokal, memvalidasinya, lalu mengunggahnya ke instans Managed Service for Prometheus.

Solusi ini berlaku untuk:

  • Pengguna yang ingin mengelola aturan peringatan dengan Infrastructure as Code (IaC).

  • Topik ini ditujukan bagi pengguna yang ingin menyiapkan pipeline CI untuk menerbitkan aturan peringatan.

Persiapan

  1. Unduh tool promtool

    curl -fsSL "https://o11y-addon-hangzhou-public.oss-cn-hangzhou.aliyuncs.com/share/promtool/install.sh" | bash
  2. Pahami format file aturan

    File PrometheusRule harus mengikuti format berikut:

    # Bidang tambahan, konfigurasi sumber data (wajib)
    datasources:
      - type: aliyun_prometheus #
        instance: <prometheus-instance-id>
        regionId: <region-id>
    
    # Kelompok aturan
    groups:
      - name: <group-name>
        interval: <evaluation-interval>  # Opsional, misalnya "30s"
        rules:
          - alert: <alert-name>
            expr: <promql-expression>
            for: <duration>  # Opsional, misalnya "5m"
            labels:
              severity: <severity-level>  # seperti warning, critical, atau info
              # Label lainnya...
            annotations:
              summary: <summary-text>
              description: <description-text>
              # Anotasi lainnya...

    Konfigurasi sumber data

    • type: Menentukan jenis sumber data. Hanya aliyun_prometheus yang didukung.

    • instance: Menentukan ID instans Managed Service for Prometheus.

    • regionId: Menentukan ID wilayah Alibaba Cloud, seperti cn-hangzhou atau cn-beijing.

    Pemetaan tingkat aturan

    Bidang labels.severity dalam suatu aturan dipetakan ke bidang level pada aturan peringatan Managed Service for Prometheus. Pemetaannya adalah sebagai berikut:

    • warningwarning

    • criticalcritical

    • infoinfo

    • Nilai lainnya → warning (default)

Catatan

  1. Keamanan

    • Jangan masukkan informasi sensitif, seperti ID AccessKey atau Rahasia AccessKey, langsung di command line.

    • Gunakan variabel lingkungan atau file konfigurasi untuk mengelola kredensial.

    • Pastikan file aturan tidak berisi informasi sensitif.

  2. Konfigurasi sumber data

    • Operasi unggah dan hapus memengaruhi semua sumber data yang dikonfigurasi dalam file aturan.

    • Pastikan konfigurasi sumber data benar untuk mencegah kesalahan operasional.

  3. Penimpaan aturan

    • Operasi unggah akan menimpa kelompok aturan yang memiliki nama sama di sumber data target.

    • Operasi hapus menghapus semua aturan dalam kelompok aturan yang ditentukan.

  4. Persyaratan jaringan

    • Operasi unggah dan hapus memerlukan akses ke API Alibaba Cloud.

    • Pastikan Anda memiliki koneksi jaringan yang stabil dan izin akses yang diperlukan.

  5. Operasi konkuren

    • Jangan lakukan unggah dan hapus pada kelompok aturan yang sama secara bersamaan.

    • Setelah operasi selesai, tunggu sebentar sebelum memulai operasi berikutnya.

  6. Kode keluar

    • 0: Operasi berhasil.

    • 1: Operasi gagal. Hal ini dapat disebabkan oleh kegagalan validasi, unggah, atau penghapusan.

Praktik terbaik

Aturan Unggah

  1. Validasi file aturan: Validasi file aturan untuk memeriksa integritas dan sintaks ekspresi Prometheus Query Language (PromQL).

    promtool ruleup --dir /path/to/rules --check

    Contoh output (validasi berhasil):

    Found 1 rule file(s) in directory: /path/to/rules
    
    File: /path/to/rules/prometheus-rules.yml
    Type: prometheus
    Validation: OK

    Contoh output (validasi gagal):

    Found 1 rule file(s) in directory: /path/to/rules
    
    File: /path/to/rules/prometheus-rules.yml
    Type: prometheus
    Validation errors:
      - group "system_resources": rule "HighCPUUsage": invalid PromQL expression: syntax error
      - group "application_services": rule "HighHTTPErrorRate": missing 'for' duration

    Jika validasi gagal, perintah akan keluar dengan kode keluar 1.

  2. Unggah aturan: Setelah aturan divalidasi, unggah ke Managed Service for Prometheus.

    promtool ruleup --dir /path/to/rules --upload --access-key-id YOUR_ACCESS_KEY_ID --access-key-secret YOUR_ACCESS_KEY_SECRET --user-id YOUR_USER_ID

    Konfirmasi interaktif: Perintah menampilkan konfigurasi unggah dan meminta konfirmasi Anda:

    === Upload Configuration ===
    User ID: 123456789
    Rule groups to upload: 5
      [1] system_resources (4 rules)
      [2] application_services (4 rules)
      [3] database (3 rules)
      [4] kubernetes (3 rules)
      [5] business_metrics (2 rules)
    Total rules to upload: 16
    Datasources: 2
      [1] Region: cn-hangzhou, Instance: rw-dfaa8e87409285b4b422b3c862ee
      [2] Region: cn-beijing, Instance: rw-abc123456789
    Workspace: will be automatically retrieved from instance
    
    Do you want to proceed with the upload? (yes/no): 

    Masukkan yes atau y untuk melanjutkan. Input lainnya akan membatalkan unggahan.

    Contoh hasil unggah:

    === Upload Result ===
    Total uploads: 10 (rule groups × datasources)
    Success: 10, Failed: 0
    
    Datasource [1]: Region=cn-hangzhou, Instance=rw-dfaa8e87409285b4b422b3c862ee
      Group: system_resources, Request ID: 12345678-1234-1234-1234-123456789abc
        Uploaded rules: 4
          - HighCPUUsage (ID: rule-001, Status: enabled, Level: warning)
          - HighMemoryUsage (ID: rule-002, Status: enabled, Level: warning)
          - HighDiskUsage (ID: rule-003, Status: enabled, Level: critical)
          - HighDiskIO (ID: rule-004, Status: enabled, Level: warning)
    
    Upload completed! 10 datasource(s) succeeded.

Hapus aturan dari Managed Service for Prometheus

Anda dapat menghapus kelompok aturan tertentu dari instans Managed Service for Prometheus. Validasi yang sama seperti saat unggah juga dilakukan sebelum penghapusan.

promtool ruleup \
  --dir /path/to/rules \
  --delete \
  --access-key-id YOUR_ACCESS_KEY_ID \
  --access-key-secret YOUR_ACCESS_KEY_SECRET \
  --user-id YOUR_USER_ID

Konfirmasi interaktif: Perintah menampilkan konfigurasi penghapusan dan meminta konfirmasi Anda.

=== Delete Configuration ===
User ID: 123456789
Rule groups to delete: 5
  [1] system_resources
  [2] application_services
  [3] database
  [4] kubernetes
  [5] business_metrics
Datasources: 2
  [1] Region: cn-hangzhou, Instance: rw-dfaa8e87409285b4b422b3c862ee
  [2] Region: cn-beijing, Instance: rw-abc123456789

WARNING: This will delete all rules in the specified groups from the datasources!
Do you want to proceed with the deletion? (yes/no): 

Contoh hasil penghapusan:

=== Delete Result ===
Total deletions: 10 (rule groups × datasources)
Success: 10, Failed: 0

Datasource [1]: Region=cn-hangzhou, Instance=rw-dfaa8e87409285b4b422b3c862ee
  Group: system_resources deleted, Request ID: 12345678-1234-1234-1234-123456789abc
  All rules in group deleted successfully

Deletion completed! 10 deletion(s) succeeded.

Lihat informasi dasar tentang file aturan

Anda dapat menampilkan informasi dasar tentang semua file aturan dalam direktori tertentu. Informasi ini mencakup jenis file, jumlah kelompok aturan, dan jumlah sumber data.

promtool ruleup --dir /path/to/rules

Contoh output:

Found 2 rule file(s) in directory: /path/to/rules

File: /path/to/rules/prometheus-rules.yml
Type: prometheus
  PrometheusRule: 5 group(s), 2 datasource(s)
  Total rules: 15

File: /path/to/rules/alertmanager.yml
Type: alertmanager
  AlertManagerRule: 3 receiver(s)
  Route configured: yes

Contoh alur kerja lengkap

  1. Validasi aturan sebelum mengunggahnya.

  2. Gunakan pengendalian versi:

    • Simpan file aturan dalam sistem kontrol versi, seperti Git.

    • Buat backup konfigurasi yang ada sebelum memodifikasi aturan.

  3. Kelola berdasarkan lingkungan:

    • Gunakan direktori file aturan berbeda untuk lingkungan berbeda, seperti lingkungan developer, staging, dan produksi.

    • Gunakan konfigurasi sumber data berbeda untuk membedakan antarlingkungan.

  4. Ikuti konvensi penamaan aturan:

    • Gunakan nama bermakna untuk kelompok aturan, seperti system_resources dan application_services.

    • Gunakan nama alert yang secara jelas menggambarkan peringatan tersebut, seperti HighCPUUsage dan ServiceInstanceDown.

  5. Konfigurasikan sumber data:

    • Pastikan nilai instance dan regionId dalam konfigurasi sumber data akurat.

    • Verifikasi bahwa ID instans ada dan dapat diakses.

  6. Konfirmasi sebelum operasi batch:

    • Operasi unggah atau hapus dapat memengaruhi beberapa sumber data. Periksa dengan cermat informasi konfigurasi sebelum melanjutkan.

    • Sebelum melakukan operasi di lingkungan produksi, validasi terlebih dahulu di lingkungan staging.

Contoh alur kerja lengkap

# 1. Lihat informasi dasar tentang file aturan
promtool ruleup --dir ./example/rule

# 2. Validasi file aturan
promtool ruleup --dir ./example/rule --check

# 3. Unggah aturan ke Alibaba Cloud (memerlukan konfirmasi interaktif)
promtool ruleup \
  --dir ./example/rule \
  --upload \
  --access-key-id $ALIYUN_ACCESS_KEY_ID \
  --access-key-secret $ALIYUN_ACCESS_KEY_SECRET \
  --user-id $ALIYUN_USER_ID

# 4. Hapus aturan (memerlukan konfirmasi interaktif)
promtool ruleup \
  --dir ./example/rule \
  --delete \
  --access-key-id $ALIYUN_ACCESS_KEY_ID \
  --access-key-secret $ALIYUN_ACCESS_KEY_SECRET \
  --user-id $ALIYUN_USER_ID
Variabel lingkungan
export ALIYUN_ACCESS_KEY_ID="your-access-key-id"
export ALIYUN_ACCESS_KEY_SECRET="your-access-key-secret"
export ALIYUN_USER_ID="your-user-id"

Error umum

Tidak ada file aturan ditemukan di direktori

  • Penyebab: Tidak ada file aturan di direktori yang ditentukan.

  • Solusi: Periksa apakah jalur direktori benar. Pastikan direktori berisi file aturan YAML yang valid.

Tidak ada file PrometheusRule ditemukan

  • Penyebab: Tidak ada file bertipe PrometheusRule di direktori tersebut.

  • Solusi: Pastikan setidaknya satu file berisi konfigurasi PrometheusRule.

Tidak ada kelompok aturan ditemukan dalam PrometheusRule

  • Penyebab: Tidak ada kelompok aturan yang dikonfigurasi dalam file PrometheusRule.

  • Solusi: Tambahkan setidaknya satu konfigurasi groups ke file aturan.

Tidak ada sumber data yang dikonfigurasi dalam PrometheusRule

  • Penyebab: Tidak ada sumber data yang dikonfigurasi dalam file aturan.

  • Solusi: Tambahkan konfigurasi datasources di bagian atas file aturan.

Datasource [N] tidak memiliki bidang instance

  • Penyebab: Bidang instance tidak ada atau nilainya kosong dalam konfigurasi sumber data.

  • Solusi: Konfigurasikan nilai instance yang valid untuk setiap sumber data.

Datasource [N] tidak memiliki bidang regionId

  • Penyebab: Bidang regionId tidak ada atau nilainya kosong dalam konfigurasi sumber data.

  • Solusi: Konfigurasikan nilai regionId yang valid untuk setiap sumber data.

Validasi aturan gagal

  • Penyebab: Validasi aturan gagal. Hal ini dapat disebabkan oleh kesalahan sintaks PromQL atau bidang wajib yang tidak ada.

  • Solusi: Gunakan parameter --check untuk melihat pesan kesalahan validasi secara detail. Perbaiki kesalahan tersebut lalu coba lagi.

--access-key-id diperlukan saat --upload diatur

  • Penyebab: ID AccessKey tidak diberikan saat menggunakan --upload.

  • Solusi: Tambahkan parameter --access-key-id.

--user-id diperlukan saat --upload diatur

  • Penyebab: ID pengguna tidak diberikan saat menggunakan --upload.

  • Solusi: Tambahkan parameter --user-id.

Referensi

Bantuan perintah ruleup

Jalankan promtool ruleup --help untuk melihat bantuan perintah. Tabel berikut menjelaskan parameter-parameternya.

Parameter

Tipe

Nilai default

Deskripsi

--dir

string

""

Jalur direktori yang berisi file aturan YAML.

--check

bool

false

Memeriksa apakah konfigurasi valid. Jika ditemukan kesalahan, perintah akan keluar dengan kode status bukan nol.

--upload

bool

false

Mengunggah PrometheusRule ke instans Managed Service for Prometheus.

--delete

bool

false

Menghapus PrometheusRule dari instans Managed Service for Prometheus.

--access-key-id

string

-

ID AccessKey Akun Alibaba Cloud Anda. Parameter ini wajib untuk operasi unggah atau hapus.

--access-key-secret

string

-

Rahasia AccessKey Akun Alibaba Cloud Anda. Parameter ini wajib untuk operasi unggah atau hapus.

--user-id

string

-

ID Akun Alibaba Cloud Anda. Parameter ini wajib untuk operasi unggah atau hapus.