Tutorial ini menunjukkan cara menulis, men-deploy, dan memanggil layanan Cloud Run yang melaporkan metrik OTLP kustom ke Google Cloud Managed Service For Prometheus menggunakan bantuan OpenTelemetry.
Jika Anda memiliki layanan Cloud Run yang melaporkan metrik Prometheus, gunakan bantuan 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 menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Run, Cloud Monitoring, Artifact Registry, and Cloud Build .
- 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
) -
Admin Cloud Run (
roles/run.admin
) -
Membuat Akun Layanan (
roles/iam.serviceAccountCreator
) -
Admin Project IAM (
roles/resourcemanager.projectIamAdmin
) -
Monitoring Metric Writer (
roles/monitoring.metricWriter
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
) [Konsumen Penggunaan Layanan] -
Admin Penyimpanan (
roles/storage.admin
)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Perhatikan juga bahwa akun layanan Cloud Run memerlukan peran Penulis Metrik
Monitoring (roles/monitoring.metricWriter
). Akun layanan default
Compute Engine
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)europe-north1
(Finlandia) CO2 Rendaheurope-southwest1
(Madrid)europe-west1
(Belgia) CO2 Rendaheurope-west4
(Belanda)europe-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)us-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-south1
(Mumbai, India)asia-south2
(Delhi, India)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Warsawa, Polandia)europe-west10
(Berlin)europe-west12
(Turin)europe-west2
(London, Inggris Raya) CO2 Rendaheurope-west3
(Frankfurt, Jerman) CO2 Rendaheurope-west6
(Zurich, Swiss) CO2 Rendahme-central1
(Doha)me-central2
(Damam)northamerica-northeast1
(Montreal) CO2 Rendahnorthamerica-northeast2
(Toronto) CO2 Rendahsouthamerica-east1
(Sao 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 sampel 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
sample_sidecar_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: membangun image container dengan Cloud Build, mengupload image container ke Artifact Registry, dan men-deploy image container ke Cloud Run.
Untuk kode pengiriman Anda:
-
Bangun container layanan contoh 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.
-
Bangun container Collector 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 akan 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 ini 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:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus 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 selanjutnya
Contoh lainnya, termasuk contoh untuk trace dan log, tersedia di GitHub.