Gli strumenti di osservabilità dei microservizi ti consentono di: instrumentare le applicazioni per raccogliere e presentare dati di telemetria Cloud Monitoring, Cloud Logging e Cloud Trace dai carichi di lavoro gRPC distribuiti in Google Cloud e altrove. L'osservabilità dei microservizi funziona con qualsiasi deployment ha concesso l'autorizzazione ad accedere a Monitoring, Logging e Trace abilitando l'API Microservices.
In questo tutorial imparerai a utilizzare l'osservabilità dei microservizi di funzionalità creando una semplice applicazione gRPC su Google Cloud utilizzando Compute Engine e instrumenta la tua applicazione con Osservabilità dei microservizi e vengono pubblicati su Monitoring e Logging.
Obiettivi
A livello generale, svolgi i seguenti passaggi.
In qualità di sviluppatore di servizi, puoi:
- Crea un'applicazione gRPC con il linguaggio che preferisci (C++, Go o Java).
- Attiva la tua applicazione e controlla il plug-in di osservabilità dei microservizi.
- Eseguire il deployment dell'applicazione su una VM di Compute Engine.
In qualità di operatore di servizi, utilizzi i dati raccolti in vari modi:
- Visualizza tracce su Trace.
- Visualizza le metriche nella dashboard di monitoraggio denominata Monitoraggio dei microservizi (gRPC).
- Visualizza le metriche in Metrics Explorer.
- Ispeziona le voci di log in Esplora log.
Costi
In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi basata sull'utilizzo previsto,
utilizza il Calcolatore prezzi.
Una volta completate le attività descritte in questo documento, puoi evitare la fatturazione continua eliminando le risorse che hai creato. Per ulteriori informazioni, consulta la pagina Pulizia.
Prima di iniziare
Console
- 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.
-
Enable the Compute Engine, and Microservices API APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the following roles to the service account: Logging > Logs Viewer > Logs Writer, Monitoring > Monitoring Editor > Metrics Writer, Trace > Trace Admin > Trace Agent.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - Click Continue.
-
In the Service account users role field, enter the identifier for the principal that will attach the service account to other resources, such as Compute Engine instances.
This is typically the email address for a Google Account.
-
Click Done to finish creating the service account.
-
-
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 Compute Engine, and Microservices API APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.
In the Service account description field, enter a description. For example,
Service account for quickstart
. - Click Create and continue.
-
Grant the following roles to the service account: Logging > Logs Viewer > Logs Writer, Monitoring > Monitoring Editor > Metrics Writer, Trace > Trace Admin > Trace Agent.
To grant a role, find the Select a role list, then select the role.
To grant additional roles, click
Add another role and add each additional role. - Click Continue.
-
In the Service account users role field, enter the identifier for the principal that will attach the service account to other resources, such as Compute Engine instances.
This is typically the email address for a Google Account.
-
Click Done to finish creating the service account.
-
- Leggi la panoramica sull'osservabilità dei microservizi.
- Leggi le due variabili di ambiente supportate, decidi quale utilizzare e determina i valori richiesti dalla variabile di ambiente.
interfaccia a riga di comando
- 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, and Microservices API APIs:
gcloud services enable compute.googleapis.com
microservices.googleapis.com -
Set up authentication:
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
Grant roles to the service account. Run the following command once for each of the following IAM roles:
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
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service accountROLE
: the role to grant
-
Grant the required role to the principal that will attach the service account to other resources.
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service accountUSER_EMAIL
: the email address for a Google Account
-
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Compute Engine, and Microservices API APIs:
gcloud services enable compute.googleapis.com
microservices.googleapis.com -
Set up authentication:
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
Grant roles to the service account. Run the following command once for each of the following IAM roles:
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
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service accountROLE
: the role to grant
-
Grant the required role to the principal that will attach the service account to other resources.
gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser
Replace the following:
SERVICE_ACCOUNT_NAME
: the name of the service accountPROJECT_ID
: the project ID where you created the service accountUSER_EMAIL
: the email address for a Google Account
-
- Leggi la panoramica sull'osservabilità dei microservizi.
- Leggi le due variabili di ambiente supportate, decidi quale utilizzare e determina i valori richiesti dalla variabile di ambiente.
Crea e connettiti a una VM di Compute Engine
Segui queste istruzioni per creare e connetterti a un'istanza VM di Compute Engine. Nella VM esegui il deployment dell'applicazione e poi la strumenti con l'osservabilità dei microservizi.
Crea un'istanza 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
Connettiti all'istanza VM:
gcloud compute ssh --project=$PROJECT_ID grpc-observability-vm
Esegui il deployment dell'applicazione nella VM Compute Engine
Puoi eseguire il deployment di un'applicazione a tua scelta nella VM Compute Engine creata nel passaggio precedente, quindi saltare questo passaggio oppure utilizzare un esempio per continuare con le istruzioni nella lingua che preferisci.
C++
Dopo aver eseguito la connessione all'istanza VM, esegui il seguente comando.
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
Vai
Assicurati di aver installato 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
Clona gli esempi
gRPC-Go
.git clone https://github.com/grpc/grpc-go.git cd grpc-go/ git checkout -b run-observability-example 875c97a94dca8093bf01ff2fef490fbdd576373d
Java
Dopo aver effettuato la connessione all'istanza VM, assicurati di avere Java 8 o Java installato in un secondo momento.
sudo apt update sudo apt upgrade sudo apt install git sudo apt-get install -y openjdk-11-jdk-headless
Clona il repository
grpc-java
.export EXAMPLES_VERSION=v1.54.1 git clone -b $EXAMPLES_VERSION --single-branch --depth=1 \ https://github.com/grpc/grpc-java.git
Crea file di configurazione di gRPC Google Cloud Observability
Per attivare l'osservabilità dei microservizi sia per il server che per il client, devi avere un file di configurazione gRPC Google Cloud Observability separato. La posizione di questo file viene esportata come GRPC_GCP_OBSERVABILITY_CONFIG_FILE
nei passaggi futuri. Segui le istruzioni riportate di seguito per configurare i diversi parametri nel file di configurazione.
Esempio 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"
}
}
Le sezioni seguenti contengono istruzioni per attivare la raccolta dei dati nella configurazione per i singoli componenti. Se hai utilizzato l'esempio di gRPC in
questa configurazione può essere utilizzata così com'è (dopo l'aggiornamento
your-project-here
) o usalo come modello per la tua applicazione.
esempio che mostra le informazioni di configurazione in una variabile di ambiente.
Attiva le metriche
Per attivare le metriche, aggiungi l'oggetto cloud_monitoring
alla configurazione e impostane il valore su {}
.
Per ulteriori informazioni sulle metriche, consulta Definizioni delle metriche.
Attiva tracciamento
Per attivare il tracciamento:
- Aggiungi l'oggetto
cloud_trace
alla configurazione. - Imposta
cloud_trace.sampling_rate
su0.5
per monitorare in modo casuale il 50% delle RPC.
Se prevedi di attivare il tracciamento tra servizi, assicurati che questi ultimi supportare la propagazione del contesto di traccia ricevuto da upstream (o avviato da solo) a downstream.
Per ulteriori informazioni sul monitoraggio, consulta Definizioni dei traccianti.
Abilita il logging
Per attivare il logging:
- Aggiungi l'oggetto
cloud_logging
alla configurazione. - Aggiungi un pattern a
client_rpc_events
e/oserver_rpc_events
specificando l'insieme di servizi o metodi per i quali vuoi generare il logging degli eventi a livello di trasporto e il numero di byte da registrare per le intestazioni e i messaggi.
Per ulteriori informazioni sul logging, consulta Definizioni dei record dei log.
Fornisci strumenti alle tue applicazioni per il plug-in di osservabilità
Per instrumentare le tue applicazioni in modo che possano utilizzare Plug-in di osservabilità dei microservizi, utilizza le seguenti istruzioni per il tuo lingua preferita.
C++
Puoi usare C++ con l'osservabilità dei microservizi a partire da gRPC C++ v1.54. Il repository di esempio si trova su GitHub.
Il supporto dell'osservabilità è disponibile solo tramite il sistema di compilazione Bazel. Aggiungi
grpcpp_gcp_observability
di destinazione come dipendenza.L'attivazione dell'osservabilità dei microservizi richiede un'ulteriore dipendenza (un modulo di osservabilità) e le seguenti modifiche al codice di client, server o entrambi gRPC esistenti:
#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 }
Prima di qualsiasi operazione gRPC, inclusa la creazione di un canale, un server o delle credenziali, richiama quanto segue:
grpc::GcpObservability::Init();
Verranno restituiti
absl::StatusOr<GcpObservability>
che dovrebbero essere salvati. Lo stato aiuta a determinare se l'osservabilità è stata inizializzata correttamente. L'oggettoGcpObservability
associato controlla la durata dell'oggetto l'osservabilità, chiude e svuota automaticamente i dati di osservabilità fuori ambito.
Vai
- I plug-in di osservabilità dei microservizi sono supportati per le versioni gRPC Go
v1.54.0
e versioni successive. Il repository di esempio si trova su GitHub.
Con il modulo Go, l'attivazione dell'osservabilità dei microservizi richiede un modulo di osservabilità e il seguente codice:
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()
…
}
La chiamata observability.Start
analizza la configurazione dalle variabili di ambiente, crea gli esportatori di conseguenza e inserisce la logica di raccolta nelle connessioni dei client e nei server creati dopo la chiamata. Il observability.End
differito
pulisce le risorse e assicura che i dati presenti nel buffer vengano cancellati prima che
l'applicazione si chiude.
Una volta aggiornato il codice dell'applicazione, esegui questo comando per aggiornare
go.mod
.
go mod tidy
Java
Per utilizzare l'osservabilità dei microservizi con le applicazioni Java, modifica la tua build in
includono l'artefatto grpc-gcp-observability
. Usa gRPC versione 1.54.1 o
in un secondo momento.
Negli snippet build delle sezioni degli strumenti di sviluppo Gradle e Maven,
grpcVersion
è impostato sul valore 1.54.1.
Il repository di esempio si trova su GitHub.
- Per lo strumento corretto delle applicazioni Java per i microservizi
osservabilità, aggiungi il seguente codice a
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();
...
}
Tieni presente che devi chiamare GcpObservability.grpcInit()
prima che vengano creati canali o server gRPC. La funzione GcpObservability.grpcInit()
legge la configurazione dell'osservabilità dei microservizi e la utilizza per configurare gli intercettatori e i tracer globali necessari per le funzionalità di logging, metriche e traccia in ogni canale e server creato. GcpObservability.grpcInit()
è sicura per i thread e deve essere chiamata esattamente una volta. Restituisce un'istanza di
GcpObservability
che devi salvare per chiamare close()
in un secondo momento.
GcpObservability.close()
annulla l'allocazione delle risorse. Qualsiasi canale o server creato
non verrà eseguito alcun logging.
GcpObservability
implementa java.lang.AutoCloseable
, che è stato chiuso
automaticamente se utilizzi try-with-resource
come segue:
...
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
...
}
Utilizzare lo strumento di compilazione Gradle
Se utilizzi lo strumento di creazione Gradle, includi quanto segue:
def grpcVersion = '1.54.1'
...
dependencies {
...
implementation "io.grpc:grpc-gcp-observability:${grpcVersion}"
...
}
Usa lo strumento di creazione Maven (pom.xml)
Se utilizzi lo strumento di compilazione Maven, includi quanto segue:
<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>
Esegui l'applicazione
Segui le istruzioni in questa sezione solo se hai utilizzato l'esempio gRPC per il
tutorial. Puoi modificare il comando run
per scegliere come target la tua applicazione
binario.
Esegui server
C++
- Crea una sessione SSH nella VM.
Esporta le variabili di ambiente. Utilizza i passaggi descritti sopra per creare
server_config.json
.export GOOGLE_CLOUD_PROJECT=$PROJECT_ID export GRPC_GCP_OBSERVABILITY_CONFIG_FILE="$(pwd)/examples/cpp/gcp_observability/helloworld/server_config.json"
Esegui l'applicazione server
shell cd grpc tools/bazel run examples/cpp/gcp_observability/helloworld:greeter_server
Vai
- Crea una sessione SSH nella VM.
Esporta variabili di ambiente. Segui i passaggi definiti sopra per creare
server_config.json
.export GRPC_GCP_OBSERVABILITY_CONFIG_FILE=./server/serverConfig.json
Esegui l'applicazione server
shell go run ./server/main.go
Java
- Nella directory degli esempi, apri il file README e segui le istruzioni al suo interno.
- Quando le istruzioni indicano di aprire un'altra finestra del terminale, esegui
questo comando:
shell gcloud compute ssh --project=$PROJECT_ID grpc-observability-vm
Esegui client
C++
- Creare un'altra sessione SSH nella VM.
Esporta le variabili di ambiente. Utilizza i passaggi definiti sopra per creare il 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"
Esegui l'applicazione client
cd grpc tools/bazel run examples/cpp/gcp_observability/helloworld:greeter_client
Vai
- Crea un'altra sessione SSH nella VM.
- Esporta variabili di ambiente. Utilizza i passaggi definiti
sopra per creare
client_config.json
file.shell export GRPC_GCP_OBSERVABILITY_CONFIG_FILE=./client/clientConfig.json
Esegui l'applicazione client
cd grpc-go/examples/features/observability go run ./client/main.go
Java
- Nella directory degli esempi, apri il file README e segui le istruzioni nel file.
- Quando le istruzioni ti indicano di aprire un'altra finestra del terminale, emetti questo
:
shell gcloud compute ssh --project=$PROJECT_ID grpc-observability-vm
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.
Elimina il progetto
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Elimina singole risorse
-
Elimina l'istanza:
gcloud compute instances delete INSTANCE_NAME
Passaggi successivi
- Per informazioni dettagliate sui dati di configurazione, sulle definizioni delle tracce, sulle definizioni delle metriche e sulle definizioni dei log, consulta Documentazione di riferimento sull'osservabilità dei microservizi.
- Per informazioni sulla visualizzazione di log, tracce e metriche, consulta Visualizzare tracce, metriche e voci di log