Saat Anda menetapkan service level objective (SLO) tingkat aplikasi di Alibaba Cloud Service Mesh (ASM), sekumpulan aturan Prometheus akan dihasilkan secara otomatis. Topik ini menjelaskan cara mengimpor aturan tersebut ke instans Prometheus Anda agar SLO dapat berlaku.
Prasyarat
-
Anda telah menetapkan service level objective (SLO) tingkat aplikasi.
-
Pemantauan Prometheus telah diinstal di kluster Container Service for Kubernetes (ACK) Anda. Untuk informasi selengkapnya, lihat Pemantauan Prometheus open source dan Integrasikan instans Prometheus yang dikelola sendiri untuk pemantauan mesh.
Langkah 1: Impor aturan ke Prometheus
Topik ini mengasumsikan Anda telah men-deploy Prometheus menggunakan Prometheus Operator. Dalam mode ini, konfigurasi Prometheus dikelola melalui resource kustom. Untuk mengonfigurasi recording rule dan alerting rule, Anda dapat membuat objek PrometheusRule dengan label app: ack-prometheus-operator and release: ack-prometheus-operator.
-
Kebutuhan label tersebut bergantung pada pengaturan
ruleSelectordalam resource kustom Prometheus Anda. JikaruleSelectorkosong, Anda tidak perlu menambahkan label tersebut. Sesuaikan konfigurasi agar sesuai dengan lingkungan Anda. -
Jika Anda menggunakan metode berbeda untuk men-deploy Prometheus, Anda harus menggunakan metode yang sesuai untuk menerapkan aturan yang dihasilkan. Untuk informasi selengkapnya, lihat dokumentasi resmi Prometheus.
-
Dapatkan
ruleSelectordari Konsol ACK.-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Di tab CRDs, klik PrometheusRule.
-
Di tab Resource Objects, pilih monitoring dari daftar drop-down Namespace. Pada baris untuk ack-prometheus-operator-prometheus, klik Edit YAML di kolom Actions.
-
Dapatkan bidang
ruleSelector.Contoh berikut menunjukkan konfigurasi
ruleSelectoryang umum. Agar Prometheus Operator memilih resourcePrometheusRuleAnda, resource tersebut harus memiliki label yang ditentukan dalammatchLabels.ruleSelector: matchLabels: app: ack-prometheus-operator release: ack-prometheus-operator
-
-
Deploy resource PrometheusRule.
-
Buat file bernama prometheusrule.yaml dengan konten berikut.
Dalam file YAML, bidang
labelsharus berisi label yang Anda peroleh pada langkah sebelumnya. Bidangspecberisi aturan Prometheus yang dihasilkan.apiVersion: monitoring.coreos.com/v1 kind: PrometheusRule metadata: labels: app: ack-prometheus-operator release: ack-prometheus-operator name: asm-rules namespace: monitoring spec: # Ganti ini dengan konten file aturan yang dihasilkan Anda. -
Jalankan perintah berikut di kluster ACK Anda untuk menerapkan resource PrometheusRule.
kubectl apply -f prometheusrule.yaml
-
-
Verifikasi bahwa aturan telah diterapkan.
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Di halaman ConfigMaps, pilih monitoring dari daftar drop-down Namespace. Pada baris untuk konfigurasi Prometheus, klik Edit YAML di kolom Actions.
Kontroler
PrometheusRulesecara otomatis mengonversi resource menjadi aturan dan menambahkannya ke ConfigMap agar dapat dibaca oleh Prometheus. Contoh berikut menunjukkan konten ConfigMap, di manamonitoring-asm-rules-fcd9bea9-22b3-462b-8786-424f74f098ec.yamladalah kunci file aturan ASM:up{job= alertmanager main,namespace= monitoring } ) ) >= 0.5 for: 5m labels: severity: critical monitoring-asm-rules-fcd9bea9-22b3-462b-8786-424f74f098ec.yaml: | groups: - name: sloth-slo-sli-recordings-httpbin-asm-slo rules:
-
Langkah 2: Verifikasi pemantauan SLO
Periksa metrik dan peringatan di Prometheus
-
Sambungkan ke kluster ACK Anda menggunakan kubectl dan jalankan perintah berikut untuk meneruskan layanan Prometheus ke port lokal.
kubectl --namespace monitoring port-forward svc/ack-prometheus-operator-prometheus 9090 -
Klik https://localhost:9090 untuk mengakses konsol Prometheus.
-
Di UI Prometheus, masukkan asm_slo_info di browser ekspresi lalu klik Execute untuk melihat konfigurasi SLO Anda.
Kueri mengembalikan hasil
asm_slo_info{asm_slo="asm-slo",slo_id="httpbin-asm-slo",slo_mode="cli-gen-prom",slo_objective="99.9",slo_service="httpbin",slo_spec="prometheus/v1",slo_version="dev"}, yang menunjukkan bahwa recording rule Prometheus Anda telah dikonfigurasi dengan benar. -
Di bagian atas halaman, klik Alerts untuk melihat aturan peringatan.
Kehadiran dua aturan berikut menunjukkan bahwa aturan peringatan Prometheus Anda telah dikonfigurasi dengan benar. Dua aturan peringatan bernama asm-alert ditampilkan, keduanya menunjukkan 0 active (tidak ada peringatan aktif).
Skenario 1: Simulasi Trafik Normal
-
Jalankan skrip berikut untuk mensimulasikan traffic dengan tingkat keberhasilan 99,5%.
Ganti
{ingress-gateway-ip}dengan alamat IP aktual gerbang masuk Anda. Untuk mendapatkan alamat IP gerbang masuk, lihat Lihat informasi gerbang masuk.#!/bin/bash for i in `seq 200` do if (( $i == 100 )) then curl -I http://{ingress-gateway-ip}/status/500; else curl -I http://{ingress-gateway-ip}/; fi echo "OK" sleep 0.01; done; -
Kembali ke UI Prometheus, masukkan slo:period_error_budget_remaining:ratio di browser ekspresi, lalu klik Execute. Amati perubahan sisa anggaran kesalahan Anda.
Setelah menjalankan kueri, graf menunjukkan rasio sisa anggaran kesalahan turun tajam dari sekitar 1,0 menjadi sekitar 0,93, yang menunjukkan bahwa anggaran kesalahan sedang dikonsumsi dengan cepat.
Tabel berikut menjelaskan metrik SLO utama. Untuk informasi selengkapnya, lihat Ikhtisar service level objective (SLO).
Metric
Description
slo:period_error_budget_remaining:ratio
Sisa anggaran kesalahan untuk periode SLO 30 hari.
slo:sli_error:ratio_rate30d
Tingkat kesalahan rata-rata selama periode SLO 30 hari.
slo:period_burn_rate:ratio
Laju pembakaran selama periode SLO 30 hari.
slo:current_burn_rate:ratio
Laju pembakaran saat ini.
Skenario 2: Simulasikan traffic kesalahan
Secara manual picu kegagalan untuk menguji aturan peringatan.
-
Jalankan skrip berikut untuk mensimulasikan traffic dengan tingkat keberhasilan 50%, yang setara dengan laju pembakaran 50.
Ganti
{ingress-gateway-ip}dengan alamat IP aktual gerbang masuk Anda.#!/bin/bash for i in `seq 200` do curl -I http://{ingress-gateway-ip}/ curl -I http://{ingress-gateway-ip}/status/500; echo "OK" sleep 0.01; done; -
Kembali ke halaman Alerts di konsol Prometheus untuk melihat peringatan yang dipicu.
Di halaman Alerts, di bawah path file aturan
monitoring-asm-rules.yaml, dalam grup aturansloth-slo-alerts-httpbin-asm-slo2, dua aturan peringatan asm-alert berada dalam status aktif (1 active):-
Aturan pertama:
sloth_severity=page,sloth_window=30m, label mencakupalertlabel="bbb",pagelabels="ddd",sloth_id="httpbin-asm-slo2". -
Aturan kedua:
sloth_severity=ticket,sloth_window=2h, label mencakupticketlabel="eee".
-
Lihat peringatan di konsol Alertmanager
Dalam kerangka kerja Prometheus, komponen Alertmanager mengumpulkan peringatan yang dihasilkan oleh server Prometheus dan meneruskannya ke penerima berdasarkan konfigurasi Anda.
-
Jalankan perintah berikut untuk meneruskan layanan ack-prometheus-operator-alertmanager ke port lokal.
kubectl --namespace monitoring port-forward svc/ack-prometheus-operator-alertmanager 9093 -
Klik https://localhost:9093 untuk mengakses konsol Alertmanager.
-
Di halaman Alertmanager, klik ikon
expand untuk melihat detail peringatan.Daftar peringatan Alertmanager menunjukkan dua peringatan kustom bertipe asm-alert: satu dengan
slo_severity=page(slo_window=30m) dan lainnya denganslo_severity=ticket(slo_window=2h), yang menunjukkan bahwa aturan peringatan SLO ASM telah berhasil dipicu.