Alat kemampuan observasi Microservice memberi Anda kemampuan untuk menginstrumentasikan aplikasi Anda untuk mengumpulkan dan menyajikan data telemetri di Cloud Monitoring, Cloud Logging, dan Cloud Trace dari workload gRPC yang di-deploy di Google Cloud dan di tempat lain. Kemampuan observasi Microservice berfungsi dengan semua deployment yang telah diberi izin untuk mengakses Monitoring, Logging, dan Trace dengan mengaktifkan Microservices API.
Dalam tutorial ini, Anda akan mempelajari cara menggunakan fitur kemampuan observasi Microservices dengan membangun aplikasi gRPC sederhana di Google Cloud menggunakan Compute Engine dan menginstrumentasikan aplikasi Anda dengan kemampuan observasi Microservice, serta melihatnya yang ditampilkan langsung di Monitoring dan Logging.
Tujuan
Pada level tinggi, Anda melakukan hal berikut.
Sebagai developer layanan, Anda dapat:
- Membuat aplikasi gRPC dengan bahasa pilihan Anda (C++, Go, atau Java).
- Ikut serta dalam aplikasi Anda dan kontrol plugin kemampuan observasi Microservice.
- Men-deploy aplikasi di VM Compute Engine.
Sebagai operator layanan, Anda menggunakan data yang dikumpulkan dengan berbagai cara:
- Melihat rekaman aktivitas di Trace.
- Lihat metrik di dasbor pemantauan yang disebut Monitoring Microservices (gRPC).
- Lihat metrik di Metrics Explorer.
- Periksa entri log di Logs Explorer.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, lihat Pembersihan.
Sebelum memulai
Konsol
- 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.
-
Aktifkan API Compute Engine, and Microservices API.
-
Buat akun layanan:
-
Di konsol Google Cloud, buka halaman Buat akun layanan.
Buka Create service account - Pilih project Anda.
-
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh,
Service account for quickstart
. - Klik Buat dan lanjutkan.
-
Berikan peran berikut ke akun layanan: Logging > Logs Viewer > Logs Writer, Monitoring > Monitoring Editor > Metrics Writer, Trace > Trace Admin > Trace Agent.
Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih peran.
Untuk memberikan peran tambahan, klik
Tambahkan peran lain, lalu tambahkan setiap peran tambahan. - Klik Lanjutkan.
- Di kotak Peran pengguna akun layanan, masukkan alamat email untuk Akun Google Anda.
-
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
-
-
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 Compute Engine, and Microservices API.
-
Buat akun layanan:
-
Di konsol Google Cloud, buka halaman Buat akun layanan.
Buka Create service account - Pilih project Anda.
-
Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.
Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh,
Service account for quickstart
. - Klik Buat dan lanjutkan.
-
Berikan peran berikut ke akun layanan: Logging > Logs Viewer > Logs Writer, Monitoring > Monitoring Editor > Metrics Writer, Trace > Trace Admin > Trace Agent.
Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih peran.
Untuk memberikan peran tambahan, klik
Tambahkan peran lain, lalu tambahkan setiap peran tambahan. - Klik Lanjutkan.
- Di kotak Peran pengguna akun layanan, masukkan alamat email untuk Akun Google Anda.
-
Klik Selesai untuk menyelesaikan pembuatan akun layanan.
-
- Baca Ringkasan kemampuan observasi Microservice.
- Baca tentang dua variabel lingkungan yang didukung, tentukan mana yang akan digunakan, dan tentukan nilai yang diperlukan oleh variabel lingkungan.
cli
- 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.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Compute Engine, and Microservices API:
gcloud services enable compute.googleapis.com
microservices.googleapis.com -
Menyiapkan autentikasi:
-
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama untuk akun layanan. -
Memberikan peran ke akun layanan. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/logging.logWriter, roles/monitoring.metricWriter, roles/cloudtrace.agent
:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Ganti kode berikut:
SERVICE_ACCOUNT_NAME
: nama dari akun layanan.PROJECT_ID
: project ID dimana Anda membuat akun layananROLE
: peran yang akan diberikan
-
Memberi Akun Google Anda peran yang memungkinkan Anda menggunakan peran akun layanan dan tambahkan akun layanan tersebut ke resource lain:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Ganti kode berikut:
SERVICE_ACCOUNT_NAME
: nama dari akun layanan.PROJECT_ID
: project ID dimana Anda membuat akun layananUSER_EMAIL
: alamat email untuk Akun Google Anda
-
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Buat atau pilih project Google Cloud.
-
Membuat project Google Cloud:
gcloud projects create PROJECT_ID
Ganti
PROJECT_ID
dengan nama untuk project Google Cloud yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_ID
dengan nama project Google Cloud Anda.
-
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Compute Engine, and Microservices API:
gcloud services enable compute.googleapis.com
microservices.googleapis.com -
Menyiapkan autentikasi:
-
Buat akun layanan:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti
SERVICE_ACCOUNT_NAME
dengan nama untuk akun layanan. -
Memberikan peran ke akun layanan. Jalankan perintah berikut satu kali untuk setiap peran IAM berikut:
roles/logging.logWriter, roles/monitoring.metricWriter, roles/cloudtrace.agent
:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Ganti kode berikut:
SERVICE_ACCOUNT_NAME
: nama dari akun layanan.PROJECT_ID
: project ID dimana Anda membuat akun layananROLE
: peran yang akan diberikan
-
Memberi Akun Google Anda peran yang memungkinkan Anda menggunakan peran akun layanan dan tambahkan akun layanan tersebut ke resource lain:
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Ganti kode berikut:
SERVICE_ACCOUNT_NAME
: nama dari akun layanan.PROJECT_ID
: project ID dimana Anda membuat akun layananUSER_EMAIL
: alamat email untuk Akun Google Anda
-
- Baca Ringkasan kemampuan observasi Microservice.
- Baca tentang dua variabel lingkungan yang didukung, tentukan mana yang akan digunakan, dan tentukan nilai yang diperlukan oleh variabel lingkungan.
Membuat dan terhubung ke VM Compute Engine
Gunakan petunjuk ini untuk membuat dan terhubung ke instance VM Compute Engine. Di VM, Anda men-deploy aplikasi, lalu menginstrumentasikan aplikasi dengan kemampuan observasi Microservice.
Buat instance VM:
gcloud compute instances create grpc-observability-vm \ --image-family=debian-11 \ --image-project=debian-cloud \ --service-account=SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com
Hubungkan ke instance VM:
gcloud compute ssh --project=$PROJECT_ID grpc-observability-vm
Men-deploy aplikasi Anda ke VM Compute Engine
Anda dapat men-deploy aplikasi pilihan Anda ke VM Compute Engine yang Anda buat di langkah sebelumnya, lalu melewati langkah ini, atau Anda dapat menggunakan contoh untuk melanjutkan petunjuk dalam bahasa pilihan Anda.
C++
Setelah Anda terhubung ke instance VM, jalankan perintah berikut.
sudo apt-get update -y sudo apt-get install -y git build-essential clang git clone -b v1.54.0 https://github.com/grpc/grpc.git --depth=1
Go
Pastikan Anda telah menginstal Go.
sudo apt-get install -y git sudo apt install wget wget https://go.dev/dl/go1.20.2.linux-amd64.tar.gz sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf \ go1.20.2.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin
Clone contoh
gRPC-Go
.git clone https://github.com/grpc/grpc-go.git cd grpc-go/ git checkout -b run-observability-example 875c97a94dca8093bf01ff2fef490fbdd576373d
Java
Setelah terhubung ke instance VM, pastikan Anda telah menginstal Java 8 atau yang lebih baru.
sudo apt update sudo apt upgrade sudo apt install git sudo apt-get install -y openjdk-11-jdk-headless
Clone repositori
grpc-java
.export EXAMPLES_VERSION=v1.54.1 git clone -b $EXAMPLES_VERSION --single-branch --depth=1 \ https://github.com/grpc/grpc-java.git
Membuat file konfigurasi Google Cloud Observability gRPC
Anda memerlukan file konfigurasi kemampuan observasi Google Cloud gRPC terpisah untuk mengaktifkan
kemampuan observasi Microservice untuk server dan klien. Lokasi
file ini diekspor sebagai GRPC_GCP_OBSERVABILITY_CONFIG_FILE
pada langkah
mendatang. Gunakan petunjuk berikut tentang cara menyiapkan berbagai parameter dalam file konfigurasi.
Contoh GRPC_GCP_OBSERVABILITY_CONFIG_FILE
{
"project_id": "your-project-here",
"cloud_logging": {
"client_rpc_events": [
{
"methods": ["google.pubsub.v1.Subscriber/Acknowledge", "google.pubsub.v1.Publisher/CreateTopic"],
"exclude": true,
},
{
"methods": ["google.pubsub.v1.Subscriber/*", "google.pubsub.v1.Publisher/*"],
"max_metadata_bytes": 4096,
"max_message_bytes": 4096,
}],
"server_rpc_events": [{
"methods": ["*"],
"max_metadata_bytes": 4096,
"max_message_bytes": 4096
}],
},
"cloud_monitoring": {},
"cloud_trace": {
"sampling_rate": 0.5,
}
"labels": {
"SOURCE_VERSION": "J2e1Cf",
"SERVICE_NAME": "payment-service-1Cf",
"DATA_CENTER": "us-west1-a"
}
}
Bagian berikut berisi petunjuk untuk mengaktifkan pengumpulan data di
konfigurasi Anda untuk setiap komponen. Jika menggunakan contoh gRPC dalam
tutorial ini, Anda dapat menggunakan konfigurasi ini sebagaimana adanya (setelah mengupdate
your-project-here
) atau menggunakannya sebagai template untuk aplikasi Anda, dan
contoh yang menunjukkan informasi konfigurasi dalam variabel lingkungan.
Aktifkan metrik
Untuk mengaktifkan metrik, tambahkan objek cloud_monitoring
ke konfigurasi dan
tetapkan nilainya ke {}
.
Untuk informasi selengkapnya tentang metrik, lihat Definisi metrik.
Aktifkan perekaman aktivitas
Untuk mengaktifkan perekaman aktivitas, lakukan langkah berikut:
- Tambahkan objek
cloud_trace
ke konfigurasi. - Tetapkan
cloud_trace.sampling_rate
ke0.5
yang akan melacak 50% RPC secara acak.
Jika Anda berencana mengaktifkan pelacakan di seluruh layanan, pastikan layanan tersebut mendukung penerapan konteks rekaman aktivitas yang diterima dari upstream (atau dimulai sendiri) ke downstream.
Untuk mengetahui informasi selengkapnya tentang pelacakan, lihat Definisi rekaman aktivitas.
Aktifkan logging
Untuk mengaktifkan logging, lakukan hal berikut:
- Tambahkan objek
cloud_logging
ke konfigurasi. - Tambahkan pola ke salah satu atau kedua
client_rpc_events
danserver_rpc_events
dengan menentukan kumpulan layanan atau metode yang Anda inginkan untuk menghasilkan logging peristiwa tingkat transpor dan jumlah byte yang akan dicatat ke dalam log untuk header dan pesan.
Untuk mengetahui informasi selengkapnya tentang logging, lihat Definisi data log.
Melengkapi aplikasi untuk plugin kemampuan observasi
Untuk melengkapi aplikasi agar dapat menggunakan plugin kemampuan observasi Microservice, gunakan petunjuk berikut untuk bahasa pilihan Anda.
C++
Anda dapat menggunakan C++ dengan kemampuan observasi Microservices pada gRPC C++ v1.54. Repositori contoh ada di GitHub.
Dukungan kemampuan observasi hanya tersedia melalui sistem build Bazel. Tambahkan
grpcpp_gcp_observability
target sebagai dependensi.Mengaktifkan kemampuan observasi Microservices memerlukan dependensi tambahan (modul kemampuan observasi) dan perubahan kode berikut pada klien, server gRPC yang ada, atau keduanya:
#include <grpcpp/ext/gcp_observability.h> int main(int argc, char** argv) { auto observability = grpc::GcpObservability::Init(); assert(observability.ok()); … // Observability data flushed when object goes out of scope }
Sebelum operasi gRPC apa pun, termasuk membuat saluran, server, atau kredensial, panggil perintah berikut:
grpc::GcpObservability::Init();
Tindakan ini akan menampilkan
absl::StatusOr<GcpObservability>
yang seharusnya disimpan. Status ini membantu menentukan apakah kemampuan observasi berhasil diinisialisasi atau tidak. ObjekGcpObservability
yang menyertainya mengontrol masa aktif kemampuan observasi, serta otomatis menutup dan menghapus data kemampuan observasi saat berada di luar cakupan.
Go
- Plugin kemampuan observasi microservice didukung untuk gRPC Go versi
v1.54.0
dan yang lebih baru. Repositori contoh berada di GitHub.
Dengan modul Go, penggunaan kemampuan observasi Microservice memerlukan modul kemampuan observasi dan kode berikut:
import "google.golang.org/grpc/gcp/observability"
func main() {
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
defer cancel()
if err := observability.Start(ctx); err != nil {
log.Warning("Unable to start gRPC observability:", err)
}
defer observability.End()
…
}
Panggilan observability.Start
akan mengurai konfigurasi dari variabel lingkungan, membuat pengekspor yang sesuai, dan memasukkan logika pengumpulan ke koneksi klien dan server yang dibuat setelah panggilan. Panggilanobservability.End
yang ditangguhkan akan membersihkan resource dan memastikan data yang di-buffer dihapus sebelum
aplikasi ditutup.
Setelah kode aplikasi diupdate, jalankan perintah berikut untuk mengupdate
file go.mod
.
go mod tidy
Java
Untuk menggunakan kemampuan observasi Microservice dengan aplikasi Java, ubah build Anda agar
menyertakan artefak grpc-gcp-observability
. Gunakan gRPC versi 1.54.1 atau yang lebih baru.
Dalam cuplikan build di bagian alat build Gradle dan Maven,
grpcVersion
ditetapkan ke nilai 1.54.1.
Repositori contoh berada di GitHub.
- Agar berhasil melengkapi aplikasi Java untuk kemampuan observasi
Microservice, tambahkan kode berikut ke
main()
.
...
import io.grpc.gcp.observability.GcpObservability;
...
// Main application class
...
public static void main(String[] args) {
...
// call GcpObservability.grpcInit() to initialize & get observability
GcpObservability observability = GcpObservability.grpcInit();
...
// call close() on the observability instance to shutdown observability
observability.close();
...
}
Perhatikan bahwa Anda harus memanggil GcpObservability.grpcInit()
sebelum saluran atau server gRPC dibuat. Fungsi GcpObservability.grpcInit()
membaca
konfigurasi kemampuan observasi Microservice dan menggunakannya untuk menyiapkan intersepsi
dan tracer global yang diperlukan untuk logging, metrik, dan fitur
rekaman aktivitas di setiap saluran dan server yang dibuat. GcpObservability.grpcInit()
aman untuk thread dan harus dipanggil tepat satu kali. Metode ini menampilkan instance
GcpObservability
yang harus Anda simpan untuk memanggil close()
nanti.
GcpObservability.close()
membatalkan alokasi resource. Setiap saluran atau server yang dibuat
setelahnya tidak melakukan pencatatan log.
GcpObservability
mengimplementasikan java.lang.AutoCloseable
, yang ditutup
secara otomatis jika Anda menggunakan try-with-resource
sebagai berikut:
...
import io.grpc.gcp.observability.GcpObservability;
...
// Main application class
...
public static void main(String[] args) {
...
// call GcpObservability.grpcInit() to initialize & get observability
try (GcpObservability observability = GcpObservability.grpcInit()) {
...
} // observability.close() called implicitly
...
}
Menggunakan alat build Gradle
Jika Anda menggunakan alat build Gradle, sertakan baris berikut:
def grpcVersion = '1.54.1'
...
dependencies {
...
implementation "io.grpc:grpc-gcp-observability:${grpcVersion}"
...
}
Menggunakan alat build Maven (pom.xml)
Jika Anda menggunakan alat build Maven, sertakan yang berikut ini:
<properties>
...
<grpc.version>1.54.1</grpc.version>
...
</properties>
...
<dependencies>
...
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-gcp-observability</artifactId>
<version>${grpc.version}</version>
</dependency>
...
</dependencies>
Menjalankan aplikasi
Ikuti petunjuk di bagian ini hanya jika Anda menggunakan contoh gRPC untuk
tutorial. Anda dapat mengubah perintah run
untuk menargetkan biner
aplikasi.
Jalankan Server
C++
- Membuat sesi SSH ke VM.
Mengekspor variabel lingkungan. Gunakan langkah-langkah yang ditentukan di atas untuk membuat
server_config.json
.export GOOGLE_CLOUD_PROJECT=$PROJECT_ID export GRPC_GCP_OBSERVABILITY_CONFIG_FILE="$(pwd)/examples/cpp/gcp_observability/helloworld/server_config.json"
Jalankan aplikasi server
shell cd grpc tools/bazel run examples/cpp/gcp_observability/helloworld:greeter_server
Go
- Membuat sesi SSH ke VM.
Mengekspor variabel lingkungan. Gunakan langkah-langkah yang ditentukan di atas untuk membuat
server_config.json
.export GRPC_GCP_OBSERVABILITY_CONFIG_FILE=./server/serverConfig.json
Jalankan aplikasi server
shell go run ./server/main.go
Java
- Di direktori contoh, buka file README dan ikuti petunjuk dalam file tersebut.
- Jika petunjuknya memberi tahu Anda untuk membuka jendela terminal lain, berikan
perintah ini:
shell gcloud compute ssh --project=$PROJECT_ID grpc-observability-vm
Jalankan Klien
C++
- Membuat sesi SSH lain ke dalam VM.
Mengekspor variabel lingkungan. Gunakan langkah-langkah yang ditentukan di atas untuk membuat file
client_config.json
.export GOOGLE_CLOUD_PROJECT=$PROJECT_ID export GRPC_GCP_OBSERVABILITY_CONFIG_FILE="$(pwd)/examples/cpp/gcp_observability/helloworld/client_config.json"
Menjalankan aplikasi klien
cd grpc tools/bazel run examples/cpp/gcp_observability/helloworld:greeter_client
Go
- Membuat sesi SSH lain ke dalam VM.
- Mengekspor variabel lingkungan. Gunakan langkah-langkah yang ditentukan
di atas untuk membuat file
client_config.json
.shell export GRPC_GCP_OBSERVABILITY_CONFIG_FILE=./client/clientConfig.json
Menjalankan aplikasi klien
cd grpc-go/examples/features/observability go run ./client/main.go
Java
- Di direktori contoh, buka file README dan ikuti petunjuk dalam file tersebut.
- Saat petunjuk memberi tahu Anda untuk membuka jendela terminal lain, berikan
perintah ini:
shell gcloud compute ssh --project=$PROJECT_ID grpc-observability-vm
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Menghapus project Google Cloud:
gcloud projects delete PROJECT_ID
Menghapus resource satu per satu
-
Hapus instance:
gcloud compute instances delete INSTANCE_NAME
Langkah selanjutnya
- Untuk informasi mendetail tentang data konfigurasi, definisi trace, definisi metrik, dan definisi log, lihat Referensi kemampuan observasi Microservice.
- Untuk mengetahui informasi tentang cara melihat log, trace, dan metrik, lihat Melihat trace, metrik, dan entri log