Google Cloud Managed Service for Prometheus mendukung evaluasi dan pemberitahuan aturan yang kompatibel dengan Prometheus. Dokumen ini menjelaskan cara menyiapkan evaluasi aturan yang di-deploy sendiri, termasuk komponen evaluator aturan mandiri.
Anda hanya perlu mengikuti petunjuk ini jika ingin mengeksekusi aturan dan pemberitahuan terhadap datastore global.
Evaluasi aturan untuk koleksi yang di-deploy sendiri
Setelah men-deploy Managed Service for Prometheus, Anda dapat terus mengevaluasi aturan secara lokal di setiap instance yang di-deploy menggunakan kolom rule_files
dari file konfigurasi Prometheus. Namun, periode kueri maksimum untuk aturan tersebut
dibatasi oleh berapa lama server menyimpan data lokal.
Sebagian besar aturan hanya dieksekusi selama beberapa menit terakhir data, sehingga menjalankan aturan di setiap server lokal sering kali merupakan strategi yang valid. Dalam hal ini, tidak diperlukan penyiapan lebih lanjut.
Namun, terkadang ada baiknya untuk dapat mengevaluasi aturan terhadap backend metrik global, misalnya, saat semua data untuk aturan tidak berada di lokasi yang sama pada instance Prometheus tertentu. Untuk kasus ini, Managed Service for Prometheus juga menyediakan komponen evaluator aturan.
Sebelum memulai
Bagian ini menjelaskan konfigurasi yang diperlukan untuk tugas yang dijelaskan dalam dokumen ini.
Mengonfigurasi lingkungan Anda
Agar tidak perlu memasukkan project ID atau nama cluster berulang kali, 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 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
Memverifikasi kredensial akun layanan
Anda dapat melewati bagian ini jika cluster Kubernetes Anda telah mengaktifkan Workload Identity Federation for GKE.
Saat berjalan di GKE, Managed Service for Prometheus akan otomatis mengambil kredensial dari lingkungan berdasarkan akun layanan default Compute Engine. Akun layanan default memiliki izin yang diperlukan, monitoring.metricWriter
dan monitoring.viewer
, secara default. Jika Anda tidak menggunakan Workload Identity Federation untuk GKE, dan sebelumnya telah
menghapus salah satu peran tersebut dari akun layanan node default, Anda harus
menambahkan kembali izin yang hilang tersebut sebelum melanjutkan.
Jika Anda tidak menjalankannya di GKE, lihat Memberikan kredensial secara eksplisit.
Mengonfigurasi akun layanan untuk Workload Identity Federation for GKE
Anda dapat melewati bagian ini jika cluster Kubernetes Anda tidak mengaktifkan Workload Identity Federation untuk GKE.
Managed Service for Prometheus mengambil data metrik menggunakan Cloud Monitoring API. Jika cluster Anda menggunakan Workload Identity Federation untuk GKE, Anda harus memberikan izin akun layanan Kubernetes ke Monitoring API. Bagian ini menjelaskan hal berikut:
- Membuat akun layanan Google Cloud khusus,
gmp-test-sa
. - Mengikat akun layanan Google Cloud ke akun layanan
Kubernetes default di namespace pengujian,
NAMESPACE_NAME
. - Memberikan izin yang diperlukan ke akun layanan Google Cloud.
Membuat dan mengikat akun layanan
Langkah ini muncul di beberapa tempat dalam dokumentasi Managed Service for Prometheus. Jika Anda telah melakukan langkah ini sebagai bagian dari tugas sebelumnya, Anda tidak perlu mengulanginya. Langsung ke Memberikan otorisasi ke akun layanan.
Urutan perintah berikut membuat akun layanan gmp-test-sa
dan mengikatnya ke akun layanan Kubernetes default di
namespace NAMESPACE_NAME
:
gcloud config set project PROJECT_ID \ && gcloud iam service-accounts create gmp-test-sa \ && gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE_NAME/default]" \ gmp-test-sa@PROJECT_ID. \ && kubectl annotate serviceaccount \ --namespace NAMESPACE_NAME \ default \ iam.gke.io/gcp-service-account=gmp-test-sa@PROJECT_ID.
Jika Anda menggunakan namespace atau akun layanan GKE yang berbeda, sesuaikan perintah dengan tepat.
Memberikan otorisasi ke akun layanan
Grup izin terkait dikumpulkan ke dalam peran, dan Anda memberikan peran tersebut kepada akun utama, dalam contoh ini, akun layanan Google Cloud. Untuk mengetahui informasi selengkapnya tentang peran Monitoring, lihat Kontrol akses.
Perintah berikut memberikan peran Monitoring API yang diperlukan akun layanan Google Cloud,
gmp-test-sa
, untuk
membaca dan menulis
data metrik.
Jika telah memberikan peran tertentu kepada akun layanan Google Cloud sebagai bagian dari tugas sebelumnya, Anda tidak perlu melakukannya lagi.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:gmp-test-sa@PROJECT_ID. \ --role=roles/monitoring.viewer \ && \ gcloud projects add-iam-policy-binding PROJECT_ID\ --member=serviceAccount:gmp-test-sa@PROJECT_ID. \ --role=roles/monitoring.metricWriter
Men-debug konfigurasi Workload Identity Federation for GKE
Jika Anda mengalami masalah saat membuat Workload Identity Federation for GKE berfungsi, lihat dokumentasi untuk memverifikasi penyiapan Workload Identity Federation for GKE dan panduan pemecahan masalah Workload Identity Federation for GKE.
Karena kesalahan ketik dan penyalinan sebagian adalah sumber error paling umum saat mengonfigurasi Workload Identity Federation untuk GKE, sebaiknya gunakan variabel yang dapat diedit dan ikon salin-tempel yang dapat diklik yang disematkan dalam contoh kode dalam petunjuk ini.
Workload Identity Federation for GKE di lingkungan produksi
Contoh yang dijelaskan dalam dokumen ini mengikat akun layanan Google Cloud ke akun layanan Kubernetes default dan memberi akun layanan Google Cloud semua izin yang diperlukan untuk menggunakan Monitoring API.
Dalam lingkungan produksi, Anda mungkin ingin menggunakan pendekatan yang lebih terperinci, dengan akun layanan untuk setiap komponen, masing-masing dengan izin minimal. Untuk informasi selengkapnya tentang cara mengonfigurasi akun layanan untuk pengelolaan identitas beban kerja, lihat Menggunakan Workload Identity Federation untuk GKE.
Men-deploy evaluator aturan mandiri
Evaluator aturan Managed Service for Prometheus mengevaluasi aturan pemberitahuan dan perekaman Prometheus terhadap HTTP API Managed Service for Prometheus dan menulis hasilnya kembali ke Monarch. Prometheus menerima format file konfigurasi dan format file aturan yang sama dengan Prometheus. Tanda-tandanya juga sebagian besar identik.
Buat contoh deployment evaluator aturan yang telah dikonfigurasi sebelumnya untuk mengevaluasi aturan pemberitahuan dan perekaman:
kubectl apply -n NAMESPACE_NAME -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.13.0/manifests/rule-evaluator.yaml
Pastikan bahwa pod untuk evaluator aturan berhasil di-deploy:
kubectl -n NAMESPACE_NAME get pod
Jika deployment berhasil, Anda akan melihat output yang mirip dengan berikut:
NAME READY STATUS RESTARTS AGE ... rule-evaluator-64475b696c-95z29 2/2 Running 0 1m
Setelah memverifikasi bahwa evaluator aturan berhasil di-deploy, Anda dapat melakukan penyesuaian pada manifes yang diinstal untuk melakukan hal berikut:
- Tambahkan file aturan kustom Anda.
- Konfigurasikan evaluator aturan untuk mengirim pemberitahuan ke Alertmanager Prometheus yang di-deploy sendiri menggunakan kolom
alertmanager_config
dari file konfigurasi.
Jika Alertmanager berada di cluster yang berbeda dengan evaluator aturan, Anda mungkin perlu menyiapkan Resource endpoint.
Misalnya, jika OperatorConfig Anda menentukan bahwa endpoint Alertmanager dapat
ditemukan di objek Endpoints ns=alertmanager/name=alertmanager
, Anda dapat
membuat objek ini secara manual atau terprogram sendiri dan mengisinya
dengan IP yang dapat dijangkau dari cluster lain.
Memberikan kredensial secara eksplisit
Saat berjalan di GKE, evaluator aturan akan otomatis mengambil kredensial dari lingkungan berdasarkan akun layanan node atau penyiapan Workload Identity Federation for GKE.
Di cluster Kubernetes non-GKE, kredensial harus diberikan secara eksplisit
ke evaluator aturan menggunakan flag atau
variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS
.
Tetapkan konteks ke project target Anda:
gcloud config set project PROJECT_ID
Buat akun layanan:
gcloud iam service-accounts create gmp-test-sa
Langkah ini akan membuat akun layanan yang mungkin sudah Anda buat di petunjuk Workload Identity Federation untuk GKE.
Berikan izin yang diperlukan ke akun layanan:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:gmp-test-sa@PROJECT_ID. \ --role=roles/monitoring.viewer \ && \ gcloud projects add-iam-policy-binding PROJECT_ID\ --member=serviceAccount:gmp-test-sa@PROJECT_ID. \ --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.
Tambahkan file kunci sebagai secret ke cluster non-GKE Anda:
kubectl -n NAMESPACE_NAME create secret generic gmp-test-sa \ --from-file=key.json=gmp-test-sa-key.json
Buka resource Deployment evaluator aturan untuk mengedit:
kubectl -n NAMESPACE_NAME edit deploy rule-evaluator
Tambahkan teks yang ditampilkan dalam cetak tebal ke resource:
apiVersion: apps/v1 kind: Deployment metadata: namespace: NAMESPACE_NAME name: rule-evaluator spec: template containers: - name: evaluator args: - --query.credentials-file=/gmp/key.json - --export.credentials-file=/gmp/key.json ... volumeMounts: - name: gmp-sa mountPath: /gmp readOnly: true ... volumes: - name: gmp-sa secret: secretName: gmp-test-sa ...
Simpan file dan tutup editor. Setelah perubahan diterapkan, pod akan dibuat ulang dan mulai mengautentikasi ke backend metrik dengan akun layanan yang diberikan.
GOOGLE_APPLICATION_CREDENTIALS
.Evaluasi aturan multi-project dan global
Sebaiknya jalankan satu instance evaluator aturan di setiap project dan region Google Cloud, bukan menjalankan satu instance yang dievaluasi terhadap banyak project dan region. Namun, kami mendukung evaluasi aturan multi-project untuk skenario yang memerlukannya.
Saat di-deploy di Google Kubernetes Engine, evaluator aturan menggunakan project Google Cloud yang terkait dengan cluster, yang otomatis dideteksi. Untuk mengevaluasi aturan yang mencakup project, Anda dapat mengganti project yang dikueri dengan menggunakan flag
--query.project-id
dan menentukan project dengan cakupan metrik multi-project. Jika cakupan metrik Anda berisi semua project, aturan Anda akan dievaluasi secara global. Untuk informasi selengkapnya, lihat Cakupan metrik.Anda juga harus memperbarui izin akun layanan yang digunakan oleh evaluator aturan sehingga akun layanan dapat membaca dari project cakupan dan menulis ke semua project yang dipantau dalam cakupan metrik.
Mempertahankan label saat menulis aturan
Untuk data yang ditulis kembali oleh evaluator ke Managed Service for Prometheus, evaluator mendukung flag
--export.*
dan konfigurasi berbasisexternal_labels
yang sama dengan biner server Managed Service for Prometheus. Sebaiknya tulis aturan agar labelproject_id
,location
,cluster
, dannamespace
dipertahankan dengan tepat untuk tingkat agregasinya. Jika tidak, performa kueri dapat menurun dan Anda mungkin mengalami batas kardinalitas.Label
project_id
ataulocation
wajib diisi. Jika label ini tidak ada, nilai dalam hasil evaluasi aturan akan ditetapkan berdasarkan konfigurasi evaluator aturan. Labelcluster
ataunamespace
yang tidak ada tidak akan diberi nilai.Kemampuan observasi mandiri
Evaluator aturan memunculkan metrik Prometheus di port yang dapat dikonfigurasi menggunakan flag
--web.listen-address
.Misalnya, jika pod
rule-evaluator-64475b696c-95z29
mengekspos metrik ini di port9092
, metrik dapat dilihat secara manual menggunakankubectl
:# Port forward the metrics endpoint. kubectl port-forward rule-evaluator-64475b696c-95z29 9092 # Then query in a separate terminal. curl localhost:9092/metrics
Anda dapat mengonfigurasi stack Prometheus untuk mengumpulkannya sehingga Anda memiliki visibilitas terhadap performa evaluator aturan.
Deployment ketersediaan tinggi
Evaluator aturan dapat berjalan dalam penyiapan yang sangat tersedia dengan mengikuti pendekatan yang sama seperti yang didokumentasikan untuk server Prometheus.
Pemberitahuan menggunakan metrik Cloud Monitoring
Anda dapat mengonfigurasi evaluator aturan untuk memberikan pemberitahuan tentang metrik sistem Google Cloud menggunakan PromQL. Untuk mengetahui petunjuk cara membuat kueri yang valid, lihat PromQL untuk metrik Cloud Monitoring.