Google Cloud Managed Service for Prometheus mendukung evaluasi aturan dan pemberitahuan 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 menjalankan aturan dan pemberitahuan terhadap datastore global.
Evaluasi aturan untuk pengumpulan data 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, jendela kueri maksimum untuk aturan dibatasi oleh durasi server menyimpan data lokal.
Sebagian besar aturan hanya dijalankan 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 berguna untuk dapat mengevaluasi aturan terhadap backend metrik global, misalnya, saat semua data untuk suatu aturan tidak ditempatkan bersama di 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:
Konfigurasi alat command line sebagai berikut:
Konfigurasi gcloud CLI untuk merujuk ke ID projectGoogle Cloud Anda:
gcloud config set project PROJECT_ID
Jika berjalan di GKE, gunakan gcloud CLI untuk menyetel cluster Anda:
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
Jika tidak, gunakan CLI
kubectluntuk menyetel cluster Anda:kubectl config set-cluster CLUSTER_NAME
Untuk mengetahui informasi selengkapnya tentang alat ini, lihat artikel 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
Jika cluster Kubernetes Anda telah mengaktifkan Workload Identity Federation for GKE, Anda dapat melewati bagian ini.
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.
Mengonfigurasi akun layanan untuk Workload Identity Federation for GKE
Jika cluster Kubernetes Anda tidak mengaktifkan Workload Identity Federation for GKE, Anda dapat melewati bagian ini.
Managed Service for Prometheus mengambil data metrik menggunakan Cloud Monitoring API. Jika cluster Anda menggunakan Workload Identity Federation for GKE, Anda harus memberikan izin akun layanan Kubernetes Anda ke Monitoring API. Bagian ini menjelaskan hal berikut:
- Membuat Google Cloud akun layanan khusus,
gmp-test-sa. - Mengikat Google Cloud akun layanan ke akun layanan
Kubernetes default di namespace pengujian,
NAMESPACE_NAME. - Memberikan izin yang diperlukan ke akun layanan Google Cloud .
Buat dan ikat 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. Lanjutkan ke Melakukan otorisasi akun layanan.
Pertama, buat akun layanan jika Anda belum melakukannya:
gcloud config set project PROJECT_ID \ && gcloud iam service-accounts create gmp-test-sa
Kemudian, gunakan urutan perintah berikut untuk mengikat akun layanangmp-test-sa ke akun layanan Kubernetes default di namespace NAMESPACE_NAME:
gcloud config set project PROJECT_ID \ && gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --condition=None \ --member "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE_NAME/default]" \ gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ && kubectl annotate serviceaccount \ --namespace NAMESPACE_NAME \ default \ iam.gke.io/gcp-service-account=gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com
Jika Anda menggunakan namespace atau akun layanan GKE yang berbeda, sesuaikan perintah dengan tepat.
Memberikan otorisasi 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 Anda telah memberikan peran tertentu kepada Google Cloud akun layanan 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.iam.gserviceaccount.com \ --role=roles/monitoring.viewer \ --condition=None \ && \ gcloud projects add-iam-policy-binding PROJECT_ID\ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/monitoring.metricWriter \ --condition=None \ && \ gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:gmp-test-sa@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator \ --condition=None
Men-debug konfigurasi Workload Identity Federation for GKE
Jika Anda mengalami masalah saat mengaktifkan Workload Identity Federation for GKE, lihat dokumentasi tentang memverifikasi penyiapan Workload Identity Federation for GKE dan panduan pemecahan masalah Workload Identity Federation for GKE.
Karena kesalahan ketik dan salin tempel sebagian adalah sumber kesalahan paling umum saat mengonfigurasi Workload Identity Federation untuk GKE, kami sangat merekomendasikan penggunaan 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 memberikan semua izin yang diperlukan kepada akun layanan Google Clouduntuk 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 mengetahui informasi selengkapnya tentang cara mengonfigurasi akun layanan untuk pengelolaan workload identity, lihat Menggunakan Workload Identity Federation untuk GKE.
Men-deploy evaluator aturan mandiri
Evaluator aturan Managed Service for Prometheus mengevaluasi aturan pemberitahuan dan pengumpulan data Prometheus terhadap HTTP API Managed Service for Prometheus dan menulis hasilnya kembali ke Monarch. Alat ini menerima format file konfigurasi dan format file aturan yang sama dengan Prometheus. Flag-nya 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.15.3/manifests/rule-evaluator.yaml
Pastikan pod untuk rule-evaluator 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 Anda memverifikasi bahwa rule-evaluator berhasil di-deploy, Anda dapat melakukan penyesuaian pada manifes yang diinstal untuk melakukan hal berikut:
- Tambahkan file aturan kustom Anda.
- Konfigurasi rule-evaluator untuk mengirim pemberitahuan ke Alertmanager Prometheus yang di-deploy sendiri menggunakan kolom
alertmanager_configfile konfigurasi.
Jika Alertmanager Anda berada di cluster yang berbeda dengan rule-evaluator, Anda mungkin perlu menyiapkan resource Endpoints.
Misalnya, jika OperatorConfig Anda menentukan bahwa endpoint Alertmanager dapat ditemukan di objek Endpoints ns=alertmanager/name=alertmanager, maka 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, rule-evaluator 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 rule-evaluator menggunakan flag atau variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS.
Tetapkan konteks ke project target Anda:
gcloud config set project PROJECT_ID
Membuat akun layanan:
gcloud iam service-accounts create gmp-test-sa
Langkah ini membuat akun layanan yang mungkin telah 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.iam.gserviceaccount.com \ --role=roles/monitoring.viewer \ && \ 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 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 rule-evaluator untuk mengedit:
kubectl -n NAMESPACE_NAME edit deploy rule-evaluator
Tambahkan teks yang ditampilkan dalam huruf 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 global dan multi-project
Sebaiknya jalankan satu instance evaluator aturan di setiap Google Cloud project dan region, bukan menjalankan satu instance yang mengevaluasi 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 projectGoogle Cloud yang terkait dengan cluster, yang akan dideteksinya secara otomatis. Untuk mengevaluasi aturan yang mencakup project, Anda dapat mengganti project yang dikueri dengan menggunakan flag
--query.project-iddan menentukan project dengan cakupan metrik multi-project. Jika cakupan metrik Anda berisi semua project Anda, maka aturan Anda akan dievaluasi secara global. Untuk mengetahui 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_labelsyang sama dengan biner server Managed Service for Prometheus. Sebaiknya tulis aturan sehingga labelproject_id,location,cluster, dannamespacedipertahankan dengan tepat untuk tingkat agregasinya. Jika tidak, performa kueri dapat menurun dan Anda dapat mengalami batas kardinalitas.Label
project_idataulocationwajib ada. Jika label ini tidak ada, nilai dalam hasil evaluasi aturan akan ditetapkan berdasarkan konfigurasi evaluator aturan. Labelclusterataunamespaceyang tidak ada tidak diberi nilai.Kemampuan observasi mandiri
Evaluator aturan memancarkan metrik Prometheus di port yang dapat dikonfigurasi menggunakan flag
--web.listen-address.Misalnya, jika pod
rule-evaluator-64475b696c-95z29mengekspos 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/metricsAnda dapat mengonfigurasi stack Prometheus untuk mengumpulkan metrik ini sehingga Anda dapat melihat performa evaluator aturan.
Deployment ketersediaan tinggi
Evaluator aturan dapat berjalan dalam penyiapan dengan ketersediaan tinggi 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 Google Cloud metrik sistem menggunakan PromQL. Untuk mengetahui petunjuk cara membuat kueri yang valid, lihat PromQL untuk metrik Cloud Monitoring.