Prometheus adalah proyek yang digunakan untuk memantau aplikasi cloud-native. Topik ini menjelaskan cara menerapkan Prometheus di dalam Container Service for Kubernetes (ACK) cluster.
Informasi latar belakang
Topik ini menjelaskan cara memantau komponen sistem dan entitas sumber daya secara efisien di dalam kluster Kubernetes. Sistem pemantauan memantau jenis objek berikut:
Sumber Daya: Pemanfaatan sumber daya node dan aplikasi. Di dalam kluster Kubernetes, sistem pemantauan memantau penggunaan sumber daya dari node, pod, dan kluster.
Aplikasi: Metrik internal aplikasi. Sebagai contoh, sistem pemantauan secara dinamis menghitung jumlah pengguna online yang menggunakan aplikasi, mengumpulkan metrik pemantauan dari port aplikasi, dan mengaktifkan peringatan berdasarkan metrik yang dikumpulkan.
Di dalam kluster Kubernetes, sistem pemantauan memantau objek berikut:
Komponen Kluster: Komponen dari kluster Kubernetes, seperti API server, cloud-controller-manager, dan etcd. Untuk memantau komponen kluster, tentukan metode pemantauan di file konfigurasi.
Entitas Sumber Daya Statis: Status sumber daya pada node dan peristiwa kernel. Untuk memantau entitas sumber daya statis, tentukan metode pemantauan di file konfigurasi.
Entitas Sumber Daya Dinamis: Entitas beban kerja abstrak di Kubernetes, seperti Deployments, DaemonSets, dan pods. Untuk memantau entitas sumber daya dinamis di dalam kluster Kubernetes, Anda dapat menerapkan Prometheus di dalam kluster Kubernetes.
Objek Kustom dalam Aplikasi: Untuk aplikasi yang memerlukan pemantauan khusus data dan metrik, konfigurasi spesifik perlu disiapkan untuk memenuhi kebutuhan pemantauan unik. Ini dapat dicapai dengan menggabungkan eksposur port dengan solusi pemantauan Prometheus.
Langkah 1: Terapkan Prometheus open source
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi di sebelah kiri, pilih .
Pada halaman Helm, klik Deploy. Di bagian Chart dari panel Deploy, temukan dan pilih ack-prometheus-operator, gunakan nilai default untuk parameter lainnya, dan klik Next.
Bagan akan diinstal di namespace monitoring secara default menggunakan nama aplikasi default.
Untuk menggunakan nama dan namespace kustom, konfigurasikan parameter Application Name dan Namespace di langkah Basic Information.
Pada halaman wizard Parameters, pilih 12.0.0 untuk versi bagan, konfigurasikan parameter, lalu klik OK. Bagan 12.0.0 mendukung konfigurasi alarm. Anda dapat menetapkan kondisi pemantauan dan alarm menggunakan fungsi bawaan.
Anda dapat menyesuaikan parameter opsional berikut berdasarkan kebutuhan bisnis Anda:
Konfigurasi Alarm: Notifikasi alarm dapat dikirim menggunakan pesan DingTalk atau email.
Mount ConfigMap Kustom ke Prometheus: Anda dapat mengonfigurasi ConfigMap kustom berdasarkan kebutuhan bisnis Anda.
Mount File Dasbor ke Grafana: Anda dapat menggunakan dasbor kustom untuk meningkatkan visualisasi data.
Setelah penyebaran selesai, Anda dapat melihat status aplikasi di halaman Helm.
Langkah 2: Lihat tugas pengumpulan data Prometheus
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel sebelah kiri, pilih .
Pada halaman Services, pilih namespace tempat ack-prometheus-operator diterapkan (monitoring secara default). Temukan ack-prometheus-operator-prometheus dan klik Update di kolom Actions.
Di kotak dialog Update Service, atur Service Type menjadi SLB. Pilih Create Resource dan atur Access Method menjadi Public Access. Pilih Pay-as-you-go (Pay-by-CU) untuk parameter Billing Method, konfigurasikan parameter lainnya sesuai kebutuhan, dan klik OK.
Lihat Penagihan Classic Load Balancer (CLB) untuk detail lebih lanjut.
Setelah pembaruan selesai, salin alamat IP eksternalnya, dan akses Prometheus dengan memasukkan
Alamat IP: nomor portdi bilah alamat browser. Contoh:47.XX.XX.12:9090.Di bilah navigasi atas halaman Prometheus, pilih untuk melihat semua tugas pengumpulan data. Tugas dalam status UP berjalan dengan baik.

Untuk melihat aturan alarm, klik Alerts di bilah navigasi atas.

Langkah 3: Lihat Data Agregat Grafana
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel sebelah kiri, pilih .
Pada halaman Services, pilih namespace tempat deployment ack-prometheus-operator diterapkan (secara default monitoring). Temukan ack-prometheus-operator-prometheus dan klik Update di kolom Actions.
Di kotak dialog Update Service, atur Service Type menjadi SLB. Pilih Create Resource dan atur Access Method menjadi Public Access. Pilih Pay-as-you-go (Pay-by-CU) untuk parameter Billing Method, konfigurasikan parameter lainnya sesuai kebutuhan, dan klik OK.
Lihat Penagihan CLB untuk detail lebih lanjut.
Setelah pembaruan selesai, salin alamat IP eksternalnya, dan akses Grafana dengan memasukkan
Alamat IP: nomor portdi bilah alamat browser. Secara default, nomor port adalah 80. Contoh:47.XX.XX.12:80.
Konfigurasi Alarm
Anda dapat mengonfigurasi prometheus-operator untuk mengirim notifikasi alarm menggunakan pesan DingTalk atau email:
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel navigasi di sebelah kiri, pilih .
Pada halaman Helm, klik Deploy. Di langkah Basic Information, temukan dan pilih ack-prometheus-operator di bagian Chart, konfigurasikan parameter lainnya sesuai kebutuhan, dan klik Next. Di langkah Parameters, konfigurasikan parameter alarm berdasarkan konten berikut:
Jika ack-prometheus-operator sudah terpasang, klik namanya dari daftar di halaman Helm, dan klik tab Parameters untuk mengonfigurasi.
Konfigurasikan Notifikasi DingTalk
Temukan bidang
dingtalkdi file konfigurasi dan aturenabledmenjaditrue.Masukkan URL webhook chatbot DingTalk Anda di bidang
token. Untuk informasi lebih lanjut tentang cara mendapatkan URL webhook, lihat Skenario 3: Implementasikan pemantauan dan peringatan Kubernetes dengan chatbot DingTalk.Di bagian
alertmanager, temukan parameterreceiverdi bidangconfig, dan masukkan nama chatbot DingTalk yang Anda tentukan untuk bidangreceivers. Secara default,webhookdigunakan.
Konfigurasikan Notifikasi Email
Masukkan detail alamat email Anda di kotak merah pada gambar berikut.
Temukan bidang
configdi bagianalertmanagerdari file konfigurasi, temukanreceiverdan masukkan email yang Anda definisikan di bidangreceivers. Secara default,maildigunakan.
Tetapkan Template Notifikasi Alarm
Anda dapat menyesuaikan template notifikasi alarm di bidang
templateFilesdari bagianalertmanager, seperti yang ditunjukkan pada gambar berikut:
Mount ConfigMap Kustom ke Prometheus
Bab ini menjelaskan cara memasang file konfigurasi melalui ConfigMap bernama special-config di Prometheus, dan meneruskannya menggunakan parameter --config.file saat startup pod.
Buat ConfigMap.
Mount ConfigMap.
Di langkah Parameters, tambahkan konten berikut ke bidang
configmapsuntuk memasang ConfigMap yang ditentukan ke jalur/etc/prometheus/configmaps/di pod Prometheus.
Gambar berikut menunjukkan contoh konfigurasi bidang
configmapsdi bagianprometheus:
Konfigurasikan Grafana
Mount File Konfigurasi Dasbor ke Grafana
Untuk memasang file dasbor ke dalam pod Grafana melalui ConfigMap, temukan bidang extraConfigmapMounts di wizard konfigurasi parameter.
Pastikan:
Dasbor ada di kluster sebagai ConfigMap, dan label ConfigMap dalam format yang sama dengan ConfigMap lainnya.
Isi bidang
extraConfigmapMountsdengan informasi ConfigMap dasbor dan detail mount:mountPath: Atur ke/tmp/dashboards/ConfigMap: Atur ke nama ConfigMap kustom Anda.name: Atur ke nama file JSON yang menyimpan konfigurasi dasbor.
Aktifkan Persistensi Data untuk Dasbor
Untuk mengekspor dasbor secara lokal, simpan dasbor target sebagai file JSON ke mesin lokal Anda. Untuk detail lebih lanjut, lihat Ekspor Dasbor sebagai JSON.
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel sebelah kiri, pilih .
Temukan ack-prometheus-operator, klik Update di kolom Actions, dan konfigurasikan bidang
persistencedi bagiangrafanaseperti yang ditunjukkan pada gambar berikut:
Operasi Terkait
Hapus Komponen Prometheus Open Source
Periksa versi Helm chart dari komponen Prometheus open source dan lakukan langkah-langkah berikut untuk menghapus komponen Prometheus open source. Ini membantu Anda mencegah sumber daya residu dan pengecualian yang tidak terduga. Anda perlu secara manual menghapus Helm release terkait, namespace, CustomResourceDefinitions (CRD), dan layanan kubelet.
Jika layanan kubelet tidak dapat dihapus secara otomatis saat Anda menghapus komponen ack-prometheus-operator, lihat bagian berikut. Untuk informasi lebih lanjut tentang masalah ini, lihat #1523.
Chart v12.0.0
Gunakan Konsol ACK
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi sebelah kiri halaman detail kluster, lakukan operasi berikut:
Hapus Helm release: Pilih . Pada halaman Helm, pilih release ack-prometheus-operator dan klik Delete di kolom Actions. Di kotak dialog Hapus, pilih Hapus Catatan Release dan klik OK.
Hapus namespace terkait: Klik Namespaces and Quotas. Pada halaman Namespace, pilih namespace monitoring dan klik Hapus di bagian bawah halaman. Dalam pesan Konfirmasi, konfirmasikan informasi dan klik Konfirmasi Penghapusan.
Hapus CRD terkait: Pilih . Pada halaman Sumber Daya Kustom, klik tab CRD. Pilih semua CRD yang termasuk dalam grup API
monitoring.coreos.comdan klik Hapus di bagian bawah halaman. Dalam pesan Konfirmasi, konfirmasikan informasi dan klik Konfirmasi Penghapusan. Daftar berikut menjelaskan CRD dalam grup API:AlertmanagerConfig
Alertmanager
PodMonitor
Probe
Prometheus
PrometheusRule
ServiceMonitor
ThanosRuler
Hapus Layanan kubelet: Pilih Network > Services. Pada halaman Layanan, pilih Layanan ack-prometheus-operator-kubelet di namespace kube-system dan kemudian klik Hapus di bagian bawah halaman. Dalam pesan Konfirmasi, konfirmasikan informasi dan klik Konfirmasi Penghapusan.
Gunakan kubectl
Hapus Helm release terkait.
helm uninstall ack-prometheus-operator -n monitoringHapus namespace terkait.
kubectl delete namespace monitoringHapus CRD terkait.
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.comHapus Layanan kubelet.
kubectl delete service ack-prometheus-operator-kubelet -n kube-system
Chart v65.1.1
Gunakan Konsol ACK
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi sebelah kiri halaman detail kluster, lakukan operasi berikut:
Hapus Helm release: Pilih . Pada halaman Helm, pilih release ack-prometheus-operator dan klik Delete di kolom Actions. Di kotak dialog Hapus, pilih Hapus Catatan Release dan klik OK.
Hapus namespace terkait: Klik Namespaces and Quotas. Pada halaman Namespace, pilih namespace monitoring dan klik Hapus di bagian bawah halaman. Dalam pesan Konfirmasi, konfirmasikan informasi dan klik Konfirmasi Penghapusan.
Hapus CRD terkait: Pilih . Pada halaman Sumber Daya Kustom, klik tab CRD. Pilih semua CRD yang termasuk dalam grup API
monitoring.coreos.comdan klik Hapus di bagian bawah halaman. Dalam pesan Konfirmasi, konfirmasikan informasi dan klik Konfirmasi Penghapusan. Daftar berikut menjelaskan CRD dalam grup API:AlertmanagerConfig
Alertmanager
PodMonitor
Probe
PrometheusAgent
Prometheus
PrometheusRule
ScrapeConfig
ServiceMonitor
ThanosRuler
Hapus Layanan kubelet: Pilih Network > Services. Pada halaman Layanan, pilih Layanan ack-prometheus-operator-kubelet di namespace kube-system dan kemudian klik Hapus di bagian bawah halaman. Dalam pesan Konfirmasi, konfirmasikan informasi dan klik Konfirmasi Penghapusan.
kubectl
Hapus Helm release terkait.
helm uninstall ack-prometheus-operator -n monitoringHapus namespace terkait.
kubectl delete namespace monitoringHapus CRD terkait.
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.comHapus Layanan kubelet.
kubectl delete service ack-prometheus-operator-kubelet -n kube-system
Konfigurasikan Penindasan Alarm
Anda dapat menindas alarm tertentu dengan mengonfigurasi aturan senyap. Saat alarm sesuai dengan kondisi aturan, notifikasi akan ditahan sampai periode senyap berakhir atau aturan dihapus secara manual.
Jalankan perintah berikut untuk mengekspos Alertmanager pada port lokal 9093 untuk akses eksternal:
kubectl --address 0.0.0.0 port-forward svc/alertmanager-operated 9093 -n monitoringAsosiasikan EIP dengan instance Elastic Compute Service (ECS) Anda, lalu akses melalui
<EIP>:9093di browser Anda.Pastikan grup keamanan ECS mengizinkan IP lokal Anda dan port 9093. Untuk detailnya, lihat Tambahkan aturan grup keamanan.
Klik Silence dan ikuti petunjuk di layar untuk mengonfigurasi penindasan alarm.

FAQ
Apa yang harus saya lakukan jika gagal menerima notifikasi alarm DingTalk?
Dapatkan URL webhook chatbot DingTalk Anda. Untuk informasi lebih lanjut, lihat Pemantauan Event.
Di halaman wizard Parameter, temukan bagian dingtalk, atur enabled menjadi true, dan kemudian tentukan URL webhook chatbot DingTalk Anda di bidang token. Untuk informasi lebih lanjut, lihat Configure DingTalk alert notifications di Konfigurasi Alarm.
Apa yang harus saya lakukan jika muncul pesan kesalahan saat saya menerapkan prometheus-operator di kluster?
Pesan kesalahan berikut muncul:
Tidak dapat menginstal rilis dengan kesalahan: rpc error: code = Unknown desc = objek sedang dihapus: customresourcedefinitions.apiextensions.k8s.io "xxxxxxxx.monitoring.coreos.com" sudah adaPesan kesalahan tersebut menunjukkan bahwa kluster gagal membersihkan objek Custom Resource Definition (CRD) dari penerapan sebelumnya. Jalankan perintah berikut untuk menghapus objek CRD. Kemudian, terapkan prometheus-operator lagi:
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.comApa yang harus saya lakukan jika gagal menerima notifikasi alarm email?
Pastikan nilai dari smtp_auth_password adalah kode otorisasi SMTP bukan kata sandi logon akun email. Pastikan endpoint server SMTP mencakup nomor port.
Apa yang harus saya lakukan jika konsol menampilkan pesan kesalahan berikut setelah saya klik Perbarui untuk memperbarui template YAML:Kluster saat ini sementara tidak tersedia. Coba lagi nanti atau ajukan tiket?
Jika file konfigurasi Tiller terlalu besar, kluster tidak dapat diakses. Untuk menyelesaikan masalah ini, Anda dapat menghapus beberapa anotasi di file konfigurasi dan mount file tersebut ke pod sebagai ConfigMap. Anda dapat menentukan nama ConfigMap di bidang configMaps dari bagian prometheus dan alertmanager. Untuk informasi lebih lanjut, lihat metode kedua di Mount ConfigMap ke Prometheus.
Bagaimana cara mengaktifkan fitur prometheus-operator setelah saya menerapkannya di kluster?
Setelah prometheus-operator diterapkan, Anda dapat melakukan langkah-langkah berikut untuk mengaktifkan fitur prometheus-operator. Buka halaman detail kluster dan pilih di panel navigasi sebelah kiri. Pada halaman Helm, temukan ack-prometheus-operator dan klik Update di kolom Tindakan. Di panel Perbarui Rilis, konfigurasikan blok kode untuk mengaktifkan fitur. Lalu, klik OK.
Bagaimana cara memilih penyimpanan data: TSDB atau disk?
Penyimpanan TSDB tersedia di wilayah terbatas. Namun, penyimpanan disk didukung di semua wilayah. Gambar berikut menunjukkan cara mengonfigurasi kebijakan retensi data.
Apa yang harus saya lakukan jika dasbor Grafana gagal menampilkan data dengan benar?
Buka halaman detail kluster dan pilih di panel navigasi sebelah kiri. Pada halaman Helm, temukan ack-prometheus-operator dan klik Update di kolom Tindakan. Di panel Perbarui Rilis, periksa apakah nilai dari bidang clusterVersion benar. Jika versi Kubernetes kluster Anda lebih awal dari 1.16, atur clusterVersion menjadi 1.14.8-aliyun.1. Jika versi Kubernetes kluster Anda adalah 1.16 atau lebih baru, atur clusterVersion menjadi 1.16.6-aliyun.1.
Apa yang harus saya lakukan jika gagal menginstal ack-prometheus setelah saya menghapus namespace ack-prometheus?
Setelah Anda menghapus namespace ack-prometheus, konfigurasi sumber daya terkait mungkin tetap ada. Dalam hal ini, Anda mungkin gagal menginstal ack-prometheus lagi. Anda dapat melakukan operasi berikut untuk menghapus konfigurasi sumber daya terkait:
Hapus konfigurasi sumber daya RBAC terkait.
Jalankan perintah berikut untuk menghapus ClusterRoles terkait:
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-pspJalankan perintah berikut untuk menghapus ClusterRoleBindings terkait:
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
Jalankan perintah berikut untuk menghapus objek CRD terkait:
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

