全部产品
Search
文档中心

Container Service for Kubernetes:Kumpulkan metrik komponen lapisan kontrol dengan Prometheus yang di-host sendiri

更新时间:Dec 09, 2025

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.

  1. Masuk ke Konsol ACK. Pada panel navigasi sebelah kiri, pilih Clusters.

  2. Pada halaman Clusters, klik nama kluster target. Di panel navigasi sebelah kiri, klik Add-ons.

  3. 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

  1. Dapatkan KubeConfig kluster dan gunakan kubectl untuk menghubungkan ke kluster.

    Catatan: Gunakan KubeConfig dengan izin minimum yang diperlukan untuk meningkatkan keamanan.
  2. 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.key
  3. Buat 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

  1. Pada halaman Cluster Information, klik tab Basic Information. Temukan API Server Internal Endpoint. Alamat akses metrik menggunakan format https://<YOUR_SLB_IP>:6443.

  2. 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 bernama ack-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:
          - monitoring
  3. Terapkan file YAML untuk membuat sumber daya tersebut.

    kubectl apply -f ack-metrics-monitoring.yaml

Verifikasi status pengumpulan

  1. 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 monitoring
  2. Lakukan port-forward layanan Prometheus yang di-host sendiri ke mesin lokal Anda.

    kubectl port-forward svc/ack-prometheus-operator-prometheus 9090 -n monitoring
  3. Buka http://localhost:9090 di browser Anda untuk mengakses antarmuka Prometheus.

  4. Navigasi ke halaman Status > Targets. Temukan grup target untuk serviceMonitor/monitoring/demo-control-plane-metrics. Jika kolom State menampilkan UP, pengambilan metrik berhasil.