Prometheus adalah alat pemantauan open-source untuk aplikasi cloud-native. Topik ini menjelaskan cara men-deploy Prometheus pada kluster ACK.
Latar Belakang
Topik ini membahas cara memantau komponen sistem dan entitas sumber daya dalam kluster Kubernetes. Target pemantauan terbagi menjadi dua kategori:
-
Pemantauan sumber daya: Melacak penggunaan sumber daya node, kluster, dan Pod.
-
Pemantauan aplikasi: Melacak metrik internal aplikasi seperti jumlah pengguna real-time. Ekspos port untuk mengaktifkan pemantauan dan peringatan tingkat aplikasi.
Target pemantauan meliputi:
-
Komponen sistem: Komponen Kubernetes bawaan seperti API Server, cloud-controller-manager, dan etcd. Konfigurasikan pemantauan di file konfigurasi masing-masing.
-
Entitas sumber daya statis: Sumber daya seperti status node dan event kernel. Tentukan dalam file konfigurasi untuk mengaktifkan pemantauan.
-
Entitas sumber daya dinamis: Objek workload Kubernetes seperti Deployment, DaemonSet, dan Pod. Deploy Prometheus untuk memantaunya.
-
Aplikasi kustom: Ekspos port dan gunakan Prometheus untuk mengumpulkan metrik kustom dari aplikasi Anda.
Langkah 1: Deploy Prometheus open source
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Di halaman Helm, klik Deploy. Di bagian Chart, cari dan pilih ack-prometheus-operator, pertahankan pengaturan default, lalu klik Next.
-
Komponen diinstal di namespace monitoring secara default, sesuai dengan nama komponen tersebut.
-
Sesuaikan nama aplikasi dan namespace sesuai kebutuhan.
-
-
Di halaman Parameters, pilih versi Chart 12.0.0, atur parameter yang diperlukan, lalu klik OK.
Versi 12.0.0 mendukung konfigurasi alert dengan fitur bawaan.
Parameter opsional:
-
Konfigurasi alert: Mendukung alert DingTalk dan email.
-
Mount ConfigMap kustom ke Prometheus: Mengaktifkan konfigurasi kustom.
-
Mount file dashboard ke Grafana: Menambahkan dashboard kustom.
Setelah instalasi, periksa status komponen di daftar chart Helm pada halaman Helm.
-
Langkah 2: Lihat tugas koleksi Prometheus
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Di halaman Services, pilih namespace monitoring tempat ack-prometheus-operator di-deploy. Di kolom Actions untuk ack-prometheus-operator-prometheus, klik Update.
-
Di kotak dialog, atur Type ke LoadBalancer. Pilih Create Resource, atur Access Method ke Public Access, dan atur Billing Method ke Pay-as-you-go (Pay-by-CU). Klik OK.
Lihat Ikhtisar Penagihan CLB.
-
Setelah pembaruan, salin alamat IP eksternal. Buka UI Prometheus di
<external_IP_address>:9090, misalnya,47.XX.XX.12:9090. -
Di UI Prometheus, navigasikan ke untuk melihat semua tugas pengumpulan data.
Jika semua tugas menampilkan UP, pengumpulan data berjalan dengan benar.

-
Di bilah menu, klik Alerts untuk melihat aturan alert saat ini.

Langkah 3: Lihat data agregat di Grafana
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Di halaman Services, pilih namespace tempat ack-prometheus-operator di-deploy (default: monitoring). Klik Update di kolom Actions untuk Service bernama ack-prometheus-operator-grafana.
-
Di kotak dialog, atur Type ke LoadBalancer. Pilih Create Resource, atur Access Method ke Public Access, dan atur Billing Method ke Pay-as-you-go (Pay-by-CU). Klik OK.
Lihat Ikhtisar Penagihan CLB.
-
Setelah pembaruan, salin alamat IP eksternal. Buka dasbor Grafana di
<external_IP_address>(port default: 80), misalnya,47.XX.XX.12.
Konfigurasi alert
Komponen ack-prometheus-operator mendukung alert DingTalk dan email.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Klik Create, temukan ack-prometheus-operator, lalu lanjutkan ke langkah Next. Di halaman Parameters, pilih versi Chart dan konfigurasikan parameter seperti dijelaskan di bawah.
Jika ack-prometheus-operator sudah terinstal, klik namanya di daftar chart Helm, lalu klik Parameters untuk memperbarui konfigurasi.
Konfigurasi alert DingTalk
-
Di file konfigurasi, temukan field
dingtalkdan aturenabledketrue. -
Di field
token, masukkan URL webhook DingTalk.Lihat Gunakan Chatbot DingTalk untuk Pemantauan dan Peringatan Kubernetes untuk URL webhook.
-
Di field konfigurasi
alertmanagerconfig, temukan konfigurasireceiverdan masukkan nama alert DingTalk yang ditentukan direceivers. Nama default adalahwebhook.
Konfigurasi alert email
-
Masukkan detail email di bagian yang disorot.
-
Di field
alertmanagerconfig, temukanreceiverdan masukkan nama alert email yang ditentukan direceivers. Nama default adalahmail.

Templat penerima alert
Sesuaikan templat alert di bagian templateFiles pada konfigurasi alertmanager.
Mount ConfigMap kustom ke Prometheus
Gunakan ConfigMap bernama special-config untuk mount file konfigurasi dan tentukan sebagai parameter --config.file saat startup Pod.
-
Buat ConfigMap.
-
Mount ConfigMap.
Di halaman Parameters, tambahkan berikut ini ke field
configmapsuntuk mount ConfigMap ke/etc/prometheus/configmaps/di Pod Prometheus.
Contoh konfigurasi
prometheusconfigmaps:
Konfigurasi Grafana
Memasang file dasbor ke Grafana
Untuk mount ConfigMap dashboard ke Pod Grafana, gunakan field extraConfigmapMounts di wizard Parameters.
Pastikan bahwa:
-
Dashboard tersebut ada sebagai ConfigMap di kluster, dan label-nya sesuai dengan format ConfigMap lainnya.
-
Field
extraConfigmapMountsdalam konfigurasi Grafana mencakup ConfigMap dashboard dan informasi mount-nya.-
mountPath: Atur ke/tmp/dashboards/. -
ConfigMap: Nama ConfigMap kustom Anda. -
name: Nama file JSON dashboard.
-
Aktifkan persistensi dashboard
Ekspor dashboard sebagai file JSON untuk backup. Lihat Ekspor Grafana.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
-
Temukan ack-prometheus-operator dan klik Update. Di field
grafana, konfigurasikan opsipersistenceseperti di bawah ini.
Operasi terkait
Hapus Instalan Prometheus Sumber Terbuka
Untuk mencegah sisa resource, ikuti prosedur sesuai versi chart Helm Anda. Bersihkan secara manual rilis Helm, namespace, CRD, dan Service kubelet.
Service kubelet tidak dihapus otomatis saat uninstal — masalah umum di komunitas (#1523). Hapus secara manual seperti dijelaskan di bawah.
Chart v12.0.0
Konsol
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda dan lakukan operasi berikut dari panel navigasi kiri.
-
Uninstal rilis Helm: Pilih . Di daftar rilis Helm, temukan entri ack-prometheus-operator, klik Delete di kolom Actions, lalu selesaikan penghapusan. Hapus catatan rilis.
-
Hapus namespace: Klik Namespaces and Quotas. Di daftar namespace, temukan dan pilih monitoring, lalu hapus.
-
Hapus CustomResourceDefinitions (CRD): Navigasi ke dan klik tab CRDs. Hapus semua resource CRD di bawah grup API
monitoring.coreos.com:-
AlertmanagerConfig
-
Alertmanager
-
PodMonitor
-
Probe
-
Prometheus
-
PrometheusRule
-
ServiceMonitor
-
ThanosRuler
-
-
Hapus Service kubelet: Pilih Network > Services. Temukan dan hapus ack-prometheus-operator-kubelet di namespace kube-system.
-
Kubectl
-
Uninstal rilis Helm
helm uninstall ack-prometheus-operator -n monitoring -
Hapus namespace
kubectl delete namespace monitoring -
Hapus CRD
kubectl delete crd alertmanagerconfigs.monitoring.coreos.com kubectl delete crd alertmanagers.monitoring.coreos.com kubectl delete crd podmonitors.monitoring.coreos.com kubectl delete crd probes.monitoring.coreos.com kubectl delete crd prometheuses.monitoring.coreos.com kubectl delete crd prometheusrules.monitoring.coreos.com kubectl delete crd servicemonitors.monitoring.coreos.com kubectl delete crd thanosrulers.monitoring.coreos.com -
Hapus Service kubelet
kubectl delete service ack-prometheus-operator-kubelet -n kube-system
Chart v65.1.1
Konsol
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
-
Di halaman Clusters, klik nama kluster Anda dan lakukan operasi berikut dari panel navigasi kiri.
-
Uninstal rilis Helm: Pilih . Di daftar rilis Helm, temukan entri ack-prometheus-operator, klik Delete di kolom Actions, lalu selesaikan penghapusan. Hapus catatan rilis.
-
Hapus namespace: Klik Namespaces and Quotas. Di daftar namespace, temukan dan pilih monitoring, lalu hapus.
-
Hapus CustomResourceDefinitions (CRD): Navigasi ke dan klik tab CRDs. Hapus semua resource CRD di bawah grup API
monitoring.coreos.com:-
AlertmanagerConfig
-
Alertmanager
-
PodMonitor
-
Probe
-
PrometheusAgent
-
Prometheus
-
PrometheusRule
-
ScrapeConfig
-
ServiceMonitor
-
ThanosRuler
-
-
Hapus Service kubelet: Pilih Network > Services. Temukan dan hapus ack-prometheus-operator-kubelet di namespace kube-system.
-
Kubectl
-
Uninstal rilis Helm
helm uninstall ack-prometheus-operator -n monitoring -
Hapus namespace
kubectl delete namespace monitoring -
Hapus CRD
kubectl delete crd alertmanagerconfigs.monitoring.coreos.com kubectl delete crd alertmanagers.monitoring.coreos.com kubectl delete crd podmonitors.monitoring.coreos.com kubectl delete crd probes.monitoring.coreos.com kubectl delete crd prometheusagents.monitoring.coreos.com kubectl delete crd prometheuses.monitoring.coreos.com kubectl delete crd prometheusrules.monitoring.coreos.com kubectl delete crd scrapeconfigs.monitoring.coreos.com kubectl delete crd servicemonitors.monitoring.coreos.com kubectl delete crd thanosrulers.monitoring.coreos.com -
Hapus Service kubelet
kubectl delete service ack-prometheus-operator-kubelet -n kube-system
Konfigurasi penonaktifan alert
Aturan penonaktifan menekan notifikasi alert yang sesuai hingga periode penonaktifan berakhir atau aturan tersebut dihapus.
-
Ekspos Alertmanager di port lokal 9093:
kubectl --address 0.0.0.0 port-forward svc/alertmanager-operated 9093 -n monitoring -
Asosiasikan alamat Elastic IP (EIP) dengan instans ECS Anda, lalu akses Alertmanager di
<EIP>:9093.Pastikan security group mengizinkan traffic dari IP lokal Anda pada port 9093. Lihat Tambahkan Aturan Security Group.
-
Klik Silence untuk mengonfigurasi penonaktifan alert.

FAQ
Tidak menerima alert setelah konfigurasi DingTalk
-
Dapatkan URL webhook untuk chatbot DingTalk Anda. Lihat Pemantauan Event.
-
Temukan field dingtalk, atur enabled ke true, dan masukkan URL webhook DingTalk di field Token. Lihat Konfigurasi alert DingTalk di Konfigurasi alert.
Error saat men-deploy prometheus-operator
Pesan error berikut dilaporkan:
Can't install release with errors: rpc error: code = Unknown desc = object is being deleted: customresourcedefinitions.apiextensions.k8s.io "xxxxxxxx.monitoring.coreos.com" already exists
Error ini terjadi karena CRD dari deployment sebelumnya tidak dibersihkan. Hapus CRD tersebut dan deploy ulang komponen:
kubectl delete crd prometheuses.monitoring.coreos.com
kubectl delete crd prometheusrules.monitoring.coreos.com
kubectl delete crd servicemonitors.monitoring.coreos.com
kubectl delete crd alertmanagers.monitoring.coreos.com
Alert email tidak berfungsi
Alert email dapat gagal jika Anda memasukkan password login untuk smtp_auth_password alih-alih kode otorisasi. Alamat server SMTP harus menyertakan nomor port.
Terjadi error saat mengklik YAML Update: Kluster saat ini sementara tidak tersedia. Silakan coba lagi nanti.
Hal ini terjadi ketika file konfigurasi Tiller terlalu besar sehingga membuat kluster tidak dapat diakses. Kurangi ukuran file dengan menghapus komentar dan mount sebagai ConfigMap. prometheus-operator hanya mendukung mounting ConfigMap untuk Pod prometheus dan alertmanager. Lihat Mount ConfigMap kustom ke Prometheus.
Aktifkan fitur setelah deployment
Aktifkan fitur setelah men-deploy prometheus-operator. Di halaman detail kluster, pilih . Temukan ack-prometheus-operator dan klik Update di kolom Actions. Temukan fitur yang akan diaktifkan, konfigurasikan, lalu klik OK.
Pilih antara TSDB dan disk Alibaba Cloud
TSDB tersedia di lebih sedikit wilayah dibandingkan disk Alibaba Cloud. Kebijakan retensi data:
Masalah tampilan dasbor Grafana
Di halaman detail kluster, pilih . Temukan ack-prometheus-operator dan klik Update di kolom Actions. Verifikasi bahwa clusterVersion sesuai dengan versi kluster Anda. Untuk kluster sebelum v1.16, masukkan 1.14.8-aliyun.1. Untuk v1.16 atau lebih baru, masukkan 1.16.6-aliyun.1.
Instalasi ulang gagal setelah menghapus namespace
Menghapus hanya namespace dapat meninggalkan konfigurasi sisa. Bersihkan resource berikut:
-
Hapus izin RBAC.
-
Hapus ClusterRole.
kubectl delete ClusterRole ack-prometheus-operator-grafana-clusterrole kubectl delete ClusterRole ack-prometheus-operator-kube-state-metrics kubectl delete ClusterRole psp-ack-prometheus-operator-kube-state-metrics kubectl delete ClusterRole psp-ack-prometheus-operator-prometheus-node-exporter kubectl delete ClusterRole ack-prometheus-operator-operator kubectl delete ClusterRole ack-prometheus-operator-operator-psp kubectl delete ClusterRole ack-prometheus-operator-prometheus kubectl delete ClusterRole ack-prometheus-operator-prometheus-psp -
Hapus ClusterRoleBinding.
kubectl delete ClusterRoleBinding ack-prometheus-operator-grafana-clusterrolebinding kubectl delete ClusterRoleBinding ack-prometheus-operator-kube-state-metrics kubectl delete ClusterRoleBinding psp-ack-prometheus-operator-kube-state-metrics kubectl delete ClusterRoleBinding psp-ack-prometheus-operator-prometheus-node-exporter kubectl delete ClusterRoleBinding ack-prometheus-operator-operator kubectl delete ClusterRoleBinding ack-prometheus-operator-operator-psp kubectl delete ClusterRoleBinding ack-prometheus-operator-prometheus kubectl delete ClusterRoleBinding ack-prometheus-operator-prometheus-psp
-
-
Hapus CRD.
kubectl delete crd alertmanagerconfigs.monitoring.coreos.com kubectl delete crd alertmanagers.monitoring.coreos.com kubectl delete crd podmonitors.monitoring.coreos.com kubectl delete crd probes.monitoring.coreos.com kubectl delete crd prometheuses.monitoring.coreos.com kubectl delete crd prometheusrules.monitoring.coreos.com kubectl delete crd servicemonitors.monitoring.coreos.com kubectl delete crd thanosrulers.monitoring.coreos.com


