Mulai menggunakan koleksi terkelola

Dokumen ini menjelaskan cara menyiapkan Google Cloud Managed Service for Prometheus dengan koleksi terkelola. Penyiapan tersebut adalah contoh minimal penyerapan yang berjalan, menggunakan deployment Prometheus yang memantau aplikasi contoh dan menyimpan metrik yang dikumpulkan di Monarch.

Dokumen ini menunjukkan cara melakukan hal berikut:

  • Menyiapkan lingkungan dan alat command line.
  • Siapkan koleksi terkelola untuk cluster Anda.
  • Konfigurasi resource untuk scraping target dan penyerapan metrik.
  • Memigrasikan resource kustom operator prometheus yang ada.

Sebaiknya gunakan koleksi terkelola karena akan mengurangi kompleksitas deployment, penskalaan, sharding, konfigurasi, dan pemeliharaan kolektor. Koleksi terkelola didukung untuk GKE dan semua lingkungan Kubernetes lainnya.

Koleksi terkelola menjalankan kolektor berbasis Prometheus sebagai Daemonset dan memastikan skalabilitas hanya dengan melakukan scraping target pada node yang ditempatkan bersama. Anda mengonfigurasi kolektor dengan resource kustom ringan untuk meng-scrap pengekspor menggunakan koleksi pull, lalu kolektor mengirimkan data yang disalin ke pusat penyimpanan data Raja. Google Cloud tidak pernah mengakses cluster Anda secara langsung untuk mengambil atau menyalin data metrik; kolektor Anda mengirim data ke Google Cloud. Untuk mengetahui informasi selengkapnya tentang pengumpulan data yang terkelola dan di-deploy sendiri, lihat Pengumpulan data dengan Layanan Terkelola untuk Prometheus serta Penyerapan dan pembuatan kueri dengan pengumpulan yang dikelola dan di-deploy sendiri.

Sebelum memulai

Bagian ini menjelaskan konfigurasi yang diperlukan untuk tugas-tugas yang dijelaskan dalam dokumen ini.

Menyiapkan project dan alat

Untuk menggunakan Google Cloud Managed Service for Prometheus, Anda memerlukan referensi berikut:

  • Project Google Cloud dengan Cloud Monitoring API diaktifkan.

    • Jika Anda tidak memiliki project Google Cloud, lakukan hal berikut:

      1. Di konsol Google Cloud, buka New Project:

        Membuat Project Baru

      2. Di kolom Project Name, masukkan nama untuk project Anda, lalu klik Create.

      3. Buka Penagihan:

        Buka Penagihan

      4. Pilih project yang baru saja Anda buat jika belum dipilih di bagian atas halaman.

      5. Anda akan diminta untuk memilih profil pembayaran yang sudah ada atau membuat yang baru.

      Monitoring API diaktifkan secara default untuk project baru.

    • Jika Anda sudah memiliki project Google Cloud, pastikan Monitoring API diaktifkan:

      1. Buka APIs & services:

        Buka APIs & services

      2. Pilih project Anda.

      3. Klik Aktifkan API dan Layanan.

      4. Telusuri "Monitoring".

      5. Di hasil penelusuran, klik "Cloud Monitoring API".

      6. Jika "API enabled" tidak ditampilkan, klik tombol Enable.

  • Cluster Kubernetes. Jika Anda tidak memiliki cluster Kubernetes, ikuti petunjuk dalam Panduan Memulai untuk GKE.

Anda juga memerlukan alat command line berikut:

  • gcloud
  • kubectl

Alat gcloud dan kubectl adalah bagian dari Google Cloud CLI. Untuk mengetahui informasi tentang cara menginstalnya, lihat Mengelola komponen Google Cloud CLI. Untuk melihat komponen gcloud CLI yang telah Anda instal, jalankan perintah berikut:

gcloud components list

Mengonfigurasi lingkungan Anda

Agar tidak berulang kali memasukkan project ID atau nama cluster Anda, lakukan konfigurasi berikut:

  • Konfigurasikan alat command line sebagai berikut:

    • Konfigurasikan gcloud CLI untuk merujuk ke ID project Google Cloud Anda:

      gcloud config set project PROJECT_ID
      
    • Konfigurasikan kubectl CLI untuk menggunakan cluster Anda:

      kubectl config set-cluster CLUSTER_NAME
      

    Untuk mengetahui informasi selengkapnya tentang alat ini, lihat referensi berikut:

Menyiapkan namespace

Buat namespace Kubernetes NAMESPACE_NAME untuk resource yang Anda buat sebagai bagian dari aplikasi contoh:

kubectl create ns NAMESPACE_NAME

Menyiapkan koleksi terkelola

Anda dapat menggunakan koleksi terkelola di cluster Kubernetes GKE dan non-GKE.

Setelah pengumpulan terkelola diaktifkan, komponen dalam cluster akan berjalan, tetapi belum ada metrik yang dibuat. Resource PodMonitoring atau ClusterPodMonitoring diperlukan oleh komponen ini untuk menyalin endpoint metrik dengan benar. Anda harus men-deploy resource ini dengan endpoint metrik yang valid atau mengaktifkan salah satu paket metrik terkelola, misalnya, Kube state metrics, yang dibangun ke dalam GKE. Untuk informasi pemecahan masalah, lihat Masalah sisi penyerapan.

Jika koleksi terkelola diaktifkan, komponen berikut akan diinstal di cluster Anda:

Untuk dokumentasi referensi tentang operator Google Cloud Managed Service for Prometheus, lihat halaman manifes.

Aktifkan koleksi terkelola: GKE

Koleksi terkelola diaktifkan secara default untuk hal berikut:

Jika Anda menjalankan lingkungan GKE yang tidak mengaktifkan pengumpulan terkelola secara default, lihat Mengaktifkan koleksi terkelola secara manual.

Koleksi terkelola di GKE otomatis diupgrade saat versi komponen dalam cluster yang baru dirilis.

Koleksi terkelola di GKE menggunakan izin yang diberikan ke akun layanan Compute Engine default. Jika memiliki kebijakan yang mengubah izin standar pada akun layanan node default, Anda mungkin perlu menambahkan peran Monitoring Metric Writer untuk melanjutkan.

Aktifkan koleksi terkelola secara manual

Jika Anda berjalan di lingkungan GKE yang tidak mengaktifkan pengumpulan terkelola secara default, Anda dapat mengaktifkan pengumpulan terkelola dengan cara berikut:

  • Dasbor Cluster GKE di Cloud Monitoring.
  • Halaman Kubernetes Engine di Konsol Google Cloud.
  • Google Cloud CLI. Untuk menggunakan gcloud CLI, Anda harus menjalankan GKE versi 1.21.4-gke.300 atau yang lebih baru.
  • Terraform untuk Google Kubernetes Engine. Agar dapat menggunakan Terraform untuk mengaktifkan Managed Service for Prometheus, Anda harus menjalankan GKE versi 1.21.4-gke.300 atau yang lebih baru.

Dasbor Cluster GKE

Anda dapat melakukan hal berikut menggunakan dasbor Cluster GKE di Cloud Monitoring.

  • Tentukan apakah Google Cloud Managed Service for Prometheus diaktifkan di cluster Anda, dan apakah Anda menggunakan koleksi terkelola atau yang di-deploy sendiri.
  • Aktifkan koleksi terkelola pada cluster dalam project Anda.
  • Lihat informasi lain tentang cluster Anda.

Untuk melihat dasbor Cluster GKE, lakukan langkah berikut:

  1. Di panel navigasi konsol Google Cloud, pilih Monitoring, lalu pilih  Dashboards:

    Buka Dasbor

  2. Pilih kategori dasbor G C P, lalu pilih GKE Clusters.

Dasbor Cluster GKE di Cloud Monitoring.

Untuk mengaktifkan koleksi terkelola di satu atau beberapa cluster GKE dengan menggunakan dasbor Cluster GKE, lakukan langkah berikut:

  1. Pilih kotak centang untuk setiap cluster GKE tempat Anda ingin mengaktifkan koleksi terkelola.

  2. Pilih Aktifkan yang Dipilih.

UI Kubernetes Engine

Anda dapat melakukan hal berikut menggunakan Konsol Google Cloud:

  • Mengaktifkan koleksi terkelola di cluster GKE yang sudah ada.
  • Membuat cluster GKE baru dengan mengaktifkan koleksi terkelola.

Untuk mengupdate cluster yang ada, lakukan langkah-langkah berikut:

  1. Di panel navigasi konsol Google Cloud, pilih Kubernetes Engine, kemudian pilih Clusters:

    Buka Cluster Kubernetes

  2. Klik nama cluster.

  3. Dalam daftar Features, cari opsi Managed Service for Prometheus. Jika tercantum sebagai nonaktif, klik Edit, lalu pilih Enable Managed Service for Prometheus.

  4. Klik Simpan perubahan.

Untuk membuat cluster yang mengaktifkan pengumpulan terkelola, lakukan hal berikut:

  1. Di panel navigasi konsol Google Cloud, pilih Kubernetes Engine, kemudian pilih Clusters:

    Buka Cluster Kubernetes

  2. Klik Create.

  3. Klik Configure untuk opsi Standard.

  4. Di panel navigasi, klik Fitur.

  5. Di bagian Operations, pilih Enable Managed Service for Prometheus.

  6. Klik Simpan.

gcloud CLI

Anda dapat melakukan hal berikut menggunakan gcloud CLI:

  • Mengaktifkan koleksi terkelola di cluster GKE yang sudah ada.
  • Membuat cluster GKE baru dengan mengaktifkan koleksi terkelola.

Mungkin perlu waktu hingga 5 menit untuk menyelesaikan perintah ini.

Pertama, tetapkan project Anda:

gcloud config set project PROJECT_ID

Untuk mengupdate cluster yang ada, jalankan salah satu perintah update berikut berdasarkan apakah cluster Anda bersifat zona atau regional:

  • gcloud container clusters update CLUSTER_NAME --enable-managed-prometheus --zone ZONE
    
  • gcloud container clusters update CLUSTER_NAME --enable-managed-prometheus --region REGION
    

Untuk membuat cluster yang mengaktifkan koleksi terkelola, jalankan perintah berikut:

gcloud container clusters create CLUSTER_NAME --zone ZONE --enable-managed-prometheus

Autopilot GKE

Koleksi terkelola aktif secara default di cluster GKE Autopilot yang menjalankan GKE versi 1.25 atau yang lebih baru. Anda tidak dapat menonaktifkan koleksi terkelola.

Jika cluster Anda gagal mengaktifkan koleksi terkelola secara otomatis saat mengupgrade ke versi 1.25, Anda dapat mengaktifkannya secara manual dengan menjalankan perintah update di bagian gcloud CLI.

Terraform

Untuk mengetahui petunjuk cara mengonfigurasi koleksi terkelola menggunakan Terraform, buka registry Terraform untuk google_container_cluster.

Untuk mengetahui informasi umum tentang penggunaan Google Cloud dengan Terraform, baca artikel Terraform dengan Google Cloud.

Nonaktifkan koleksi terkelola

Jika ingin menonaktifkan koleksi terkelola di cluster, Anda dapat menggunakan salah satu metode berikut:

UI Kubernetes Engine

Anda dapat melakukan hal berikut menggunakan Konsol Google Cloud:

  • Menonaktifkan pengumpulan terkelola di cluster GKE yang sudah ada.
  • Ganti pengaktifan otomatis koleksi terkelola saat membuat cluster GKE Standard baru yang menjalankan GKE versi 1.27 atau yang lebih baru.

Untuk mengupdate cluster yang ada, lakukan langkah-langkah berikut:

  1. Di panel navigasi konsol Google Cloud, pilih Kubernetes Engine, kemudian pilih Clusters:

    Buka Cluster Kubernetes

  2. Klik nama cluster.

  3. Di bagian Features, cari opsi Managed Service for Prometheus. Klik  Edit, dan hapus centang pada Enable Managed Service for Prometheus.

  4. Klik Simpan perubahan.

Untuk mengganti pengaktifan otomatis koleksi terkelola saat membuat cluster GKE Standard baru (versi 1.27 atau yang lebih baru), lakukan langkah berikut:

  1. Di panel navigasi konsol Google Cloud, pilih Kubernetes Engine, kemudian pilih Clusters:

    Buka Cluster Kubernetes

  2. Klik Create.

  3. Klik Configure untuk opsi Standard.

  4. Di panel navigasi, klik Fitur.

  5. Di bagian Operations, hapus centang Enable Managed Service for Prometheus.

  6. Klik Simpan.

gcloud CLI

Anda dapat melakukan hal berikut menggunakan gcloud CLI:

  • Menonaktifkan pengumpulan terkelola di cluster GKE yang sudah ada.
  • Ganti pengaktifan otomatis koleksi terkelola saat membuat cluster GKE Standard baru yang menjalankan GKE versi 1.27 atau yang lebih baru.

Mungkin perlu waktu hingga 5 menit untuk menyelesaikan perintah ini.

Pertama, tetapkan project Anda:

gcloud config set project PROJECT_ID

Untuk menonaktifkan pengumpulan terkelola di cluster yang ada, jalankan salah satu perintah update berikut berdasarkan apakah cluster Anda bersifat zona atau regional:

  • gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus --zone ZONE
    
  • gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus --region REGION
    

Untuk mengganti pengaktifan otomatis koleksi terkelola saat membuat cluster GKE Standard baru (versi 1.27 atau yang lebih baru), jalankan perintah berikut:

gcloud container clusters create CLUSTER_NAME --zone ZONE --no-enable-managed-prometheus

Autopilot GKE

Anda tidak dapat menonaktifkan koleksi terkelola di cluster GKE Autopilot yang menjalankan GKE versi 1.25 atau yang lebih baru.

Terraform

Untuk menonaktifkan koleksi terkelola, tetapkan atribut enabled dalam blok konfigurasi managed_prometheus ke false. Untuk mengetahui informasi selengkapnya tentang blok konfigurasi ini, lihat registry Terraform untuk google_container_cluster.

Untuk mengetahui informasi umum tentang penggunaan Google Cloud dengan Terraform, baca artikel Terraform dengan Google Cloud.

Aktifkan koleksi terkelola: Kubernetes non-GKE

Jika menjalankan di lingkungan non-GKE, Anda dapat mengaktifkan pengumpulan terkelola menggunakan hal berikut:

  • CLI kubectl.
  • Solusi paket yang disertakan dalam deployment GKE Enterprise yang menjalankan versi 1.12 atau yang lebih baru.

CLI kubectl

Untuk menginstal kolektor terkelola saat Anda menggunakan cluster Kubernetes non-GKE, jalankan perintah berikut untuk menginstal konfigurasi dan manifes operator:

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.8.2/manifests/setup.yaml

kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.8.2/manifests/operator.yaml

GKE Enterprise

Untuk mengetahui informasi tentang cara mengonfigurasi koleksi terkelola untuk cluster GKE Enterprise, lihat dokumentasi untuk distribusi Anda:

Men-deploy aplikasi contoh

Aplikasi contoh memunculkan metrik penghitung example_requests_total dan metrik histogram example_random_numbers (antara lain) pada port metrics-nya. Manifes untuk aplikasi menentukan tiga replika.

Untuk men-deploy aplikasi contoh, jalankan perintah berikut:

kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.8.2/examples/example-app.yaml

Mengonfigurasi resource PodMonitoring

Untuk menyerap data metrik yang dikeluarkan oleh aplikasi contoh, Managed Service for Prometheus menggunakan scraping target. Target scraping dan penyerapan metrik dikonfigurasi menggunakan resource kustom Kubernetes. Layanan terkelola menggunakan resource kustom (CR) PodMonitoring.

CR PodMonitoring menyalin target hanya di namespace tempat CR di-deploy. Untuk menyalin target di beberapa namespace, deploy CR PodMonitoring yang sama di setiap namespace. Anda dapat memastikan bahwa resource PodMonitoring diinstal di namespace yang diinginkan dengan menjalankan kubectl get podmonitoring -A.

Untuk dokumentasi referensi tentang semua CR Managed Service for Prometheus, lihat referensi prometheus-engine/doc/api.

Manifes berikut menentukan resource PodMonitoring, prom-example, dalam namespace NAMESPACE_NAME. Resource ini menggunakan pemilih label Kubernetes untuk menemukan semua pod dalam namespace yang memiliki label app.kubernetes.io/name dengan nilai prom-example. Pod yang cocok disalin pada port bernama metrics, setiap 30 detik, di jalur HTTP /metrics.

apiVersion: monitoring.googleapis.com/v1
kind: PodMonitoring
metadata:
  name: prom-example
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: prom-example
  endpoints:
  - port: metrics
    interval: 30s

Untuk menerapkan resource ini, jalankan perintah berikut:

kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.8.2/examples/pod-monitoring.yaml

Kolektor terkelola Anda sekarang sedang menyalin pod yang cocok. Anda dapat melihat status target scrape Anda dengan mengaktifkan fitur status target.

Untuk mengonfigurasi koleksi horizontal yang berlaku pada berbagai pod di seluruh namespace, gunakan resource ClusterPodMonitoring. Resource ClusterPodMonitoring menyediakan antarmuka yang sama dengan resource PodMonitoring, tetapi tidak membatasi pod yang ditemukan ke namespace tertentu.

Jika menjalankan di GKE, Anda dapat melakukan hal berikut:

Jika menjalankan di luar GKE, Anda harus membuat akun layanan dan mengizinkannya untuk menulis data metrik, seperti yang dijelaskan di bagian berikut.

Memberikan kredensial secara eksplisit

Saat berjalan di GKE, server pengumpul Prometheus akan otomatis mengambil kredensial dari lingkungan berdasarkan akun layanan node tersebut. Dalam cluster Kubernetes non-GKE, kredensial harus diberikan secara eksplisit melalui resource OperatorConfig di namespace gmp-public.

  1. Tetapkan konteks ke project target Anda:

    gcloud config set project PROJECT_ID
    
  2. Buat akun layanan:

    gcloud iam service-accounts create gmp-test-sa
    

  3. Berikan izin yang diperlukan ke akun layanan tersebut:

    gcloud projects add-iam-policy-binding PROJECT_ID\
      --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \
      --role=roles/monitoring.metricWriter
    

  4. Buat dan download kunci untuk akun layanan:

    gcloud iam service-accounts keys create gmp-test-sa-key.json \
      --iam-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
    
  5. Tambahkan file kunci sebagai rahasia ke cluster non-GKE Anda:

    kubectl -n gmp-public create secret generic gmp-test-sa \
      --from-file=key.json=gmp-test-sa-key.json
    

  6. Buka resource OperatorConfig untuk mengedit:

    kubectl -n gmp-public edit operatorconfig config
    
    1. Tambahkan teks yang ditampilkan dalam huruf tebal ke referensi:

      apiVersion: monitoring.googleapis.com/v1
      kind: OperatorConfig
      metadata:
        namespace: gmp-public
        name: config
      collection:
        credentials:
          name: gmp-test-sa
          key: key.json
      
      Pastikan Anda juga menambahkan kredensial ini ke bagian rules agar evaluasi aturan terkelola berfungsi.

    2. Simpan file dan tutup editor. Setelah perubahan diterapkan, pod dibuat ulang dan mulai mengautentikasi ke backend metrik dengan akun layanan yang diberikan.

    Topik tambahan untuk koleksi terkelola

    Bagian ini menjelaskan cara melakukan hal berikut:

    • Aktifkan fitur status target untuk memudahkan proses debug.
    • Mengonfigurasi salinan target menggunakan Terraform.
    • Filter data yang Anda ekspor ke layanan terkelola.
    • Hapus metrik Kubelet dan cAdvisor.
    • Mengonversi resource operator prom yang ada untuk digunakan dengan layanan terkelola.
    • Menjalankan koleksi terkelola di luar GKE.

    Mengaktifkan fitur status target

    Anda dapat memeriksa status target di resource PodMonitoring atau ClusterPodMonitoring dengan menyetel nilai features.targetStatus.enabled dalam resource OperatorConfig ke true, seperti yang ditunjukkan di bawah ini:

        apiVersion: monitoring.googleapis.com/v1
        kind: OperatorConfig
        metadata:
          namespace: gmp-public
          name: config
        features:
          targetStatus:
            enabled: true
    

    Setelah beberapa detik, kolom Status.Endpoint Statuses akan muncul di setiap resource PodMonitoring atau ClusterPodMonitoring yang valid, jika dikonfigurasi.

    Jika Anda memiliki resource PodMonitoring dengan nama prom-example dalam namespace NAMESPACE_NAME, Anda dapat memeriksa statusnya dengan menjalankan perintah berikut:

    kubectl -n NAMESPACE_NAME describe podmonitorings/prom-example
    

    Outputnya akan terlihat seperti berikut:

    API Version:  monitoring.googleapis.com/v1
    Kind:         PodMonitoring
    ...
    Status:
      Conditions:
        ...
        Status:                True
        Type:                  ConfigurationCreateSuccess
      Endpoint Statuses:
        Active Targets:       3
        Collectors Fraction:  1
        Last Update Time:     2023-08-02T12:24:26Z
        Name:                 PodMonitoring/custom/prom-example/metrics
        Sample Groups:
          Count:  3
          Sample Targets:
            Health:  up
            Labels:
              Cluster:                     CLUSTER_NAME
              Container:                   prom-example
              Instance:                    prom-example-589ddf7f7f-hcnpt:metrics
              Job:                         prom-example
              Location:                    REGION
              Namespace:                   NAMESPACE_NAME
              Pod:                         prom-example-589ddf7f7f-hcnpt
              project_id:                  PROJECT_ID
            Last Scrape Duration Seconds:  0.020206416
            Health:                        up
            Labels:
              ...
            Last Scrape Duration Seconds:  0.054189485
            Health:                        up
            Labels:
              ...
            Last Scrape Duration Seconds:  0.006224887
    

    Outputnya mencakup kolom status berikut:

    • Status.Conditions.Status bernilai benar saat Layanan Terkelola untuk Prometheus mengonfirmasi dan memproses PodMonitoring atau ClusterPodMonitoring.
    • Status.Endpoint Statuses.Active Targets menunjukkan jumlah target scrape yang diperhitungkan oleh Managed Service for Prometheus pada semua kolektor untuk resource PodMonitoring ini. Dalam contoh aplikasi, deployment prom-example memiliki tiga replika dengan satu target metrik, sehingga nilainya adalah 3. Jika ada target yang tidak responsif, kolom Status.Endpoint Statuses.Unhealthy Targets akan muncul.
    • Status.Endpoint Statuses.Collectors Fraction menunjukkan nilai 1 (artinya 100%) jika semua kolektor terkelola dapat dijangkau oleh Google Cloud Managed Service for Prometheus.
    • Status.Endpoint Statuses.Last Update Time menampilkan waktu terakhir diperbarui. Jika waktu update terakhir jauh lebih lama dari waktu interval salinan yang diinginkan, perbedaannya mungkin menunjukkan masalah pada target atau cluster Anda.
    • Kolom Status.Endpoint Statuses.Sample Groups menampilkan target contoh yang dikelompokkan berdasarkan label target umum yang dimasukkan oleh kolektor. Nilai ini berguna untuk proses debug saat target Anda tidak ditemukan. Jika semua target responsif dan sedang dikumpulkan, nilai yang diharapkan untuk kolom Health adalah up dan nilai untuk kolom Last Scrape Duration Seconds adalah durasi biasa untuk target standar.

    Untuk mengetahui informasi selengkapnya tentang kolom ini, lihat dokumen Layanan Terkelola untuk Prometheus API.

    Salah satu dari hal berikut mungkin menunjukkan masalah dengan konfigurasi Anda:

    • Tidak ada kolom Status.Endpoint Statuses di resource PodMonitoring Anda.
    • Nilai kolom Last Scrape Duration Seconds terlalu lama.
    • Anda melihat terlalu sedikit target.
    • Nilai kolom Health menunjukkan bahwa target adalah down.

    Untuk informasi selengkapnya tentang proses debug masalah penemuan target, lihat Masalah sisi penyerapan dalam dokumentasi pemecahan masalah.

    Mengonfigurasi salinan target menggunakan Terraform

    Anda dapat mengotomatiskan pembuatan dan pengelolaan resource PodMonitoring serta ClusterPodMonitoring menggunakan jenis resource Terraform kubernetes_manifest atau jenis resource Terraform kubectl_manifest. Kedua jenis resource ini dapat digunakan untuk menentukan resource kustom arbitrer.

    Untuk mengetahui informasi umum tentang penggunaan Google Cloud dengan Terraform, baca artikel Terraform dengan Google Cloud.

    Memfilter metrik yang diekspor

    Jika mengumpulkan banyak data, Anda mungkin ingin mencegah beberapa deret waktu dikirim ke Managed Service for Prometheus untuk menekan biaya. Anda dapat melakukannya menggunakan aturan pelabelan ulang Prometheus dengan tindakan keep untuk daftar yang diizinkan atau tindakan drop untuk daftar tolak. Untuk koleksi terkelola, aturan ini berlaku di bagian metricRelabeling pada resource PodMonitoring atau ClusterPodMonitoring Anda.

    Misalnya, aturan pelabelan ulang metrik berikut akan memfilter semua metrik yang dimulai dengan foo_bar_, foo_baz_, atau foo_qux_:

      metricRelabeling:
      - action: drop
        regex: foo_(bar|baz|qux)_.+
        sourceLabels: [__name__]
    

    Halaman Metrics Management Cloud Monitoring menyediakan informasi yang dapat membantu Anda mengontrol jumlah biaya yang dikeluarkan untuk metrik yang dapat dikenakan biaya tanpa memengaruhi kemampuan observasi. Halaman Pengelolaan Metrik melaporkan informasi berikut:

    • Volume penyerapan untuk penagihan berbasis byte dan sampel, di seluruh domain metrik dan untuk masing-masing metrik.
    • Data tentang label dan kardinalitas metrik.
    • Penggunaan metrik dalam kebijakan pemberitahuan dan dasbor kustom.
    • Rasio error penulisan metrik.
    Untuk informasi selengkapnya tentang halaman Metrics Management, lihat Melihat dan mengelola penggunaan metrik.

    Untuk saran tambahan tentang cara menurunkan biaya, lihat Kontrol dan atribusi biaya.

    Melakukan scraping metrik Kubelet dan cAdvisor

    Kubelet menampilkan metrik tentang dirinya sendiri serta metrik cAdvisor tentang container yang berjalan di node-nya. Anda dapat mengonfigurasi koleksi terkelola untuk menyalin metrik Kubelet dan cAdvisor dengan mengedit resource OperatorConfig. Untuk mengetahui petunjuknya, lihat dokumentasi pengekspor untuk Kubelet dan cAdvisor.

    Mengonversi resource operator prometheus yang ada

    Anda biasanya dapat mengonversi resource operator prometheus yang sudah ada ke resource Managed Service untuk PodMonitoring koleksi terkelola Prometheus dan ClusterPodMonitoring.

    Misalnya, resource ServiceMonitor menentukan pemantauan untuk serangkaian layanan. Resource PodMonitoring melayani subkumpulan kolom yang disalurkan oleh resource ServiceMonitor. Anda dapat mengonversi CR ServiceMonitor ke CR PodMonitoring dengan memetakan kolom seperti yang dijelaskan dalam tabel berikut:

    monitoring.coreos.com/v1
    ServiceMonitor
    Kompatibilitas
    monitoring.googleapis.com/v1
    PodMonitoring
    .ServiceMonitorSpec.Selector Identik .PodMonitoringSpec.Selector
    .ServiceMonitorSpec.Endpoints[] .TargetPort dipetakan ke .Port
    .Path: compatible
    .Interval: compatible
    .Timeout: compatible
    .PodMonitoringSpec.Endpoints[]
    .ServiceMonitorSpec.TargetLabels PodMonitor harus menentukan:
    .FromPod[].From label pod
    .FromPod[].To label target
    .PodMonitoringSpec.TargetLabels

    Berikut adalah contoh CR ServiceMonitor; konten dalam huruf tebal diganti dalam konversi, dan konten dalam peta jenis miring secara langsung:

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: example-app
    spec:
      selector:
        matchLabels:
          app: example-app
      endpoints:
      - targetPort: web
        path: /stats
        interval: 30s
      targetLabels:
      - foo
    

    Berikut adalah CR PodMonitoring yang serupa, dengan asumsi bahwa layanan Anda dan podnya diberi label app=example-app. Jika asumsi ini tidak berlaku, Anda harus menggunakan pemilih label dari resource Layanan yang mendasarinya.

    Konten yang dicetak tebal telah diganti dalam konversi:

    apiVersion: monitoring.googleapis.com/v1
    kind: PodMonitoring
    metadata:
      name: example-app
    spec:
      selector:
        matchLabels:
          app: example-app
      endpoints:
      - port: web
        path: /stats
        interval: 30s
      targetLabels:
        fromPod:
        - from: foo # pod label from example-app Service pods.
          to: foo
    

    Anda dapat terus menggunakan resource operator prometheus dan konfigurasi deployment yang ada menggunakan kolektor yang di-deploy sendiri, bukan kolektor terkelola. Anda dapat membuat kueri metrik yang dikirim dari kedua jenis kolektor, jadi sebaiknya gunakan kolektor yang di-deploy sendiri untuk deployment Prometheus yang ada saat menggunakan kolektor terkelola untuk deployment Prometheus baru.

    Label yang dicadangkan

    Google Cloud Managed Service for Prometheus otomatis menambahkan label berikut ke semua metrik yang dikumpulkan:

    • project_id: ID project Google Cloud yang terkait dengan metrik Anda.
    • location: Lokasi fisik (region Google Cloud) tempat data disimpan. Nilai ini biasanya merupakan region cluster GKE Anda. Jika data dikumpulkan dari AWS atau deployment lokal, nilainya mungkin adalah region Google Cloud terdekat.
    • cluster: Nama cluster Kubernetes yang terkait dengan metrik Anda.
    • namespace: Nama namespace Kubernetes yang terkait dengan metrik Anda.
    • job: Label tugas target Prometheus, jika diketahui; mungkin kosong untuk hasil evaluasi aturan.
    • instance: Label instance target Prometheus, jika diketahui; mungkin kosong untuk hasil evaluasi aturan.

    Meskipun tidak direkomendasikan saat berjalan di Google Kubernetes Engine, Anda dapat mengganti label project_id, location, dan cluster dengan menambahkannya sebagai args ke resource Deployment dalam operator.yaml. Jika Anda menggunakan label yang dicadangkan sebagai label metrik, Google Cloud Managed Service for Prometheus akan otomatis memberi label ulang label tersebut dengan menambahkan awalan exported_. Perilaku ini cocok dengan cara Prometheus upstream menangani konflik dengan label yang dicadangkan.

    Pembongkaran

    Untuk menonaktifkan koleksi terkelola yang di-deploy menggunakan gcloud atau UI GKE, Anda dapat melakukan salah satu tindakan berikut:

    • Jalankan perintah berikut:

      gcloud container clusters update CLUSTER_NAME --disable-managed-prometheus
      
    • Gunakan UI GKE:

      1. Pilih Kubernetes Engine di Konsol Google Cloud, lalu pilih Clusters.

      2. Cari cluster yang koleksi terkelolanya ingin dinonaktifkan, lalu klik namanya.

      3. Di tab Details, scroll ke bawah ke Features dan ubah status menjadi Disabled menggunakan tombol edit.

    Untuk menonaktifkan koleksi terkelola yang di-deploy menggunakan Terraform, tentukan enabled = false di bagian managed_prometheus pada resource google_container_cluster.

    Untuk menonaktifkan koleksi terkelola yang di-deploy menggunakan kubectl, jalankan perintah berikut:

    kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.8.2/manifests/operator.yaml
    

    Jika koleksi terkelola dinonaktifkan, cluster Anda akan berhenti mengirim data baru ke Google Cloud Managed Service for Prometheus. Melakukan tindakan ini tidak menghapus data metrik yang ada yang sudah tersimpan di sistem.

    Menonaktifkan koleksi terkelola juga akan menghapus namespace gmp-public dan resource apa pun di dalamnya, termasuk pengekspor yang diinstal dalam namespace tersebut.

    Menjalankan koleksi terkelola di luar GKE

    Di lingkungan GKE, Anda dapat menjalankan koleksi terkelola tanpa konfigurasi lebih lanjut. Di lingkungan Kubernetes lainnya, Anda harus secara eksplisit memberikan kredensial, nilai project-id untuk memuat metrik Anda, nilai location (region Google Cloud) tempat metrik Anda akan disimpan, dan nilai cluster untuk menyimpan nama cluster tempat kolektor berjalan.

    Karena gcloud tidak berfungsi di luar lingkungan Google Cloud, Anda harus men-deploy menggunakan kubectl. Berbeda dengan gcloud, men-deploy koleksi terkelola menggunakan kubectl tidak secara otomatis mengupgrade cluster Anda saat versi baru tersedia. Jangan lupa untuk menonton halaman rilis untuk mengetahui versi baru dan mengupgrade secara manual dengan menjalankan kembali perintah kubectl dengan versi baru.

    Anda dapat memberikan kunci akun layanan dengan mengubah resource OperatorConfig dalam operator.yaml seperti yang dijelaskan di Memberikan kredensial secara eksplisit. Anda dapat memberikan nilai project-id, location, dan cluster dengan menambahkannya sebagai args ke resource Deployment dalam operator.yaml.

    Sebaiknya pilih project-id berdasarkan model tenancy yang direncanakan untuk bacaan. Pilih project untuk menyimpan metrik berdasarkan cara Anda berencana mengatur pembacaan nanti dengan cakupan metrik. Jika Anda tidak peduli, Anda bisa menempatkan semuanya ke dalam satu proyek.

    Untuk location, sebaiknya pilih region Google Cloud terdekat dengan deployment Anda. Semakin jauh region Google Cloud yang dipilih dari deployment Anda, semakin banyak latensi tulis yang akan Anda alami, dan semakin besar dampak dari potensi masalah jaringan. Sebaiknya Anda membaca daftar region di beberapa cloud ini. Jika tidak peduli, Anda dapat menempatkan semuanya ke dalam satu region Google Cloud. Anda tidak dapat menggunakan global sebagai lokasi Anda.

    Untuk cluster, sebaiknya pilih nama cluster tempat operator di-deploy.

    Jika dikonfigurasi dengan benar, OperatorConfig akan terlihat seperti ini:

        apiVersion: monitoring.googleapis.com/v1
        kind: OperatorConfig
        metadata:
          namespace: gmp-public
          name: config
        collection:
          credentials:
            name: gmp-test-sa
            key: key.json
        rules:
          credentials:
            name: gmp-test-sa
            key: key.json
    

    Dan resource Deployment Anda akan terlihat seperti ini:

    apiVersion: apps/v1
    kind: Deployment
    ...
    spec:
      ...
      template:
        ...
        spec:
          ...
          containers:
          - name: operator
            ...
            args:
            - ...
            - "--project-id=PROJECT_ID"
            - "--cluster=CLUSTER_NAME"
            - "--location=REGION"
    

    Contoh ini mengasumsikan bahwa Anda telah menetapkan variabel REGION ke nilai seperti us-central1, misalnya.

    Menjalankan Managed Service for Prometheus di luar Google Cloud akan dikenai biaya transfer data. Ada biaya untuk mentransfer data ke Google Cloud, dan Anda mungkin dikenai biaya untuk mentransfer data keluar dari cloud lain. Pada versi 0.5.0 dan yang lebih tinggi, Anda dapat meminimalkan biaya ini dengan mengaktifkan kompresi gzip melalui OperatorConfig. Tambahkan teks yang ditampilkan dalam huruf tebal ke resource:

        apiVersion: monitoring.googleapis.com/v1
        kind: OperatorConfig
        metadata:
          namespace: gmp-public
          name: config
        collection:
          compression: gzip
          ...
    

    Bacaan lebih lanjut tentang resource kustom koleksi terkelola

    Untuk dokumentasi referensi tentang semua resource kustom Managed Service for Prometheus, lihat referensi prometheus-engine/doc/api.

    Langkah selanjutnya