Untuk lingkungan cloud hibrida yang menggunakan sistem pemantauan Prometheus yang di-host sendiri, Anda dapat mengintegrasikan metrik dari komponen lapisan kontrol kluster terdaftar ACK One ke dalam sistem pemantauan yang sudah ada. Integrasi ini melibatkan instalasi komponen Metrics Aggregator dan konfigurasi ServiceMonitor untuk memungkinkan peringatan dan observabilitas terpadu.
Cara kerja
Pada kluster terdaftar ACK One, komponen lapisan kontrol, seperti kube-scheduler dan cloud-controller-manager, berjalan pada infrastruktur yang dikelola Alibaba Cloud dan tidak dapat diakses secara langsung. Untuk memungkinkan Prometheus yang di-host sendiri mengambil metrik dari komponen-komponen tersebut, Container Service for Kubernetes (ACK) menerapkan proses berikut:
Agregasi dan eksposisi metrik: Komponen Metrics Aggregator di sisi yang dikelola mengumpulkan dan mengagregasi metrik dari berbagai komponen lapisan kontrol, lalu mengekspos antarmuka metrik terpadu melalui titik akhir internal API Server (Internal-facing SLB).
Mekanisme penemuan layanan: Sebuah Headless Service dideploy di kluster dengan Endpoints-nya mengarah ke alamat IP SLB internal dari API Server yang dikelola. ServiceMonitor, yaitu CustomResourceDefinition (CRD) dari Prometheus Operator, dikonfigurasi dengan aturan penemuan layanan sehingga Prometheus dapat secara otomatis menemukan dan memantau layanan ini.
Proses pengambilan (scrape): Prometheus menemukan layanan target melalui ServiceMonitor, mengurai endpoint-nya, lalu mengakses antarmuka agregasi metrik yang dikelola melalui SLB internal untuk mengambil metrik komponen lapisan kontrol.
Proses ini tidak memerlukan titik akhir publik, sehingga menjamin keamanan dan meningkatkan kinerja jaringan.
Catatan: Integrasikan Managed Service for Prometheus dengan kluster Anda untuk mendapatkan pemantauan dan pengambilan data otomatis, dasbor Grafana real-time, serta peringatan yang dapat dikonfigurasi. Layanan ini memungkinkan Anda membuat aturan peringatan dan menerima notifikasi melalui saluran seperti email, SMS, dan DingTalk.
Prasyarat
Versi komponen ack-stub di kluster terdaftar ACK One Anda harus v1.15.0.4 atau lebih baru.
Langkah 1: Instal komponen Metrics Aggregator
Instal komponen Metrics Aggregator untuk mengagregasi metrik dari komponen lapisan kontrol.
Masuk ke Konsol ACK. Pada panel navigasi sebelah kiri, pilih Clusters.
Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, klik Add-ons.
Pada halaman Add-ons, cari Metrics Aggregator. Pada kartu komponen, klik Install dan ikuti petunjuk di layar untuk menyelesaikan instalasi.
Langkah 2: Siapkan kredensial autentikasi
Dapatkan KubeConfig kluster dan gunakan kubectl untuk menghubungkan ke kluster.
Catatan: Gunakan KubeConfig dengan izin minimum yang diperlukan untuk meningkatkan keamanan.
Ekstrak sertifikat dari KubeConfig. Prometheus menggunakan sertifikat ini untuk membuat koneksi TLS aman dengan API Server.
# 1. Ekstrak sertifikat CA (untuk memverifikasi API Server) kubectl config view --raw -o jsonpath='{.clusters[0].cluster.certificate-authority-data}' | base64 -d > ca.crt # 2. Ekstrak sertifikat klien (untuk mengidentifikasi klien ke API Server) kubectl config view --raw -o jsonpath='{.users[0].user.client-certificate-data}' | base64 -d > client.crt # 3. Ekstrak kunci privat klien kubectl config view --raw -o jsonpath='{.users[0].user.client-key-data}' | base64 -d > client.keyBuat Secret untuk menyimpan sertifikat dan kunci privat.
kubectl create secret generic demo-metrics-tls \ --namespace monitoring \ --from-file=ca.crt=./ca.crt \ --from-file=tls.crt=./client.crt \ --from-file=tls.key=./client.key
Langkah 3: Buat sumber daya pemantauan
Pada halaman Cluster Information, klik tab Basic Information. Temukan API Server Internal Endpoint. Alamat akses metrik menggunakan format
https://<YOUR_SLB_IP>:6443.Buat Service untuk API Server agar Prometheus dapat menemukan layanan tersebut dan mengambil metriknya.
Pada konten YAML berikut, ganti
<YOUR_SLB_IP>dengan alamat IP titik akhir internal API Server dari langkah sebelumnya. Simpan konten tersebut sebagai file bernamaack-metrics-monitoring.yaml.# Buat objek Endpoints yang secara manual mengarah ke alamat IP internal dan port API Server. apiVersion: v1 kind: Endpoints metadata: name: demo-metrics-service # Nama ini harus persis sama dengan nama Service di bawah untuk membuat tautan. namespace: monitoring subsets: - addresses: - ip: <YOUR_SLB_IP> # Ganti dengan alamat IP internal titik akhir API Server. ports: - port: 6443 name: https-metrics protocol: TCP --- # Buat Headless Service dan hubungkan ke objek Endpoints di atas untuk menyediakan target penemuan layanan yang stabil bagi ServiceMonitor. apiVersion: v1 kind: Service metadata: name: demo-metrics-service namespace: monitoring labels: app: demo-metrics # Label ini harus sesuai dengan selector di ServiceMonitor di bawah. spec: clusterIP: None # Definisikan Headless Service. Tidak diberi IP virtual dan langsung meresolusi ke IP di Endpoints. ports: - name: https-metrics port: 6443 targetPort: 6443 protocol: TCP --- # Definisikan konfigurasi pengambilan (scrape) Prometheus. apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: demo-control-plane-metrics namespace: monitoring # Label ini harus sesuai dengan serviceMonitorSelector pada instans Prometheus Anda agar dapat ditemukan secara otomatis. labels: app: prometheus-operator spec: endpoints: - interval: 30s params: hosting: - 'true' path: /metrics port: https-metrics scheme: https # Mengacu pada Secret yang dibuat di Langkah 2. tlsConfig: ca: secret: key: ca.crt name: demo-metrics-tls cert: secret: key: tls.crt name: demo-metrics-tls insecureSkipVerify: false keySecret: key: tls.key name: demo-metrics-tls selector: matchLabels: app: demo-metrics namespaceSelector: matchNames: - monitoringTerapkan file YAML untuk membuat sumber daya tersebut.
kubectl apply -f ack-metrics-monitoring.yaml
Verifikasi status pengumpulan
Verifikasi bahwa sumber daya berhasil dibuat.
# Periksa Service, Endpoints, dan Secret kubectl get service,endpoints,secret -n monitoring | grep demo-metrics # Periksa ServiceMonitor kubectl get servicemonitor -n monitoringLakukan port-forward layanan Prometheus yang di-host sendiri ke mesin lokal Anda.
kubectl port-forward svc/ack-prometheus-operator-prometheus 9090 -n monitoringBuka http://localhost:9090 di browser Anda untuk mengakses antarmuka Prometheus.
Navigasi ke halaman . Temukan grup target untuk
serviceMonitor/monitoring/demo-control-plane-metrics. Jika kolom State menampilkanUP, pengambilan metrik berhasil.