Menyiapkan kemampuan observasi Microservice

Dokumen ini berisi informasi yang Anda perlukan untuk menyiapkan plugin kemampuan observasi Microservice, menginstrumentasikan aplikasi gRPC, dan memperoleh informasi dari Cloud Monitoring, Cloud Logging, dan Cloud Trace.

Sebelum memulai

Kemampuan observasi Microservice berfungsi dengan semua deployment yang telah diberi izin untuk mengakses Cloud Monitoring, Cloud Logging, dan Cloud Trace dengan mengaktifkan Microservices API. Panduan ini memberikan contoh konfigurasi kemampuan observasi Microservice menggunakan contoh Compute Engine.

Pada intinya, Anda perlu melakukan tindakan berikut:

  1. Sebagai developer layanan, Anda mengikutsertakan dan mengontrol plugin kemampuan observasi Microservice.
  2. Sebagai operator layanan, Anda menggunakan data yang dikumpulkan dengan berbagai cara.

Repositori gRPC (C++, Go, dan Java) menyertakan contoh untuk menunjukkan kemampuan observasi Microservice.

Sebelum mengonfigurasi kemampuan observasi, selesaikan tugas-tugas berikut:

  1. Baca Ringkasan kemampuan observasi Microservice.
  2. Pastikan Anda sudah memiliki project atau buat project baru.
  3. Pastikan Anda sudah memiliki akun layanan atau membuat akun baru.
  4. Baca tentang dua variabel lingkungan yang didukung, tentukan mana yang akan digunakan, dan tentukan nilai yang diperlukan oleh variabel lingkungan.
  5. Aktifkan Microservices API.

Memilih variabel lingkungan konfigurasi

Saat mengaktifkan plugin kemampuan observasi Microservices, yang dijelaskan dalam Menginstrumentasikan aplikasi untuk plugin kemampuan observasi, Anda harus memberikan informasi konfigurasi menggunakan variabel lingkungan. Secara default, tidak ada fitur kemampuan observasi yang diaktifkan. Anda menetapkan variabel lingkungan di VM atau container tempat aplikasi atau workload gRPC dijalankan.

Berikut adalah variabel lingkungannya:

  • GRPC_GCP_OBSERVABILITY_CONFIG_FILE: nilai adalah jalur yang mengarah ke file konfigurasi berenkode JSON.
  • GRPC_GCP_OBSERVABILITY_CONFIG: nilainya adalah isi konfigurasi yang dienkode di JSON.

Jika kedua variabel lingkungan ditetapkan, GRPC_GCP_OBSERVABILITY_CONFIG_FILE lebih diprioritaskan daripada GRPC_GCP_OBSERVABILITY_CONFIG.

Untuk menerapkan konfigurasi, Anda harus memulai ulang aplikasi gRPC. Anda tidak dapat menetapkan atau melihat nilai variabel lingkungan di Konsol Google Cloud.

Dalam konfigurasi, Anda dapat menetapkan project tujuan tempat data logging, pelacakan, dan metrik diupload. Anda menetapkan project ID di kolom project_id.

  • Jika kolom ini dibiarkan kosong, plugin kemampuan observasi akan otomatis mengisi nilai project ID berdasarkan kredensial default aplikasi.

  • Jika kredensial default aplikasi tidak dapat diidentifikasi dan kolom project_id kosong, metode INIT/START akan memunculkan atau menampilkan error ke aplikasi Anda. Aplikasi harus menangani error tersebut.

Gunakan informasi dalam Data konfigurasi untuk menetapkan nilai dalam variabel lingkungan yang Anda pilih.

Mengaktifkan Microservices API

Anda dapat menggunakan Google Cloud CLI atau Konsol Google Cloud untuk mengaktifkan Microservices API dalam project Anda. Mengaktifkan Microservice API secara otomatis akan mengaktifkan Cloud Logging API, Cloud Monitoring API, dan Cloud Trace API.

Untuk mengaktifkan API:

gcloud services enable microservices.googleapis.com

Menetapkan izin akun layanan

Jika Anda menggunakan akun layanan non-default, berikan izin yang diperlukan untuk akun layanan tersebut. Tetapkan nilai berikut:

  • PROJECT_ID: Ganti project ID Anda.
  • SERVICE_ACCOUNT_NAME: Ganti nama akun layanan project Anda.
gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
  --role=roles/logging.logWriter
gcloud projects add-iam-policy-binding PROJECT_ID> \
  --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
  --role=roles/monitoring.metricWriter
gcloud projects add-iam-policy-binding PROJECT_ID \
  --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
  --role=roles/cloudtrace.agent

Melengkapi aplikasi untuk plugin kemampuan observasi

Untuk melengkapi aplikasi agar dapat menggunakan plugin observasi Microservice, gunakan petunjuk berikut untuk C++, Java, dan Go.

C++

Anda dapat menggunakan C++ dengan kemampuan observasi Microservices pada gRPC C++ v1.54. Repositori contoh berada di GitHub.

Perubahan build

Dukungan kemampuan observasi hanya tersedia melalui sistem build Bazel. Tambahkan grpcpp_gcp_observability target sebagai dependensi.

Perubahan kode yang diperlukan

Mengaktifkan kemampuan observasi Microservice memerlukan dependensi tambahan (modul kemampuan observasi) dan perubahan kode berikut pada klien, server gRPC, 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. Objek GcpObservability yang menyertainya mengontrol masa aktif kemampuan observasi, dan otomatis menutup serta menghapus data kemampuan observasi saat data tersebut keluar dari 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.

Perubahan kode Java yang diperlukan

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 fungsi logging, metrik, dan trace 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 kode berikut:

<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>

Aktifkan pengumpulan data metrik, pelacakan, dan logging

Bagian berikut berisi petunjuk untuk mengaktifkan pengumpulan data dalam konfigurasi 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

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 mengaktifkan perekaman aktivitas, lakukan langkah berikut:

  1. Tambahkan objek cloud_trace ke konfigurasi.
  2. Tetapkan cloud_trace.sampling_rate ke probabilitas yang Anda inginkan untuk diamati oleh aplikasi untuk memulai pelacakan baru.
    • Misalnya, 1.0 berarti melacak setiap RPC.
    • 0.0 berarti jangan memulai pelacakan baru.
    • 0.5 berarti bahwa 50% RPC dilacak secara acak.

Jika keputusan pengambilan sampel positif dibuat di upstream, upload layanan Anda akan mencakup durasi, terlepas dari setelan frekuensi sampling.

Untuk mengetahui informasi selengkapnya tentang pelacakan, lihat Definisi rekaman aktivitas.

Aktifkan logging

Untuk mengaktifkan logging, lakukan hal berikut:

  1. Tambahkan objek cloud_logging ke konfigurasi.
  2. Tambahkan pola ke salah satu atau kedua client_rpc_events dan server_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.

Contoh variabel lingkungan

Contoh berikut menetapkan variabel kemampuan observasi dalam variabel lingkungan GRPC_GCP_OBSERVABILITY_CONFIG:

export GRPC_GCP_OBSERVABILITY_CONFIG='{
     "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": 1.00
     },
     "labels": {
         "SOURCE_VERSION": "J2e1Cf",
         "SERVICE_NAME": "payment-service-1Cf",
         "DATA_CENTER": "us-west1-a"
     }
}'

Membuat contoh kemampuan observasi

Gunakan petunjuk ini untuk membuat dan terhubung ke instance VM Compute Engine, lalu menyiapkan contoh kemampuan observasi.

  1. 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
    
  2. Hubungkan ke instance VM:

    gcloud compute ssh --project=PROJECT_ID grpc-observability-vm
    

Lanjutkan dengan petunjuk untuk Java, C++, atau Go, bergantung pada bahasa aplikasi gRPC Anda.

Java

  1. 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
    
  2. 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
    
  3. Buka direktori contoh.

    cd grpc-java/examples/example-gcp-observability
    
  4. Di direktori contoh, buka file README dan ikuti petunjuk dalam file tersebut.

  5. Jika petunjuknya memberi tahu Anda untuk membuka jendela terminal lain, berikan perintah ini:

    gcloud compute ssh --project=PROJECT_ID grpc-observability-vm
    

C++

  1. Setelah Anda terhubung ke instance VM, jalankan biner server hello-world di jendela terminal.

    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
    cd grpc
    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    export GRPC_GCP_OBSERVABILITY_CONFIG_FILE="$(pwd)/examples/cpp/gcp_observability/helloworld/server_config.json"
    tools/bazel run examples/cpp/gcp_observability/helloworld:greeter_server
    
  2. Dari jendela terminal lain, hubungkan kembali ke VM menggunakan SSH, lalu jalankan perintah berikut, yang menjalankan biner klien hello-world.

    cd grpc
    export GOOGLE_CLOUD_PROJECT=PROJECT_ID
    export GRPC_GCP_OBSERVABILITY_CONFIG_FILE="$(pwd)/examples/cpp/gcp_observability/helloworld/client_config.json"
    tools/bazel run examples/cpp/gcp_observability/helloworld:greeter_client
    

Go

  1. 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
    
  2. Clone contoh gRPC-Go.

    git clone https://github.com/grpc/grpc-go.git
    cd grpc-go/
    git checkout -b run-observability-example
    875c97a94dca8093bf01ff2fef490fbdd576373d
    
  3. Buka clone direktori gRPC-Go:

    cd examples/features/observability
    
  4. Jalankan server.

    export GRPC_GCP_OBSERVABILITY_CONFIG_FILE=./server/serverConfig.json
    go run ./server/main.go
    
  5. Di jendela terminal terpisah, jalankan perintah berikut.

    export PATH=$PATH:/usr/local/go/bin
    cd grpc-go/examples/features/observability
    export GRPC_GCP_OBSERVABILITY_CONFIG_FILE=./client/clientConfig.json
    go run ./client/main.go
    

Melihat trace, metrik, dan entri log

Gunakan petunjuk di bagian ini untuk melihat trace, metrik, dan entri log.

Melihat trace di Cloud Trace

Setelah menyiapkan contoh atau melengkapi workload, Anda akan melihat trace yang dihasilkan oleh klien gRPC dan server gRPC di Konsol Google Cloud tercantum sebagai trace terbaru.

Daftar trace kemampuan observasi microservice.
Daftar jejak kemampuan observasi layanan mikro (klik untuk memperbesar)

Melihat log untuk rekaman aktivitas

Jika mengaktifkan logging dan perekaman aktivitas, Anda dapat melihat entri log untuk trace di samping grafik waterfall Cloud Trace atau di Logs Explorer.

Melihat metrik di dasbor

Kemampuan observasi microservice menyediakan dasbor pemantauan yang disebut Pemantauan Microservice (gRPC) untuk metrik yang ditentukan dalam Definisi metrik. Dasbor hanya ditampilkan di Konsol Google Cloud jika Microservices API diaktifkan. Konsol Google Cloud memanggil Service Usage API untuk memverifikasi apakah Microservices API diaktifkan dalam suatu project atau tidak. Pengguna harus memiliki izin serviceusage.services.list untuk melihat dasbor.

Dasbor Microservices (gRPC) Monitoring adalah dasbor Google Cloud dan Anda tidak dapat mengubahnya secara langsung. Untuk menyesuaikan dasbor, Anda harus menyalin dasbor ke dasbor kustom. Kemudian, Anda dapat memperbarui dasbor kustom, misalnya dengan menambahkan, menghapus, atau mengatur ulang diagram.

Melihat metrik di Metrics Explorer

Setelah menyiapkan contoh gRPC atau melengkapi workload, Anda akan melihat metrik yang dihasilkan oleh klien gRPC dan server gRPC di Konsol Google Cloud.

Untuk melihat dan membuat diagram metrik, gunakan petunjuk dalam Memilih metrik saat menggunakan Metrics Explorer

Memeriksa entri log di Logs Explorer

Kueri yang disarankan adalah fitur Cloud Logging yang memungkinkan Google Cloud menyarankan serangkaian kueri berdasarkan log yang diserap. Anda dapat mengklik dan menggunakan filter yang telah disiapkan.

Kueri yang disarankan di Logs Explorer.
Kueri yang disarankan di Logs Explorer. (klik untuk memperbesar)

Setelah entri log yang cocok dengan kueri yang disarankan muncul di Cloud Logging, Anda akan melihat kueri baru yang disarankan dalam waktu sekitar 6 menit. Biasanya, Anda akan lebih cepat melihat kueri baru yang disarankan. Jika ada entri log yang cocok dengan saran dalam 15 menit sebelumnya, kueri apa pun yang disarankan akan terus ditampilkan. Log akan terus muncul sebagai saran hingga tidak ada entri log yang cocok dalam 15 menit sebelumnya.

Anda dapat membuat kueri yang disesuaikan. Lihat Panduan bahasa kueri logging untuk mendapatkan petunjuk. Misalnya, pada panel Kueri pada Logs Explorer, Anda dapat mencoba menampilkan semua log debug gRPC dengan kode berikut:

log_id("microservices.googleapis.com/observability/grpc")

Anda dapat menggunakan semua kolom dalam data log gRPC untuk pemfilteran. Berikut adalah contoh entri log:

{
  "insertId": "17kh8vafzuruci",
  "jsonPayload": {
    "authority": "10.84.1.15:50051",
    "sequenceId": "6",
    "serviceName": "helloworld.Greeter",
    "peer": {
      "ipPort": 50051,
      "address": "10.84.1.10",
      "type": "IPV4"
    },
    "callId": "d9577780-c608-4bff-9e12-4d9cdea6b298",
    "type": "SERVER_TRAILER",
    "methodName": "SayHello",
    "payload": {},
    "logger": "CLIENT"
  },
  "resource": {
    "type": "k8s_container",
    "labels": {
      "pod_name": "grpc-client-deployment-155-6967959544-x8ndr",
      "container_name": "grpc-client-container-155",
      "cluster_name": "o11y-cluster",
      "namespace_name": "grpc-client-namespace-155",
      "location": "us-west1-b",
      "project_id": "grpc-greeter"
    }
  },
  "timestamp": "2023-04-05T23:33:41.718523Z",
  "severity": "DEBUG",
  "labels": {
    "environment": "example-client"
  },
  "logName": "projects/grpc-greeter/logs/microservices.googleapis.com%2Fobservability%2Fgrpc",
  "receiveTimestamp": "2023-04-05T23:33:42.712682457Z"
}

Kueri yang disarankan

Kemampuan observasi Microservice memberikan kueri yang disarankan berikut ke Cloud Logging:

Data log header atau cuplikan untuk gRPC

Kueri ini memberikan tampilan dasar tentang RPC, yang memberikan informasi pembanding dan hasil RPC.

log_id("microservices.googleapis.com/observability/grpc") AND
jsonPayload.type=("CLIENT_HEADER" OR "SERVER_TRAILER")

Panggilan gRPC yang gagal

Kueri ini menemukan RPC yang diakhiri dengan status non-OK.

log_id("microservices.googleapis.com/observability/grpc") AND
jsonPayload.type="SERVER_TRAILER" AND
jsonPayload.payload.statusCode!="OK"

Mencatat data log untuk gRPC yang dibatalkan atau melebihi batas waktu

Pembatalan gRPC yang berlebihan atau batas waktu yang terlampaui dapat memberikan informasi yang berguna tentang kehilangan performa atau perilaku aplikasi yang tidak terduga.

log_id("microservices.googleapis.com/observability/grpc") AND
((jsonPayload.type="SERVER_TRAILER" AND jsonPayload.payload.statusCode=("CANCELLED" OR "DEADLINE_EXCEEDED")) OR (jsonPayload.type="CANCEL"))

Menggunakan log dan pelacakan untuk pemecahan masalah

Jika melihat peristiwa RPC yang menunjukkan perilaku buruk, Anda dapat menemukan callid dalam peristiwa tersebut. Gunakan kueri berikut untuk menampilkan semua peristiwa yang terjadi dalam satu RPC, terlepas dari apakah itu RPC unary atau streaming. Entri log sebelumnya digunakan sebagai contoh:

log_id("microservices.googleapis.com/observability/grpc")
jsonPayload.callid="a358c7b80-3548-4bc8-a33f-b93ba1514904"

Untuk menentukan cakupan masalah, Anda dapat menemukan semua peristiwa RPC untuk metode atau lokasi yang sama. Kueri berikut menampilkan semua log debug yang terkait dengan metode RPC tertentu, menggunakan layanan Greeter sebagai contoh:

log_id("microservices.googleapis.com/observability/grpc")
jsonPayload.serviceName="helloworld.Greeter"
jsonPayload.methodName="SayHello"

Guna memeriksa RPC yang gagal dari kode status tertentu, Anda dapat menambahkan kode status sebagai salah satu kondisi pemfilteran. Kueri berikut menunjukkan peristiwa cuplikan yang diakhiri dengan status non-OK:

log_id("microservices.googleapis.com/observability/grpc")
jsonPayload.payload.statusCode!="OK"
Hasil kueri: batas waktu terlampaui kode status.
Hasil kueri: batas waktu terlampaui kode status (klik untuk memperbesar)

Opsi kemampuan observasi

Kemampuan observasi microservice mencakup fitur opsional berikut.

Menentukan label khusus

Anda dapat menentukan label khusus, yang menambahkan informasi yang disediakan pengguna ke data kemampuan observasi. Label khusus terdiri dari pasangan nilai kunci. Setiap key-value pair dilampirkan untuk melacak data sebagai label span, ke data metrik sebagai tag metrik, dan ke data logging sebagai label entri log.

Label khusus ditentukan dalam konfigurasi dengan daftar key-value pair di kolom labels. Semua kunci dan nilai label khusus adalah jenis STRING. Implementasi ini akan membaca konfigurasi dan membuat label terpisah untuk setiap key-value pair, lalu melampirkan label ke data kemampuan observasi.

Misalnya, berikut ini adalah definisi label:

"labels": {
    "DATACENTER": "SAN_JOSE_DC",
    "APP_ID": "24512"
  }

Setiap entri log memiliki label tambahan berikut:

{
   "DATACENTER" : "SAN_JOSE_DC"
   "APP_ID" : "24512"
}
Membuat kueri label dalam entri log.
Membuat kueri label di entri log (klik untuk memperbesar)
Diagram garis yang menunjukkan label resource dan kustom.
Diagram garis yang menampilkan label kustom dan resource (klik untuk memperbesar)

Aktifkan logging payload

Anda mengaktifkan logging payload menggunakan variabel lingkungan yang Anda berikan ke beban kerja. Guna mengaktifkan logging payload untuk pesan dan header HelloWorld, perbarui nilai file konfigurasi gcp_observability_server_config.json, gcp_observability_client_config.json, atau keduanya dalam contoh gRPC sebagai berikut:

{
   "cloud_monitoring":{
   },
   "cloud_trace":{
      "sampling_rate":1.0
   },
   "cloud_logging":{
      "client_rpc_events":[
         {
            "methods":[
               "helloworld.Greeter/*"
            ],
            "max_metadata_bytes":4096,
            "max_message_bytes":4096
         }
      ],
      "server_rpc_events":[
         {
            "methods":[
               "helloworld.Greeter/*"
            ],
            "max_metadata_bytes":4096,
            "max_message_bytes":4096
         }
      ]
   }
}

Menyiapkan kemampuan observasi lintas project

Anda dapat menetapkan project tujuan secara eksplisit menggunakan konfigurasi yang ditetapkan dalam variabel lingkungan GRPC_GCP_OBSERVABILITY_CONFIG. Untuk kemampuan observasi lintas project, Anda juga harus menetapkan izin akun layanan yang sesuai. Dengan asumsi project ID tujuan adalah core-platform-stats, Anda dapat menyiapkan kemampuan observasi lintas-project menggunakan contoh konfigurasi berikut:

{
   "project_id":"core-platform-stats",
   "cloud_monitoring":{
   },
   "cloud_trace":{
      "sampling_rate":1.0
   },
   "cloud_logging":{
      "client_rpc_events":[
         {
            "methods":[
               "helloworld.Greeter/*"
            ]
         }
      ],
      "server_rpc_events":[
         {
            "methods":[
               "helloworld.Greeter/*"
            ]
         }
      ]
   }
}

Memperkirakan volume log

Bagian ini memberi informasi yang dapat Anda gunakan untuk memperkirakan volume penyerapan log secara opsional. Anda dapat membuat perkiraan sebelum berlangganan peristiwa RPC layanan Anda.

Item Detail
Peristiwa yang dibuat untuk panggilan unary yang Oke 6 peristiwa

RPC panggilan unary yang OK menghasilkan 6 peristiwa berikut untuk klien atau server:

  • CLIENT_HEADER
  • SERVER_HEADER
  • CLIENT_MESSAGE
  • SERVER_MESSAGE
  • CLIENT_HALF_CLOSE
  • SERVER_TRAILER
Ukuran rata-rata entri log 500 byte secara default

Entri log dipetakan ke satu peristiwa RPC, peristiwa RPC menyertakan informasi proses debug mendetail untuk peristiwa tersebut, label resource, dan label khusus.
Ukuran logging payload 0 secara default, dapat dikonfigurasi

Ukuran payload maksimum dapat dikonfigurasi di konfigurasi kemampuan observasi. Secara default, tidak ada payload yang dicatat.
Ukuran label khusus 0 secara default dapat dikonfigurasi

Label khusus diberikan ke aplikasi menggunakan variabel lingkungan. Jika tidak ada yang ditentukan, tidak akan ada label khusus

Formula estimasi ukuran total penyerapan log per bulan:

Monthly Log Ingestion = QPS * 6 * (500B + Payload Logging Size + Custom Labels Size) * 2592000

Misalnya, jika QPS metode panggilan unary adalah 1 dan tidak ada fitur tambahan yang diaktifkan, perkiraan ukuran penyerapan log adalah sekitar 7,24 GiB.

Langkah selanjutnya