Membuat kueri menggunakan Grafana

Setelah men-deploy Google Cloud Managed Service for Prometheus, Anda dapat membuat kueri data yang dikirim ke layanan terkelola dan menampilkan hasilnya dalam diagram dan dasbor.

Dokumen ini menjelaskan cakupan metrik, yang menentukan data yang dapat Anda buat kuerinya, dan cara menggunakan Grafana untuk mengambil dan menggunakan data yang telah Anda kumpulkan.

Semua antarmuka kueri untuk Managed Service for Prometheus dikonfigurasi untuk mengambil data dari Monarch menggunakan Cloud Monitoring API. Dengan mengkueri Monarch, bukan mengkueri data dari server Prometheus lokal, Anda mendapatkan pemantauan global dalam skala besar.

Sebelum memulai

Jika Anda belum men-deploy layanan terkelola, siapkan pengumpulan terkelola atau pengumpulan yang di-deploy sendiri. Anda dapat melewati langkah ini jika hanya tertarik untuk membuat kueri metrik Cloud Monitoring menggunakan PromQL.

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 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 data metrik.

Jika telah memberikan peran tertentu kepada akun layanan Google Cloud sebagai bagian dari tugas sebelumnya, Anda tidak perlu melakukannya lagi.

Untuk memberi otorisasi akun layanan Anda agar dapat membaca dari cakupan metrik multi-project, ikuti petunjuk ini, lalu lihat Mengubah project yang dikueri.

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/iam.serviceAccountTokenCreator

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.

Cakupan kueri dan metrik

Data yang dapat Anda buat kuerinya ditentukan oleh cakupan metrik konstruk Cloud Monitoring, terlepas dari metode yang Anda gunakan untuk membuat kueri data. Misalnya, jika Anda menggunakan Grafana untuk mengkueri data Managed Service for Prometheus, setiap cakupan metrik harus dikonfigurasi sebagai sumber data terpisah.

Cakupan metrik Monitoring adalah konstruksi hanya-waktu baca yang memungkinkan Anda membuat kueri data metrik milik beberapa project Google Cloud. Setiap cakupan metrik dihosting oleh project Google Cloud yang ditetapkan, yang disebut project cakupan.

Secara default, project adalah project pencakupan untuk cakupan metriknya sendiri, dan cakupan metrik berisi metrik dan konfigurasi untuk project tersebut. Project cakupan dapat memiliki lebih dari satu project yang dipantau dalam cakupan metriknya, dan metrik serta konfigurasi dari semua project yang dipantau dalam cakupan metrik dapat dilihat oleh project cakupan. Project yang dipantau juga dapat termasuk dalam lebih dari satu cakupan metrik.

Saat membuat kueri metrik dalam project cakupan, dan jika project cakupan tersebut menghosting cakupan metrik multi-project, Anda dapat mengambil data dari beberapa project. Jika cakupan metrik Anda berisi semua project, kueri dan aturan akan dievaluasi secara global.

Untuk informasi selengkapnya tentang cakupan project dan cakupan metrik, lihat Cakupan metrik. Untuk informasi tentang cara mengonfigurasi cakupan metrik multi-project, lihat Melihat metrik untuk beberapa project.

Data Managed Service for Prometheus di Cloud Monitoring

Cara termudah untuk memverifikasi bahwa data Prometheus Anda diekspor adalah dengan menggunakan halaman Cloud Monitoring Metrics Explorer di konsol Google Cloud, yang mendukung PromQL. Untuk mengetahui petunjuknya, lihat Membuat kueri menggunakan PromQL di Cloud Monitoring.

Anda juga dapat mengimpor dasbor Grafana ke Cloud Monitoring. Hal ini memungkinkan Anda terus menggunakan dasbor Grafana pribadi atau buatan komunitas tanpa harus mengonfigurasi atau men-deploy instance Grafana.

Grafana

Layanan Terkelola untuk Prometheus menggunakan sumber data Prometheus bawaan untuk Grafana, yang berarti Anda dapat terus menggunakan dasbor Grafana pribadi atau yang dibuat komunitas tanpa perubahan apa pun.

Men-deploy Grafana, jika diperlukan

Jika tidak memiliki deployment Grafana yang berjalan di cluster, Anda dapat membuat deployment pengujian sementara untuk bereksperimen.

Untuk membuat deployment Grafana sementara, terapkan manifes grafana.yaml Managed Service for Prometheus ke cluster, dan teruskan port layanan grafana ke mesin lokal Anda. Karena batasan CORS, Anda tidak dapat mengakses deployment Grafana menggunakan Cloud Shell.

  1. Terapkan manifes grafana.yaml:

    kubectl -n NAMESPACE_NAME apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/v0.13.0/examples/grafana.yaml
    
  2. Teruskan port layanan grafana ke mesin lokal Anda. Contoh ini meneruskan layanan ke port 3000:

    kubectl -n NAMESPACE_NAME port-forward svc/grafana 3000
    

    Perintah ini tidak ditampilkan, dan saat berjalan, perintah ini melaporkan akses ke URL.

    Anda dapat mengakses Grafana di browser pada URL http://localhost:3000 dengan nama pengguna:sandi admin:admin.

Kemudian, tambahkan sumber data Prometheus baru ke Grafana dengan melakukan tindakan berikut:

  1. Buka deployment Grafana Anda, misalnya, dengan membuka URL http://localhost:3000 untuk membuka halaman sambutan Grafana.

  2. Pilih Connections dari menu utama Grafana, lalu pilih Data Sources.

    Menambahkan sumber data di Grafana.

  3. Pilih Add data source, lalu pilih Prometheus sebagai database deret waktu.

    Menambahkan sumber data Prometheus.

  4. Beri nama sumber data, tetapkan kolom URL ke http://localhost:9090, lalu pilih Simpan & Uji. Anda dapat mengabaikan error apa pun yang menyatakan bahwa sumber data tidak dikonfigurasi dengan benar.

  5. Salin URL layanan lokal untuk deployment Anda, yang akan terlihat seperti berikut:

    http://grafana.NAMESPACE_NAME.svc:3000
    

Mengonfigurasi dan mengautentikasi sumber data Grafana

Semua Google Cloud API memerlukan autentikasi menggunakan OAuth2; namun, Grafana tidak mendukung autentikasi OAuth2 untuk akun layanan yang digunakan dengan sumber data Prometheus. Untuk menggunakan Grafana dengan Managed Service for Prometheus, Anda menggunakan penyinkron sumber data untuk membuat kredensial OAuth2 untuk akun layanan dan menyinkronkannya ke Grafana melalui API sumber data Grafana.

Anda harus menggunakan sinkroniser sumber data untuk mengonfigurasi dan memberi otorisasi kepada Grafana untuk mengkueri data secara global. Jika Anda tidak mengikuti langkah-langkah ini, Grafana hanya akan mengeksekusi kueri terhadap data di server Prometheus lokal.

Pengsinkron sumber data adalah alat antarmuka command line yang menggunakan tugas cron untuk menyinkronkan nilai konfigurasi dari jarak jauh ke sumber data Prometheus Grafana tertentu. Tindakan ini memastikan bahwa sumber data Grafana Anda telah dikonfigurasi dengan benar:

  • Autentikasi, dilakukan dengan memuat ulang token akses OAuth2 secara berkala
  • Cloud Monitoring API ditetapkan sebagai URL server Prometheus
  • Metode HTTP ditetapkan ke GET
  • Jenis dan versi Prometheus ditetapkan ke minimum 2.40.x
  • Nilai waktu tunggu HTTP dan Kueri ditetapkan ke 2 menit

Pengsinkron sumber data menggunakan akun layanan Google Cloud untuk secara berkala membuat token akses Google Cloud API dengan izin IAM yang diperlukan untuk mengkueri data Cloud Monitoring. Karena token akses Google Cloud API memiliki masa aktif satu jam, sinkronisasi sumber data berjalan setiap 30 menit untuk memastikan Anda memiliki koneksi autentikasi yang tidak terganggu antara Grafana dan Cloud Monitoring API.

Anda dapat memilih untuk menjalankan sinkroniser sumber data menggunakan CronJob Kubernetes atau menggunakan Cloud Run dan Cloud Scheduler untuk pengalaman sepenuhnya serverless. Jika Anda men-deploy Grafana secara lokal seperti dengan Grafana open source atau Grafana Enterprise, sebaiknya jalankan sinkroniser sumber data di cluster yang sama dengan tempat Grafana berjalan. Jika Anda menggunakan Grafana Cloud, sebaiknya pilih opsi tanpa server sepenuhnya.

Menggunakan Serverless

Untuk men-deploy dan menjalankan sinkroniser sumber data serverless menggunakan Cloud Run dan Cloud Scheduler, lakukan hal berikut:

  1. Pilih project tempat Anda akan men-deploy sinkronisasi sumber data. Sebaiknya pilih project cakupan cakupan metrik multi-project. Pengsinkron sumber data menggunakan project Google Cloud yang dikonfigurasi sebagai project cakupan.

    Selanjutnya, konfigurasikan dan beri otorisasi akun layanan untuk sinkroniser sumber data. Urutan perintah berikut membuat akun layanan dan memberikan beberapa peran IAM. Dua peran pertama memungkinkan akun layanan membaca dari Cloud Monitoring API dan membuat token akun layanan. Dua peran terakhir memungkinkan akun layanan membaca token akun layanan Grafana dari Secret Manager dan memanggil Cloud Run:

    gcloud config set project PROJECT_ID \
    &&
    gcloud iam service-accounts create gmp-ds-syncer-sa \
    &&
    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:gmp-ds-syncer-sa@PROJECT_ID. \
    --role=roles/monitoring.viewer \
    && \
    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:gmp-ds-syncer-sa@PROJECT_ID. \
    --role=roles/iam.serviceAccountTokenCreator \
    && \
    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:gmp-ds-syncer-sa@PROJECT_ID. \
    --role=roles/secretmanager.secretAccessor
    && \
    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:gmp-ds-syncer-sa@PROJECT_ID. \
    --role=roles/run.invoker
    
  2. Tentukan URL instance Grafana Anda, misalnya https://yourcompanyname.grafana.net untuk deployment Grafana Cloud. Instance Grafana Anda harus dapat diakses dari Cloud Run, yang berarti instance tersebut harus dapat diakses dari internet yang lebih luas.

    Jika instance Grafana Anda tidak dapat diakses dari internet yang lebih luas, sebaiknya deploy sinkronisasi sumber data di Kubernetes.

  3. Pilih sumber data Prometheus Grafana yang akan digunakan untuk Managed Service for Prometheus, yang dapat berupa sumber data Prometheus baru atau yang sudah ada, lalu temukan dan tuliskan UID sumber data. UID sumber data dapat ditemukan di bagian akhir URL saat menjelajahi atau mengonfigurasi sumber data, misalnya https://yourcompanyname.grafana.net/connections/datasources/edit/GRAFANA_DATASOURCE_UID. Jangan menyalin seluruh URL sumber data. Hanya salin ID unik di URL.

    Temukan UID sumber data di Grafana.

  4. Siapkan akun layanan Grafana dengan membuat akun layanan dan membuat token untuk digunakan akun:

    1. Di sidebar navigasi Grafana, klik Administration > Users and Access > Service Accounts.

    2. Buat akun layanan di Grafana dengan mengklik Tambahkan akun layanan, beri nama, dan berikan peran "Sumber Data > Penulis". Pastikan Anda menekan tombol Apply untuk menetapkan peran. Di Grafana versi lama, Anda dapat menggunakan peran "Admin".

    3. Klik Tambahkan token akun layanan.

    4. Tetapkan masa berlaku token ke "Tidak ada masa berlaku" dan klik Buat token, lalu salin token yang dihasilkan ke papan klip untuk digunakan sebagai GRAFANA_SERVICE_ACCOUNT_TOKEN di langkah berikutnya:

      Buat dan simpan token akun layanan di Grafana.

  5. Tetapkan variabel dokumentasi berikut menggunakan hasil dari langkah sebelumnya. Anda tidak perlu menempelkan kode ini ke terminal:

    # These values are required.
    REGION # The Google Cloud region where you want to run your Cloud Run job, such as us-central1.
    PROJECT_ID # The Project ID from Step 1.
    GRAFANA_INSTANCE_URL # The Grafana instance URL from step 2. This is a URL. Include "http://" or "https://".
    GRAFANA_DATASOURCE_UID # The Grafana data source UID from step 3. This is not a URL.
    GRAFANA_SERVICE_ACCOUNT_TOKEN # The Grafana service account token from step 4.
    
  6. Buat secret di Secret Manager:

    gcloud secrets create datasource-syncer --replication-policy="automatic" && \
    echo -n GRAFANA_SERVICE_ACCOUNT_TOKEN | gcloud secrets versions add datasource-syncer --data-file=-
    
  7. Buat file YAML berikut dan beri nama cloud-run-datasource-syncer.yaml:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
     name: datasource-syncer-job
    spec:
     template:
       spec:
         taskCount: 1
         template:
           spec:
             containers:
             - name: datasource-syncer
               image: gke.gcr.io/prometheus-engine/datasource-syncer:v0.14.0-gke.0
               args:
               - "--datasource-uids=GRAFANA_DATASOURCE_UID"
               - "--grafana-api-endpoint=GRAFANA_INSTANCE_URL"
               - "--project-id=PROJECT_ID"
               env:
               - name: GRAFANA_SERVICE_ACCOUNT_TOKEN
                 valueFrom:
                   secretKeyRef:
                     key: latest
                     name: datasource-syncer
             serviceAccountName: gmp-ds-syncer-sa@PROJECT_ID.
    

    Kemudian, jalankan perintah berikut untuk membuat tugas Cloud Run menggunakan file YAML:

    gcloud run jobs replace cloud-run-datasource-syncer.yaml --region REGION
    
  8. Buat jadwal di Cloud Scheduler untuk menjalankan tugas Cloud Run setiap 10 menit:

    gcloud scheduler jobs create http datasource-syncer \
    --location REGION \
    --schedule="*/10 * * * *" \
    --uri="https://REGION-run.googleapis.com/apis/run.googleapis.com/v1/namespaces/PROJECT_ID/jobs/datasource-syncer-job:run" \
    --http-method POST \
    --oauth-service-account-email=gmp-ds-syncer-sa@PROJECT_ID.
    

    Kemudian, paksa jalankan penjadwal yang baru saja Anda buat:

    gcloud scheduler jobs run datasource-syncer --location REGION
    

    Diperlukan waktu hingga 15 detik agar sumber data diperbarui.

  9. Buka sumber data Grafana yang baru dikonfigurasi dan pastikan nilai URL server Prometheus dimulai dengan https://monitoring.googleapis.com. Anda mungkin harus memuat ulang halaman. Setelah diverifikasi, buka bagian bawah halaman, pilih Simpan & uji, dan pastikan Anda melihat tanda centang hijau yang menyatakan bahwa sumber data dikonfigurasi dengan benar. Anda harus memilih Simpan & uji setidaknya satu kali untuk memastikan pelengkapan otomatis label di Grafana berfungsi.

Menggunakan Kubernetes

Untuk men-deploy dan menjalankan sinkroniser sumber data di cluster Kubernetes, lakukan hal berikut:

  1. Pilih project, cluster, dan namespace tempat Anda akan men-deploy sinkronisasi sumber data. Sebaiknya deploy sinkronisasi sumber data di cluster yang termasuk dalam project cakupan cakupan metrik multi-project. Pengsinkron sumber data menggunakan project Google Cloud yang dikonfigurasi sebagai project cakupan.

    Selanjutnya, pastikan Anda mengonfigurasi dan memberikan otorisasi sinkronisasi sumber data dengan benar:

    Kemudian, tentukan apakah Anda harus memberikan otorisasi lebih lanjut ke sinkronisasi sumber data untuk kueri multi-project:

  2. Tentukan URL instance Grafana Anda, misalnya https://yourcompanyname.grafana.net untuk deployment Grafana Cloud atau http://grafana.NAMESPACE_NAME.svc:3000 untuk instance lokal yang dikonfigurasi menggunakan YAML deployment pengujian.

    Jika Anda men-deploy Grafana secara lokal dan cluster Anda dikonfigurasi untuk mengamankan semua traffic dalam cluster menggunakan TLS, Anda harus menggunakan https:// di URL dan melakukan autentikasi menggunakan salah satu opsi autentikasi TLS yang didukung.

  3. Pilih sumber data Prometheus Grafana yang akan digunakan untuk Managed Service for Prometheus, yang dapat berupa sumber data Prometheus baru atau yang sudah ada, lalu temukan dan tuliskan UID sumber data. UID sumber data dapat ditemukan di bagian akhir URL saat menjelajahi atau mengonfigurasi sumber data, misalnya https://yourcompanyname.grafana.net/connections/datasources/edit/GRAFANA_DATASOURCE_UID. Jangan menyalin seluruh URL sumber data. Hanya salin ID unik di URL.

    Temukan UID sumber data di Grafana.

  4. Siapkan akun layanan Grafana dengan membuat akun layanan dan membuat token untuk digunakan akun:

    1. Di sidebar navigasi Grafana, klik Administration > Users and Access > Service Accounts.

    2. Buat akun layanan di Grafana dengan mengklik Tambahkan akun layanan, beri nama, dan berikan peran "Sumber Data > Penulis". Di Grafana versi lama, Anda dapat menggunakan peran "Admin".

    3. Klik Tambahkan token akun layanan.

    4. Tetapkan masa berlaku token ke "Tidak ada masa berlaku" dan klik Buat token, lalu salin token yang dihasilkan ke papan klip untuk digunakan sebagai GRAFANA_SERVICE_ACCOUNT_TOKEN di langkah berikutnya:

      Buat dan simpan token akun layanan di Grafana.

  5. Siapkan variabel lingkungan berikut menggunakan hasil dari langkah sebelumnya:

    # These values are required.
    PROJECT_ID=PROJECT_ID # The Project ID from Step 1.
    GRAFANA_API_ENDPOINT=GRAFANA_INSTANCE_URL # The Grafana instance URL from step 2. This is a URL. Include "http://" or "https://".
    DATASOURCE_UIDS=GRAFANA_DATASOURCE_UID # The Grafana data source UID from step 3. This is not a URL.
    GRAFANA_API_TOKEN=GRAFANA_SERVICE_ACCOUNT_TOKEN # The Grafana service account token from step 4.
    
  6. Jalankan perintah berikut untuk membuat CronJob yang memuat ulang sumber data saat inisialisasi, lalu setiap 30 menit. Jika Anda menggunakan Workload Identity Federation untuk GKE, nilai NAMESPACE_NAME harus berupa namespace yang sama dengan yang sebelumnya Anda tautkan ke akun layanan.

    curl https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/0ca68f91fedb8ab9fc5bc6871c3b100dd602e32b/cmd/datasource-syncer/datasource-syncer.yaml \
    | sed 's|$DATASOURCE_UIDS|'"$DATASOURCE_UIDS"'|; s|$GRAFANA_API_ENDPOINT|'"$GRAFANA_API_ENDPOINT"'|; s|$GRAFANA_API_TOKEN|'"$GRAFANA_API_TOKEN"'|; s|$PROJECT_ID|'"$PROJECT_ID"'|;' \
    | kubectl -n NAMESPACE_NAME apply -f -
    
  7. Buka sumber data Grafana yang baru dikonfigurasi dan pastikan nilai URL server Prometheus dimulai dengan https://monitoring.googleapis.com. Anda mungkin harus memuat ulang halaman. Setelah diverifikasi, buka bagian bawah halaman dan pilih Simpan & uji. Anda harus memilih tombol ini setidaknya sekali untuk memastikan pelengkapan otomatis label di Grafana berfungsi.

Menjalankan kueri menggunakan Grafana

Sekarang Anda dapat membuat dasbor Grafana dan menjalankan kueri menggunakan sumber data yang dikonfigurasi. Screenshot berikut menampilkan diagram Grafana yang menampilkan metrik up:

Diagram Grafana untuk metrik status aktif Managed Service for Prometheus.

Untuk informasi tentang membuat kueri metrik sistem Google Cloud menggunakan PromQL, lihat PromQL untuk metrik Cloud Monitoring.

Menjalankan sinkronisasi sumber data di luar GKE

Anda dapat melewati bagian ini jika menjalankan sinkroniser sumber data di cluster Google Kubernetes Engine atau jika menggunakan opsi serverless. Jika Anda mengalami masalah autentikasi di GKE, lihat Memverifikasi kredensial akun layanan.

Saat berjalan di GKE, sinkroniser sumber data akan otomatis mengambil kredensial dari lingkungan berdasarkan akun layanan node atau penyiapan Workload Identity Federation untuk GKE. Di cluster Kubernetes non-GKE, kredensial harus diberikan secara eksplisit ke sinkroniser sumber data menggunakan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS.

  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
    

    Langkah ini akan membuat akun layanan yang mungkin sudah Anda buat di petunjuk Workload Identity Federation untuk GKE.

  3. 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/iam.serviceAccountTokenCreator
    

  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.
    
  5. Tetapkan jalur file kunci menggunakan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS.

Memberi otorisasi sinkronisasi sumber data untuk mendapatkan pemantauan multi-project

Managed Service for Prometheus mendukung pemantauan multi-project menggunakan cakupan metrik.

Untuk pengguna yang menggunakan opsi serverless, Anda akan mendapatkan kueri multi-project jika project yang dipilih adalah project cakupan dari cakupan metrik multi-project.

Untuk pengguna yang men-deploy sinkronisasi sumber data di Kubernetes, jika project lokal Anda adalah project cakupan, dan Anda telah mengikuti petunjuk untuk memverifikasi atau mengonfigurasi akun layanan untuk project lokal, kueri multi-project akan berfungsi tanpa konfigurasi lebih lanjut.

Jika project lokal bukan project cakupan, Anda harus memberikan otorisasi ke akun layanan komputasi default project lokal atau Workload Identity Federation untuk akun layanan GKE agar memiliki akses monitoring.viewer ke project cakupan. Kemudian, teruskan ID project cakupan sebagai nilai variabel lingkungan PROJECT_ID.

Jika menggunakan akun layanan default Compute Engine, Anda dapat melakukan salah satu hal berikut:

Untuk memberikan izin yang diperlukan kepada akun layanan agar dapat mengakses project Google Cloud yang berbeda, lakukan hal berikut:

  1. Beri izin akun layanan untuk membaca dari project target yang ingin Anda jadikan kueri:

    gcloud projects add-iam-policy-binding SCOPING_PROJECT_ID \
      --member=serviceAccount:gmp-test-sa@PROJECT_ID. \
      --role=roles/monitoring.viewer
    
  2. Saat mengonfigurasi sinkronisasi sumber data, teruskan ID project cakupan sebagai nilai variabel lingkungan PROJECT_ID.

Memeriksa CronJob Kubernetes

Jika men-deploy sinkronisasi sumber data di Kubernetes, Anda dapat memeriksa CronJob dan memastikan bahwa semua variabel ditetapkan dengan benar dengan menjalankan perintah berikut:

kubectl describe cronjob datasource-syncer

Untuk melihat log Tugas yang awalnya mengonfigurasi Grafana, jalankan perintah berikut segera setelah menerapkan file datasource-syncer.yaml:

kubectl logs job.batch/datasource-syncer-init

Teardown

Untuk menonaktifkan Cronjob sinkronisasi sumber data di Kubernetes, jalankan perintah berikut:

kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-engine/main/cmd/datasource-syncer/datasource-syncer.yaml

Menonaktifkan sinkronisasi sumber data akan menghentikan pembaruan Grafana tertaut dengan kredensial autentikasi baru, dan sebagai akibatnya, kueri Managed Service for Prometheus tidak lagi berfungsi.

Kompatibilitas API

Endpoint Prometheus HTTP API berikut didukung oleh Managed Service for Prometheus di URL yang diawali dengan https://monitoring.googleapis.com/v1/projects/PROJECT_ID/location/global/prometheus/api/v1/.

Untuk dokumentasi lengkap, lihat dokumentasi referensi Cloud Monitoring API. Endpoint HTTP Prometheus tidak tersedia di library klien khusus bahasa Cloud Monitoring.

Untuk informasi tentang kompatibilitas PromQL, lihat Dukungan PromQL.

  • Endpoint berikut didukung sepenuhnya:

    • /api/v1/query
    • /api/v1/query_range
    • /api/v1/metadata
    • /api/v1/labels
    • /api/v1/query_exemplars
  • Endpoint /api/v1/label/<label_name>/values hanya berfungsi jika label __name__ disediakan dengan menggunakannya sebagai nilai <label_name> atau dengan mencocokkan secara tepat menggunakan pemilih seri. Misalnya, panggilan berikut didukung sepenuhnya:

    • /api/v1/label/__name__/values
    • /api/v1/label/__name__/values?match[]={__name__=~".*metricname.*"}
    • /api/v1/label/labelname/values?match[]={__name__="metricname"}

    Batasan ini menyebabkan kueri variabel label_values($label) di Grafana gagal. Sebagai gantinya, Anda dapat menggunakan label_values($metric, $label). Jenis kueri ini direkomendasikan karena menghindari pengambilan nilai untuk label pada metrik yang tidak relevan dengan dasbor tertentu.

  • Endpoint /api/v1/series didukung untuk permintaan GET, tetapi tidak untuk permintaan POST. Saat Anda menggunakan penyinkron sumber data atau proxy frontend, batasan ini akan dikelola untuk Anda. Anda juga dapat mengonfigurasi sumber data Prometheus di Grafana untuk hanya mengeluarkan permintaan GET. Parameter match[] tidak mendukung pencocokan ekspresi reguler pada label __name__.

Langkah selanjutnya