Kluster ACK Edge menempatkan node di pusat data offline tempat VPC dan node edge berada pada bidang jaringan yang berbeda. Agen Prometheus standar tidak dapat langsung mengakses titik akhir Node Exporter atau GPU Exporter di node edge. Managed Service for Prometheus mengatasi hal ini dengan memanfaatkan saluran data cloud-native bawaan dalam kluster ACK Edge untuk secara otomatis menjembatani kesenjangan antara cloud dan edge. Topik ini menjelaskan cara menghubungkan Managed Service for Prometheus ke kluster ACK Edge, melihat dasbor yang telah ditentukan sebelumnya, serta mengonfigurasi aturan peringatan.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Menggunakan kluster ACK Edge versi 1.18.8-aliyunedge.1 atau lebih baru. Untuk informasi selengkapnya, lihat Buat kluster ACK Edge.
Menginstal add-on ack-arms-prometheus versi 1.1.4 atau lebih baru di kluster ACK Edge. Untuk memeriksa atau meningkatkan versi, lihat Periksa versi ack-arms-prometheus.
Untuk kluster yang menjalankan Kubernetes versi sebelum 1.26: mengaktifkan penerusan port dalam ConfigMap
kube-system/edge-tunnel-server-cfguntuk port Node Exporter 9100 dan port GPU Exporter 9445:http-proxy-ports: 9445 https-proxy-ports: 9100
Cara kerja pemantauan di kluster edge
Karena VPC di cloud dan node edge berada pada bidang jaringan yang berbeda, Agen Prometheus di cloud tidak dapat langsung mengakses titik akhir Node Exporter dan GPU Exporter di node edge.
Mulai dari versi 1.1.4, add-on ack-arms-prometheus menggunakan saluran data komunikasi O&M cloud-native bawaan (Tunnel) dalam kluster ACK Edge untuk secara otomatis membuat tautan pengumpulan data antara cloud dan edge.
Kluster ACK Edge mendukung Edisi Dasar Pemantauan Kontainer.
Lihat dasbor Grafana
Login ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, pilih Operations > Prometheus Monitoring.
Jika ini pertama kalinya Anda mengakses halaman ini, ikuti petunjuk di layar dan klik Install. Konsol akan menginstal add-on secara otomatis dan mengarahkan Anda ke halaman detail Pemantauan Prometheus setelah instalasi selesai.
Di halaman Prometheus Monitoring, lihat data pemantauan untuk node, aplikasi, dan GPU pada dasbor yang telah ditentukan sebelumnya.
Konfigurasi aturan peringatan Prometheus
Aturan peringatan memicu notifikasi ketika metrik melewati ambang batas yang telah ditentukan. Saat peringatan dipicu, Managed Service for Prometheus mengirimkan notifikasi kepada kontak dalam kelompok kontak yang ditentukan. Saluran notifikasi yang didukung mencakup panggilan telepon, pesan teks, email, DingTalk, WeCom, dan webhook.
Konfigurasi peringatan mencakup dua langkah: buat kontak untuk menerima notifikasi, lalu buat aturan peringatan. Untuk informasi tentang penyiapan saluran notifikasi DingTalk dan WeCom, lihat DingTalk Robot dan WeCom Robot.
Langkah 1: Buat kontak
Login ke Konsol ARMS. Di panel navigasi kiri, pilih Alert Management > Notification Objects.
Di tab Contacts, klik Create Contact.
Di kotak dialog Create Contact, konfigurasikan parameter dan klik OK.
PentingMaksimal 100 kontak dapat dibuat.
Parameter Deskripsi Name Nama kontak. Phone Number Nomor ponsel kontak. Digunakan untuk notifikasi panggilan telepon dan pesan teks. Hanya nomor ponsel yang telah diverifikasi yang dapat digunakan dalam kebijakan notifikasi. Untuk informasi selengkapnya, lihat Verifikasi nomor ponsel. Email Alamat email kontak. Digunakan untuk notifikasi email.
Langkah 2: Buat aturan peringatan Prometheus
Aturan peringatan Prometheus mendukung dua jenis pemeriksaan:
| Jenis pemeriksaan | Kapan digunakan |
|---|---|
| Static Threshold | Pantau metrik yang telah ditentukan dengan kondisi ambang batas sederhana. |
| Custom PromQL | Pantau metrik yang tidak tersedia dalam daftar preset Static Threshold, menggunakan ekspresi PromQL kustom. |
Buat aturan peringatan berdasarkan ambang batas statis
Login ke Konsol ARMS.
Di panel navigasi kiri, pilih Managed Service for Prometheus > Prometheus Alert Rules.
Di halaman Prometheus Alert Rules, klik Create Prometheus Alert Rule.
Di halaman Create Prometheus Alert Rule, konfigurasikan parameter berikut dan klik Save.
Kondisi filter dibatasi hingga 300 karakter.
Parameter Deskripsi Contoh Alert Rule Name Nama aturan peringatan. Kluster produksi - peringatan penggunaan CPU kontainer Check Type Pilih Static Threshold. Static Threshold Prometheus Instance Instans Prometheus yang akan dipantau. Kluster produksi Alert Contact Group Kelompok kontak yang akan diberi notifikasi saat peringatan dipicu. Kelompok yang tersedia bervariasi tergantung jenis instans Prometheus. Beban Kubernetes Alert Metric Metrik yang akan dipantau. Metrik yang tersedia bervariasi tergantung kelompok kontak. Penggunaan CPU Kontainer Alert Condition Kondisi yang memicu event peringatan. Utilisasi CPU lebih besar dari 80% Filter Conditions Cakupan sumber daya yang diterapkan oleh aturan peringatan. Lihat jenis kondisi filter di bawah ini. Traverse Data Preview Menampilkan pernyataan PromQL untuk kondisi peringatan dan graf deret waktu. Ambang batas ditampilkan sebagai garis merah; data di atasnya ditampilkan dalam warna merah tua. Tersedia setelah Anda menetapkan kondisi filter. — Duration Kapan event peringatan dihasilkan: segera saat titik data mencapai ambang batas, atau hanya setelah kondisi terpenuhi terus-menerus selama N menit. 1 Alert Level Tingkat keparahan peringatan. Nilai yang valid: Default (terendah), P4, P3, P2, P1 (tertinggi). Default Alert Message Pesan yang dikirim ke kontak saat peringatan dipicu. Mendukung variabel templat Go. Namespace: {{$labels.namespace}} / Pod: {{$labels.pod_name}} / Container: {{$labels.container}} Utilisasi CPU: {{$labels.metrics_params_opt_label_value}} {{$labels.metrics_params_value}}%. Nilai saat ini: {{ printf "%.2f" $value }}%Alert Notification Simple Mode: Atur Notification Objects, Notification Period, dan apakah akan mengirim ulang notifikasi. Standard Mode: Tetapkan kebijakan notifikasi, atau buat nanti di halaman Notification Policy. Untuk informasi selengkapnya, lihat Buat dan kelola kebijakan notifikasi. Do Not Specify Notification Policy Alert Check Cycle (Advanced Settings) Seberapa sering aturan mengevaluasi kondisi peringatan, dalam satuan menit. Default: 1. Minimum: 1. 1 Check When Data Is Complete (Advanced Settings) Apakah menunggu data lengkap sebelum mengevaluasi kondisi. Yes Tags (Advanced Settings) Tag untuk aturan peringatan, digunakan untuk mencocokkan kebijakan notifikasi. — Annotations (Advanced Settings) Anotasi untuk aturan peringatan. — Jenis kondisi filter:
Tipe Deskripsi Traverse Berlaku untuk semua sumber daya dalam instans Prometheus. Dipilih secara default. Equal Berlaku untuk satu nama sumber daya yang Anda tentukan. Not Equal Berlaku untuk semua sumber daya kecuali yang Anda tentukan. Regex match Berlaku untuk semua sumber daya yang namanya sesuai dengan ekspresi reguler. Regex not match Berlaku untuk semua sumber daya yang namanya tidak sesuai dengan ekspresi reguler.
Buat aturan peringatan menggunakan pernyataan PromQL kustom
Gunakan jenis pemeriksaan Custom PromQL untuk memantau metrik yang tidak tersedia dalam daftar preset Static Threshold.
Di halaman Create Prometheus Alert Rule, atur Check Type ke Custom PromQL, konfigurasikan parameter berikut, dan klik Save.
| Parameter | Deskripsi | Contoh |
|---|---|---|
| Alert Rule Name | Nama aturan peringatan. | Utilisasi CPU Pod melebihi 8% |
| Check Type | Pilih Custom PromQL. | Custom PromQL |
| Prometheus Instance | Instans Prometheus yang akan dipantau. | — |
| Reference Alert Contact Group | Kelompok kontak yang akan diberi notifikasi. Kelompok yang tersedia bervariasi tergantung jenis instans Prometheus. | Beban Kubernetes |
| Reference Metrics | (Opsional) Pilih metrik preset untuk mengisi bidang Custom PromQL Statements dengan ekspresi PromQL-nya. Modifikasi ekspresi sesuai kebutuhan. | Peringatan penggunaan disk Pod |
| Custom PromQL Statements | Ekspresi PromQL yang menentukan kondisi peringatan. | max(container_fs_usage_bytes{pod!="", namespace!="arms-prom",namespace!="monitoring"}) by (pod_name, namespace, device)/max(container_fs_limit_bytes{pod!=""}) by (pod_name,namespace, device) * 100 > 90 |
| Data Preview | Menampilkan graf deret waktu metrik. Arahkan penunjuk ke kurva untuk melihat detail pada titik tertentu; pilih periode waktu untuk memperbesar tampilan. | — |
| Duration | Kapan event peringatan dihasilkan: segera saat titik data mencapai ambang batas, atau hanya setelah kondisi terpenuhi selama N menit. | 1 |
| Alert Level | Tingkat keparahan peringatan. Nilai yang valid: Default (terendah), P4, P3, P2, P1 (tertinggi). | Default |
| Alert Message | Pesan notifikasi. Mendukung variabel templat Go. | Namespace: {{$labels.namespace}} / Pod: {{$labels.pod_name}} / Utilisasi disk {{$labels.device}} melebihi 90%. Nilai saat ini: {{ printf "%.2f" $value }}% |
| Alert Notification | Simple Mode atau Standard Mode. Lihat bagian Static Threshold untuk detailnya. | Do Not Specify Notification Policy |
| Alert Check Cycle (Advanced Settings) | Frekuensi evaluasi dalam satuan menit. Default: 1. Minimum: 1. | 1 |
| Check When Data Is Complete (Advanced Settings) | Apakah menunggu data lengkap sebelum mengevaluasi. | Yes |
| Tags (Advanced Settings) | Tag untuk mencocokkan kebijakan notifikasi. | — |
| Annotations (Advanced Settings) | Anotasi untuk aturan peringatan. | — |
FAQ
Periksa versi ack-arms-prometheus
Login ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Klik nama kluster Anda. Di panel navigasi kiri, klik Add-ons.
Di halaman Add-ons, klik tab Logs and Monitoring dan temukan ack-arms-prometheus.
Nomor versi ditampilkan pada kartu komponen. Jika tersedia versi yang lebih baru, tombol Upgrade akan muncul pada kartu—klik untuk memperbarui.
Mengapa pemantauan GPU tidak dapat diterapkan?
Penerapan pemantauan GPU gagal ketika node GPU memiliki taint yang mencegah penjadwalan pod. Jalankan perintah berikut untuk memeriksa:
kubectl describe node cn-beijing.47.100.***.***Jika Anda melihat taint dalam output (misalnya, Taints: test-key=test-value:NoSchedule), atasi dengan salah satu pendekatan berikut:
Hapus taint dari node:
kubectl taint node cn-beijing.47.100.***.*** test-key=test-value:NoSchedule-Tambahkan toleransi ke DaemonSet GPU exporter agar pod dapat dijadwalkan ke node yang memiliki taint:
# Edit DaemonSet ack-prometheus-gpu-exporter kubectl edit daemonset -n arms-prom ack-prometheus-gpu-exporterDalam file YAML, tambahkan bidang
tolerationspada level yang sama dengancontainers:tolerations: - key: "test-key" operator: "Equal" value: "test-value" effect: "NoSchedule" containers: # Bidang lain dihilangkan
Bagaimana cara menghapus sepenuhnya konfigurasi ARMS-Prometheus jika instalasi ulang gagal?
Jika Anda hanya menghapus namespace arms-prom, sumber daya tingkat kluster yang tersisa tetap ada dan menghalangi instalasi ulang. Jalankan perintah berikut untuk menghapus semua sumber daya ARMS-Prometheus:
Hapus namespace:
kubectl delete namespace arms-promHapus ClusterRole:
kubectl delete ClusterRole arms-kube-state-metrics kubectl delete ClusterRole arms-node-exporter kubectl delete ClusterRole arms-prom-ack-arms-prometheus-role kubectl delete ClusterRole arms-prometheus-oper3 kubectl delete ClusterRole arms-prometheus-ack-arms-prometheus-role kubectl delete ClusterRole arms-pilot-prom-k8s kubectl delete ClusterRole gpu-prometheus-exporter kubectl delete ClusterRole o11y:addon-controller:role kubectl delete ClusterRole arms-aliyunserviceroleforarms-clusterroleHapus ClusterRoleBinding:
kubectl delete ClusterRoleBinding arms-node-exporter kubectl delete ClusterRoleBinding arms-prom-ack-arms-prometheus-role-binding kubectl delete ClusterRoleBinding arms-prometheus-oper-bind2 kubectl delete ClusterRoleBinding arms-kube-state-metrics kubectl delete ClusterRoleBinding arms-pilot-prom-k8s kubectl delete ClusterRoleBinding arms-prometheus-ack-arms-prometheus-role-binding kubectl delete ClusterRoleBinding gpu-prometheus-exporter kubectl delete ClusterRoleBinding o11y:addon-controller:rolebinding kubectl delete ClusterRoleBinding arms-kube-state-metrics-agent kubectl delete ClusterRoleBinding arms-node-exporter-agent kubectl delete ClusterRoleBinding arms-aliyunserviceroleforarms-clusterrolebindingHapus Role dan RoleBinding:
kubectl delete Role arms-pilot-prom-spec-ns-k8s kubectl delete Role arms-pilot-prom-spec-ns-k8s -n kube-system kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s kubectl delete RoleBinding arms-pilot-prom-spec-ns-k8s -n kube-system
Setelah menghapus sumber daya tersebut, buka Konsol Container Service for Kubernetes (ACK)Konsol Container Service, pilih Operations > Add-ons, lalu instal ulang ack-arms-prometheus.