Tutorial ini menunjukkan cara menulis, men-deploy, dan memanggil layanan Cloud Run yang melaporkan metrik OTLP kustom ke Google Cloud Managed Service For Prometheus dengan menggunakan file bantuan OpenTelemetry.
Jika Anda memiliki layanan Cloud Run yang melaporkan metrik Prometheus, gunakan sidecar Prometheus untuk Cloud Run.
Tujuan
- Menulis, membangun, dan men-deploy layanan ke Cloud Run dengan file bantuan OpenTelemetry.
- Buat metrik kustom dan laporkan ke Google Cloud Managed Service For Prometheus.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run, Cloud Monitoring, Artifact Registry, and Cloud Build APIs.
- Instal dan lakukan inisialisasi gcloud CLI.
- Perbarui Google Cloud CLI:
gcloud components update
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
-
Editor Cloud Build (
roles/cloudbuild.builds.editor
) -
Cloud Run Admin (
roles/run.admin
) -
Buat Akun Layanan (
roles/iam.serviceAccountCreator
) -
Admin Project IAM (
roles/resourcemanager.projectIamAdmin
) -
Monitoring Metric Writer (
roles/monitoring.metricWriter
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Pelanggan Service Usage (
roles/serviceusage.serviceUsageConsumer
) -
Storage Admin (
roles/storage.admin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Perhatikan juga bahwa identitas layanan Cloud Run memerlukan peran Monitoring Metric Writer (roles/monitoring.metricWriter
). Akun layanan default Compute Engine mungkin memiliki peran ini secara default, tetapi Anda mungkin perlu menambahkannya jika telah mengubah izinnya atau menggunakan akun layanan yang berbeda.
Menyiapkan default gcloud
Untuk mengonfigurasi gcloud dengan setelan default untuk layanan Cloud Run Anda:
Setel project default Anda:
gcloud config set project PROJECT_ID
Ganti PROJECT_ID dengan nama project yang Anda buat untuk tutorial ini.
Konfigurasi gcloud untuk region yang Anda pilih:
gcloud config set run/region REGION
Ganti REGION dengan region Cloud Run pilihan Anda yang didukung.
Lokasi Cloud Run
Cloud Run bersifat regional, berarti infrastruktur yang
menjalankan layanan Cloud Run Anda terletak di region tertentu dan
dikelola oleh Google agar tersedia secara redundan di
semua zona dalam region tersebut.
Memenuhi persyaratan latensi, ketersediaan, atau ketahanan adalah faktor utama
untuk memilih region tempat layanan Cloud Run dijalankan.
Pada umumnya, Anda dapat memilih region yang paling dekat dengan pengguna Anda, tetapi Anda harus mempertimbangkan
lokasi dari produk Google Cloud
lain yang digunakan oleh layanan Cloud Run Anda.
Menggunakan produk Google Cloud secara bersamaan di beberapa lokasi dapat memengaruhi
latensi serta biaya layanan Anda.
Cloud Run tersedia di region berikut:
Tergantung harga Tingkat 1
asia-east1
(Taiwan)asia-northeast1
(Tokyo)asia-northeast2
(Osaka)asia-south1
(Mumbai, India)europe-north1
(Finlandia) CO2 Rendaheurope-southwest1
(Madrid) CO2 Rendaheurope-west1
(Belgia) CO2 Rendaheurope-west4
(Belanda) CO2 Rendaheurope-west8
(Milan)europe-west9
(Paris) CO2 Rendahme-west1
(Tel Aviv)us-central1
(Iowa) CO2 Rendahus-east1
(South Carolina)us-east4
(North Virginia)us-east5
(Columbus)us-south1
(Dallas) CO2 Rendahus-west1
(Oregon) CO2 Rendah
Tergantung harga Tingkat 2
africa-south1
(Johannesburg)asia-east2
(Hong Kong)asia-northeast3
(Seoul, Korea Selatan)asia-southeast1
(Singapura)asia-southeast2
(Jakarta)asia-south2
(Delhi, India)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Warsawa, Polandia)europe-west10
(Berlin) CO2 Rendaheurope-west12
(Turin)europe-west2
(London, Inggris Raya) CO2 Rendaheurope-west3
(Frankfurt, Jerman) CO2 Rendaheurope-west6
(Zurich, Swiss) CO2 Rendahme-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal) CO2 Rendahnorthamerica-northeast2
(Toronto) CO2 Rendahsouthamerica-east1
(São Paulo, Brasil) CO2 Rendahsouthamerica-west1
(Santiago, Cile) CO2 Rendahus-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Jika sudah membuat layanan Cloud Run, Anda dapat melihat region di dasbor Cloud Run di Konsol Google Cloud.
Membuat repositori gambar Artifact Registry
Membuat repositori Docker Artifact Registry untuk menghosting image layanan sampel:
gcloud artifacts repositories create run-otel \ --repository-format=docker \ --location=REGION \ --project=PROJECT_ID
Ganti kode berikut:
- PROJECT_ID dengan nama project yang Anda buat untuk tutorial ini.
- REGION REGION dengan region Cloud Run yang didukung pilihan Anda.
Mengambil contoh kode
Untuk mengambil contoh kode agar dapat digunakan:
Clone repositori aplikasi contoh ke komputer lokal Anda:
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Ubah ke direktori yang berisi kode contoh Cloud Run:
Go
cd golang-samples/run/custom-metrics/
Meninjau kode
Kode untuk tutorial ini terdiri dari:
- Server yang menangani permintaan masuk dan menghasilkan metrik bernama
sidecar_sample_counter
.
Dockerfile
yang menentukan lingkungan operasi untuk layanan.
Contoh ini juga menyertakan file pada subdirektori collector
untuk membuat
OpenTelemetry Collector khusus:
File konfigurasi untuk OpenTelemetry Collector.
Dockerfile
yang menggabungkan konfigurasi yang disediakan ke dalam image Collector upstream.
Mengirimkan kode
Kode pengiriman terdiri dari tiga langkah: mem-build image container dengan Cloud Build, mengupload image container ke Artifact Registry, dan men-deploy image container ke Cloud Run.
Untuk kode pengiriman Anda:
-
Build container layanan contoh Anda dan publikasikan di Artifact Registry:
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/run-otel/sample-metrics-app
Setelah berhasil, Anda akan melihat pesan SUCCESS yang berisi ID, waktu pembuatan, dan nama image. Image tersebut disimpan di Artifact Registry dan dapat digunakan kembali jika diinginkan.
-
Build container Collector Anda dan publikasikan di Artifact Registry:
gcloud builds submit collector --tag REGION-docker.pkg.dev/PROJECT_ID/run-otel/otel-collector-metrics
Setelah berhasil, Anda akan melihat pesan SUCCESS yang berisi ID, waktu pembuatan, dan nama image. Image tersebut disimpan di Artifact Registry dan dapat digunakan kembali jika diinginkan.
-
Men-deploy aplikasi Anda:
YAML
-
Buat file baru bernama
service.yaml
dengan:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE-NAME annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: annotations: run.googleapis.com/container-dependencies: "{app:[collector]}" spec: containers: - image: REGION-docker.pkg.dev/PROJECT_ID/run-otel/sample-metrics-app name: app ports: - containerPort: CONTAINER_PORT env: - name: "OTEL_EXPORTER_OTLP_ENDPOINT" value: "http://localhost:4317" - image: REGION-docker.pkg.dev/PROJECT_ID/run-otel/otel-collector-metrics name: collector startupProbe: httpGet: path: / port: 13133
-
Ganti kode berikut:
- CONTAINER_PORT dengan port yang diproses oleh container masuk layanan Anda. Secara default, nilainya adalah
8080
. - SERVICE-NAME dengan nama apa pun untuk layanan Anda, seperti
custom-metrics-sample-service
.
- CONTAINER_PORT dengan port yang diproses oleh container masuk layanan Anda. Secara default, nilainya adalah
-
-
Buat layanan baru dengan perintah berikut:
gcloud run services replace service.yaml
Perintah ini menampilkan URL layanan. Gunakan URL ini untuk mencoba aplikasi contoh dalam Melakukan percobaan.
Melakukan Percobaan
Dengan menggunakan URL dari perintah gcloud run
dalam Mengirimkan kode,
hubungkan ke layanan untuk membuat beberapa contoh metrik (Anda dapat menjalankan perintah ini
beberapa kali untuk menghasilkan data yang lebih beragam):
curl -H \ "Authorization: Bearer $(gcloud auth print-identity-token)" \ SERVICE_URL
Ganti SERVICE_URL dengan URL layanan Anda.
Selanjutnya, buka Metrics Explorer
di bagian Cloud Monitoring pada Konsol Google Cloud, lalu pilih metrik
sidecar_sample_counter
.
Anda juga dapat membuat kueri metrik dengan PromQL. Misalnya, kueri di bawah akan memfilter metrik berdasarkan ID instance Cloud Run:
sidecar_sample_counter{instance="INSTANCE_ID"}
Ganti INSTANCE_ID dengan ID instance apa pun untuk layanan Anda (tersedia di log instance atau dari server metadata).
Kueri ini menghasilkan chart seperti di bawah ini:
Pembersihan
Jika Anda membuat project baru untuk tutorial ini, hapus project tersebut. Jika Anda menggunakan project yang ada dan ingin mempertahankannya tanpa ada perubahan yang ditambahkan dalam tutorial ini, hapus resource yang dibuat untuk tutorial.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Menghapus resource tutorial
Hapus layanan Cloud Run yang Anda deploy dalam tutorial ini:
gcloud run services delete SERVICE-NAME
Dengan SERVICE-NAME adalah nama layanan pilihan Anda.
Anda juga dapat menghapus layanan Cloud Run dari Konsol Google Cloud.
Hapus konfigurasi region default gcloud yang Anda tambahkan selama penyiapan tutorial:
gcloud config unset run/region
Hapus konfigurasi project:
gcloud config unset project
Hapus resource Google Cloud lain yang dibuat dalam tutorial ini:
Langkah berikutnya
Contoh lainnya, termasuk contoh untuk trace dan log, tersedia di GitHub.