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
Unduh tool promtool
curl -fsSL "https://o11y-addon-hangzhou-public.oss-cn-hangzhou.aliyuncs.com/share/promtool/install.sh" | bashPahami 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. Hanyaaliyun_prometheusyang didukung.instance: Menentukan ID instans Managed Service for Prometheus.regionId: Menentukan ID wilayah Alibaba Cloud, seperticn-hangzhouataucn-beijing.
Pemetaan tingkat aturan
Bidang
labels.severitydalam suatu aturan dipetakan ke bidanglevelpada aturan peringatan Managed Service for Prometheus. Pemetaannya adalah sebagai berikut:warning→warningcritical→criticalinfo→infoNilai lainnya →
warning(default)
Catatan
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.
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.
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.
Persyaratan jaringan
Operasi unggah dan hapus memerlukan akses ke API Alibaba Cloud.
Pastikan Anda memiliki koneksi jaringan yang stabil dan izin akses yang diperlukan.
Operasi konkuren
Jangan lakukan unggah dan hapus pada kelompok aturan yang sama secara bersamaan.
Setelah operasi selesai, tunggu sebentar sebelum memulai operasi berikutnya.
Kode keluar
0: Operasi berhasil.1: Operasi gagal. Hal ini dapat disebabkan oleh kegagalan validasi, unggah, atau penghapusan.
Praktik terbaik
Aturan Unggah
Validasi file aturan: Validasi file aturan untuk memeriksa integritas dan sintaks ekspresi Prometheus Query Language (PromQL).
promtool ruleup --dir /path/to/rules --checkContoh output (validasi berhasil):
Found 1 rule file(s) in directory: /path/to/rules File: /path/to/rules/prometheus-rules.yml Type: prometheus Validation: OKContoh 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' durationJika validasi gagal, perintah akan keluar dengan kode keluar 1.
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_IDKonfirmasi 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
yesatauyuntuk 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_IDKonfirmasi 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/rulesContoh 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: yesContoh alur kerja lengkap
Validasi aturan sebelum mengunggahnya.
Gunakan pengendalian versi:
Simpan file aturan dalam sistem kontrol versi, seperti Git.
Buat backup konfigurasi yang ada sebelum memodifikasi aturan.
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.
Ikuti konvensi penamaan aturan:
Gunakan nama bermakna untuk kelompok aturan, seperti
system_resourcesdanapplication_services.Gunakan nama alert yang secara jelas menggambarkan peringatan tersebut, seperti
HighCPUUsagedanServiceInstanceDown.
Konfigurasikan sumber data:
Pastikan nilai
instancedanregionIddalam konfigurasi sumber data akurat.Verifikasi bahwa ID instans ada dan dapat diakses.
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.
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
groupske file aturan.
Tidak ada sumber data yang dikonfigurasi dalam PrometheusRule
Penyebab: Tidak ada sumber data yang dikonfigurasi dalam file aturan.
Solusi: Tambahkan konfigurasi
datasourcesdi bagian atas file aturan.
Datasource [N] tidak memiliki bidang instance
Penyebab: Bidang
instancetidak ada atau nilainya kosong dalam konfigurasi sumber data.Solusi: Konfigurasikan nilai
instanceyang valid untuk setiap sumber data.
Datasource [N] tidak memiliki bidang regionId
Penyebab: Bidang
regionIdtidak ada atau nilainya kosong dalam konfigurasi sumber data.Solusi: Konfigurasikan nilai
regionIdyang 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
--checkuntuk 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 |
| string |
| Jalur direktori yang berisi file aturan YAML. |
| bool |
| Memeriksa apakah konfigurasi valid. Jika ditemukan kesalahan, perintah akan keluar dengan kode status bukan nol. |
| bool |
| Mengunggah PrometheusRule ke instans Managed Service for Prometheus. |
| bool |
| Menghapus PrometheusRule dari instans Managed Service for Prometheus. |
| string | - | ID AccessKey Akun Alibaba Cloud Anda. Parameter ini wajib untuk operasi unggah atau hapus. |
| string | - | Rahasia AccessKey Akun Alibaba Cloud Anda. Parameter ini wajib untuk operasi unggah atau hapus. |
| string | - | ID Akun Alibaba Cloud Anda. Parameter ini wajib untuk operasi unggah atau hapus. |