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:
Di konsol Google Cloud, buka New Project:
Di kolom Project Name, masukkan nama untuk project Anda, lalu klik Create.
Buka Penagihan:
Pilih project yang baru saja Anda buat jika belum dipilih di bagian atas halaman.
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:
Buka APIs & services:
Pilih project Anda.
Klik Aktifkan API dan Layanan.
Telusuri "Monitoring".
Di hasil penelusuran, klik "Cloud Monitoring API".
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:
- Deployment
gmp-operator
, yang men-deploy operator Kubernetes untuk Managed Service for Prometheus. - Deployment
rule-evaluator
, yang digunakan untuk mengonfigurasi dan menjalankan aturan pemberitahuan dan perekaman. - DaemonSet
collector
, yang menskalakan pengumpulan secara horizontal dengan menyalin metrik hanya dari pod yang berjalan pada node yang sama dengan setiap kolektor. - StatefulSet
alertmanager
, yang dikonfigurasi untuk mengirim pemberitahuan yang dipicu ke saluran notifikasi pilihan 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:
Cluster GKE Autopilot yang menjalankan GKE versi 1.25 atau yang lebih tinggi.
Cluster GKE Standard yang menjalankan GKE versi 1.27 atau yang lebih baru. Anda dapat mengganti nilai default ini saat membuat cluster; lihat Menonaktifkan koleksi terkelola.
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:
-
Di panel navigasi konsol Google Cloud, pilih Monitoring, lalu pilih Dashboards:
Pilih kategori dasbor G C P, lalu pilih GKE Clusters.
Untuk mengaktifkan koleksi terkelola di satu atau beberapa cluster GKE dengan menggunakan dasbor Cluster GKE, lakukan langkah berikut:
Pilih kotak centang untuk setiap cluster GKE tempat Anda ingin mengaktifkan koleksi terkelola.
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:
-
Di panel navigasi konsol Google Cloud, pilih Kubernetes Engine, kemudian pilih Clusters:
Klik nama cluster.
Dalam daftar Features, cari opsi Managed Service for Prometheus. Jika tercantum sebagai nonaktif, klik edit Edit, lalu pilih Enable Managed Service for Prometheus.
Klik Simpan perubahan.
Untuk membuat cluster yang mengaktifkan pengumpulan terkelola, lakukan hal berikut:
-
Di panel navigasi konsol Google Cloud, pilih Kubernetes Engine, kemudian pilih Clusters:
Klik Create.
Klik Configure untuk opsi Standard.
Di panel navigasi, klik Fitur.
Di bagian Operations, pilih Enable Managed Service for Prometheus.
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:
-
Di panel navigasi konsol Google Cloud, pilih Kubernetes Engine, kemudian pilih Clusters:
Klik nama cluster.
Di bagian Features, cari opsi Managed Service for Prometheus. Klik edit Edit, dan hapus centang pada Enable Managed Service for Prometheus.
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:
-
Di panel navigasi konsol Google Cloud, pilih Kubernetes Engine, kemudian pilih Clusters:
Klik Create.
Klik Configure untuk opsi Standard.
Di panel navigasi, klik Fitur.
Di bagian Operations, hapus centang Enable Managed Service for Prometheus.
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:
- Untuk membuat kueri metrik yang diserap oleh aplikasi contoh menggunakan PromQL di Cloud Monitoring, lihat Kueri menggunakan Cloud Monitoring.
- Untuk membuat kueri metrik yang diserap oleh aplikasi contoh menggunakan Grafana, lihat Membuat kueri menggunakan Grafana atau konsumen Prometheus API.
- Untuk mempelajari cara memfilter metrik yang diekspor dan menyesuaikan resource operator prom, lihat Topik tambahan untuk koleksi terkelola.
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.
Tetapkan konteks ke project target Anda:
gcloud config set project PROJECT_ID
Buat akun layanan:
gcloud iam service-accounts create gmp-test-sa
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
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
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
Buka resource OperatorConfig untuk mengedit:
kubectl -n gmp-public edit operatorconfig config
Tambahkan teks yang ditampilkan dalam huruf tebal ke referensi:
Pastikan Anda juga menambahkan kredensial ini ke bagianapiVersion: monitoring.googleapis.com/v1 kind: OperatorConfig metadata: namespace: gmp-public name: config collection: credentials: name: gmp-test-sa key: key.json
rules
agar evaluasi aturan terkelola berfungsi.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 ketrue
, 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 namespaceNAMESPACE_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, deploymentprom-example
memiliki tiga replika dengan satu target metrik, sehingga nilainya adalah3
. Jika ada target yang tidak responsif, kolomStatus.Endpoint Statuses.Unhealthy Targets
akan muncul.Status.Endpoint Statuses.Collectors Fraction
menunjukkan nilai1
(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 kolomHealth
adalahup
dan nilai untuk kolomLast 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 adalahdown
.
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 Terraformkubectl_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 tindakandrop
untuk daftar tolak. Untuk koleksi terkelola, aturan ini berlaku di bagianmetricRelabeling
pada resource PodMonitoring atau ClusterPodMonitoring Anda.Misalnya, aturan pelabelan ulang metrik berikut akan memfilter semua metrik yang dimulai dengan
foo_bar_
,foo_baz_
, ataufoo_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 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
ServiceMonitorKompatibilitas
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
, dancluster
dengan menambahkannya sebagaiargs
ke resource Deployment dalamoperator.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 awalanexported_
. 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:
Pilih Kubernetes Engine di Konsol Google Cloud, lalu pilih Clusters.
Cari cluster yang koleksi terkelolanya ingin dinonaktifkan, lalu klik namanya.
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 bagianmanaged_prometheus
pada resourcegoogle_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, nilailocation
(region Google Cloud) tempat metrik Anda akan disimpan, dan nilaicluster
untuk menyimpan nama cluster tempat kolektor berjalan.Karena
gcloud
tidak berfungsi di luar lingkungan Google Cloud, Anda harus men-deploy menggunakan kubectl. Berbeda dengangcloud
, men-deploy koleksi terkelola menggunakankubectl
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 perintahkubectl
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 nilaiproject-id
,location
, dancluster
dengan menambahkannya sebagaiargs
ke resource Deployment dalamoperator.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 menggunakanglobal
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 sepertius-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