Mengumpulkan metrik Prometheus tertentu dari Kubernetes

Dokumen ini menunjukkan cara mengonfigurasi Google Cloud Managed Service for Prometheus untuk memfilter dan mengumpulkan metrik Kubernetes tertentu dari cluster dan workload Google Kubernetes Engine (GKE).

Anda seharusnya sudah memahami hal-hal berikut:

Pengumpulan metrik di GKE

Komponen sistem di cluster GKE memunculkan dan mengekspos metrik Prometheus. Secara default, semua cluster menyerap metrik sistem yang khusus untuk GKE. Paket metrik bawaan tambahan tersedia untuk memasukkan kumpulan metrik yang dikurasi untuk berbagai komponen.

Terlepas dari paket metrik GKE bawaan, Anda dapat mengonfigurasi Google Cloud Managed Service for Prometheus secara manual untuk menyerap metrik Prometheus tertentu. Konfigurasi kustom ini berfungsi dengan baik untuk kasus penggunaan seperti berikut:

  • Memantau sinyal tertentu di cluster dan workload Anda.
  • Optimalkan biaya dengan menonaktifkan paket metrik yang tidak Anda perlukan dan hanya menyerap sebagian metrik.
  • Mengumpulkan metrik yang dikeluarkan oleh komponen, tetapi tidak disertakan dalam paket metrik.

Bagi operator, metrik node, yang dikeluarkan oleh proses kubelet di setiap node, mungkin berguna untuk memantau workload dan node untuk sinyal tertentu.

Resource kustom pengumpulan metrik

Untuk memfilter dan menyerap metrik tertentu, Anda mengonfigurasi aturan pelabelan ulang Prometheus di salah satu resource kustom berikut:

  • PodMonitoring: mengonfigurasi pengumpulan metrik dari Pod di namespace tertentu.
  • ClusterPodMonitoring: mengonfigurasi pengumpulan metrik dari Pod di namespace mana pun.
  • ClusterNodeMonitoring: mengonfigurasi pengumpulan metrik dari komponen node seperti kubelet dan cAdvisor.

Duplikasi metrik

Jika Anda memfilter metrik yang juga disertakan dalam paket metrik aktif untuk cluster, metrik tersebut akan muncul beberapa kali di Google Cloud Managed Service for Prometheus. Misalnya, jika cluster Anda mengaktifkan paket metrik KUBELET dan Anda mengonfigurasi pengumpulan metrik kubelet_running_containers, Anda akan melihat nilai duplikat.

Untuk menghindari duplikasi, pastikan metrik yang Anda kumpulkan tidak disertakan dalam salah satu paket metrik aktif. Untuk mengetahui informasi selengkapnya tentang metrik yang disertakan, lihat paket metrik berikut:

Sebelum memulai

Sebelum memulai, pastikan Anda telah melakukan tugas berikut:

  • Aktifkan Google Kubernetes Engine API.
  • Aktifkan Google Kubernetes Engine API
  • Untuk menggunakan Google Cloud CLI untuk tugas ini, instal lalu lakukan inisialisasi gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk mengumpulkan dan melihat metrik, minta administrator untuk memberi Anda peran IAM berikut pada project Anda:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Mengaktifkan Google Cloud Managed Service for Prometheus

Google Cloud Managed Service for Prometheus diaktifkan secara default di semua cluster GKE dan tidak dapat dinonaktifkan di cluster Autopilot. Jika Anda menggunakan cluster Autopilot, lanjutkan ke bagian Mengonfigurasi pengumpulan metrik.

Untuk memverifikasi bahwa Google Cloud Managed Service for Prometheus diaktifkan di cluster Standar Anda, pilih salah satu opsi berikut:

Konsol

  1. Di konsol Google Cloud , buka halaman Kubernetes clusters.

    Buka cluster Kubernetes

  2. Di baris untuk cluster yang ingin Anda periksa, klik Tindakan >  Edit. Halaman Cluster details akan terbuka.

  3. Di bagian Features, periksa nilai di kolom Managed Service for Prometheus. Jika nilainya Diaktifkan, lanjutkan ke bagian Mengonfigurasi pengumpulan metrik. Jika nilainya adalah Nonaktif, aktifkan Google Cloud Managed Service for Prometheus:

    1. Klik Edit Managed Service for Prometheus. Dialog Edit Managed Service for Prometheus akan terbuka.
    2. Centang kotak Enable Managed Service for Prometheus.
    3. Klik Simpan perubahan.

gcloud

Periksa apakah Google Cloud Managed Service for Prometheus diaktifkan di cluster:

gcloud container clusters describe CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --format='value(monitoringConfig.managedPrometheusConfig.enabled)'

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster Standard Anda.
  • CONTROL_PLANE_LOCATION: region atau zona bidang kontrol cluster, seperti us-central1 atau us-central1-a.

Jika outputnya adalah True, berarti Google Cloud Managed Service for Prometheus diaktifkan. Jika outputnya adalah False, aktifkan Google Cloud Managed Service for Prometheus:

gcloud container clusters update CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION \
    --enable-managed-prometheus

Mengonfigurasi pengumpulan metrik

Untuk mengonfigurasi Google Cloud Managed Service for Prometheus agar menyerap metrik tertentu yang dikeluarkan, Anda memerlukan informasi berikut tentang metrik tersebut:

  • Nama metrik, seperti kubelet_working_pods.
  • Endpoint yang mengekspos metrik, seperti /metrics/cadvisor atau /metrics.

Untuk menemukan metrik dan mengonfigurasi pengumpulan, ikuti langkah-langkah berikut:

  1. Temukan metrik dalam dokumentasi referensi untuk komponen tertentu. Misalnya, Anda dapat menggunakan resource berikut untuk menemukan metrik node:

  2. Periksa paket metrik aktif untuk cluster:

    gcloud container clusters describe CLUSTER_NAME \
        --location=CONTROL_PLANE_LOCATION \
        --flatten=monitoringConfig.componentConfig \
        --format='value(enableComponents)'
    

    Outputnya mirip dengan hal berikut ini:

    SYSTEM_COMPONENTS;STORAGE;POD;DEPLOYMENT;STATEFULSET;DAEMONSET;HPA;JOBSET;CADVISOR;KUBELET;DCGM
    
  3. Periksa apakah metrik yang ingin Anda kumpulkan ada dalam salah satu paket aktif ini dengan menggunakan informasi di Metrik yang tersedia. Jika metrik Anda disertakan dalam paket metrik aktif, metrik duplikat mungkin muncul di Monitoring. Jika metrik Anda tidak ada dalam paket metrik aktif, lanjutkan ke langkah berikutnya.

  4. Opsional: Untuk memverifikasi bahwa metrik tersedia di endpoint metrik, kueri endpoint menggunakan perintah kubectl get --raw. Misalnya, perintah berikut mengkueri endpoint /metrics untuk metrik kubelet_working_pods:

    kubectl get --raw "/api/v1/nodes/NODE_NAME/proxy/metrics" | grep "kubelet_working_pods"
    

    Ganti NODE_NAME dengan nama node yang akan dikueri.

    Outputnya mirip dengan berikut ini, yang menunjukkan bahwa metrik tersedia:

    # HELP kubelet_working_pods [ALPHA] Number of pods the kubelet is actually running, broken down by lifecycle phase, whether the pod is desired, orphaned, or runtime only (also orphaned), and whether the pod is static. An orphaned pod has been removed from local configuration or force deleted in the API and consumes resources that are not otherwise visible.
    # TYPE kubelet_working_pods gauge
    kubelet_working_pods{config="desired",lifecycle="sync",static=""} 8
    kubelet_working_pods{config="desired",lifecycle="sync",static="true"} 1
    kubelet_working_pods{config="desired",lifecycle="terminated",static=""} 0
    kubelet_working_pods{config="desired",lifecycle="terminated",static="true"} 0
    kubelet_working_pods{config="desired",lifecycle="terminating",static=""} 0
    kubelet_working_pods{config="desired",lifecycle="terminating",static="true"} 0
    
  5. Setelah mengidentifikasi metrik yang ingin dikumpulkan, gunakan aturan pelabelan ulang Prometheus di resource kustom PodMonitoring, ClusterPodMonitoring, atau ClusterNodeMonitoring untuk memfilter metrik tersebut. Resource kustom yang Anda gunakan bergantung pada properti metrik, seperti yang dijelaskan di bagian Resource kustom pengumpulan metrik.

    Misalnya, tinjau manifes ClusterNodeMonitoring berikut:

    apiVersion: monitoring.googleapis.com/v1
    kind: ClusterNodeMonitoring
    metadata:
      name: kubelet-pod-counts
    spec:
      selector:
        matchLabels: {}
      endpoints:
      - path: "/metrics"
        scheme: "https"
        interval: "30s"
        tls:
          insecureSkipVerify: true
        # metricRelabeling specifies the metrics to ingest. The metrics must be
        # available at the specified endpoint.
        metricRelabeling:
        - action: keep
          sourceLabels: [__name__]
          regex: kubelet_(active|working)_pods
    

    Manifes ini memiliki properti berikut:

    • Kolom selector.matchLabels adalah set kosong ({}), yang cocok dengan semua node.
    • Kolom endpoints.path mengidentifikasi endpoint metrik yang akan di-scrape.
    • Kolom metricRelabeling mengidentifikasi metrik spesifik yang akan dikumpulkan. Dalam contoh ini, Google Cloud Managed Service for Prometheus mengumpulkan metrik yang memiliki nama kubelet_active_pods dan kubelet_working_pods dari endpoint.

Saat Anda men-deploy resource kustom, Google Cloud Managed Service for Prometheus akan menyerap metrik yang sesuai dengan konfigurasi yang Anda tentukan. Anda dapat melihat dan membuat kueri metrik ini menggunakan metode yang sama dengan yang Anda gunakan untuk metrik lain, seperti Cloud Monitoring.

Memverifikasi pengumpulan metrik untuk contoh metrik

Langkah-langkah berikut menunjukkan cara mengonfigurasi Google Cloud Managed Service for Prometheus untuk mengumpulkan metrik kubelet_runtime_operations_errors_total dari kubelet. Dalam contoh langkah-langkah ini, Anda memverifikasi bahwa metrik saat ini tidak dikumpulkan, membuat ClusterNodeMonitoring (karena kubelet adalah komponen node), lalu memverifikasi bahwa metrik muncul di Monitoring.

  1. Pastikan metrik kubelet_runtime_operations_errors_total belum ada di Monitoring:

    1. Di konsol Google Cloud , buka halaman Metrics explorer.

      Buka Metrics Explorer

    2. Di bagian Queries, di kolom Metric, coba pilih metrik prometheus/kubelet_runtime_operations_errors_total/counter tersebut. Jika Anda tidak melihat hasil penelusuran, metrik tidak dikumpulkan.

  2. Buat ClusterNodeMonitoring untuk memfilter metrik kubelet_runtime_operations_errors_total:

    1. Simpan manifes ClusterNodeMonitoring berikut sebagai kubelet-runtime-errors-collector.yaml:

      apiVersion: monitoring.googleapis.com/v1
      kind: ClusterNodeMonitoring
      metadata:
        name: kubelet-runtime-errors-collector
      spec:
        selector:
          matchLabels: {}
        endpoints:
        - path: /metrics
          scheme: https
          interval: 30s
          tls:
            insecureSkipVerify: true
          metricRelabeling:
          - action: keep
            sourceLabels: [__name__]
            regex: kubelet_runtime_operations_errors_total
      
    2. Buat ClusterNodeMonitoring:

      kubectl apply -f kubelet-runtime-errors-collector.yaml
      

    Metrik mungkin memerlukan waktu hingga 10 menit untuk muncul di Monitoring.

  3. Di konsol Google Cloud , pastikan metrik muncul di Monitoring:

    1. Buka halaman Metrics Explorer.

      Buka Metrics Explorer

    2. Di bagian Queries, di kolom Metric, pilih metrik prometheus/kubelet_runtime_operations_errors_total/counter.

    3. Opsional: Di menu drop-down Filter, pilih cluster Anda.

    Bagian Hasil menampilkan diagram dengan metrik yang dikumpulkan.

Langkah berikutnya