Utilizzare le metriche lato client di gRPC

Questa pagina descrive come emettere metriche lato client gRPC in Cloud Monitoring quando utilizzi gRPC per interagire con Cloud Storage utilizzando una delle seguenti interfacce supportate:

Le metriche lato client possono essere utilizzate per monitorare le prestazioni dell'applicazione client che interagisce con Cloud Storage utilizzando gRPC. La metrica lato client è diversa da quella lato server, che fornisce informazioni sul rendimento di Cloud Storage dal punto di vista del server.

Come funziona

Puoi attivare l'emissione di metriche lato client in Cloud Monitoring quando utilizzi gRPC per interagire con Cloud Storage utilizzando una delle interfacce supportate. Puoi visualizzare le metriche lato client utilizzando Metrics Explorer per monitorare e ottimizzare le interazioni tra Cloud Storage e il client gRPC, gestire l'utilizzo e risolvere i problemi tecnici e i colli di bottiglia delle prestazioni.

Prezzi

Le metriche lato client di Cloud Storage non sono addebitabili, il che significa che puoi emettere, memorizzare e accedere alle metriche lato client di Cloud Storage senza costi aggiuntivi. Per ulteriori informazioni sui prezzi, consulta la pagina Prezzi di Google Cloud Observability.

Prima di iniziare

Per utilizzare le metriche lato client, devi prima completare i seguenti passaggi:

  1. Verifica che la libreria client o il connettore Cloud Storage che vuoi utilizzare supporti gRPC. I seguenti connettori e librerie client di Cloud Storage supportano gRPC:

  2. Configura l'autenticazione.

  3. Abilita l'API Cloud Monitoring.

  4. Attiva l'API Cloud Storage.

    Vai all'API Cloud Storage

  5. Imposta le autorizzazioni e i ruoli richiesti per emettere le metriche lato client.

Ruoli obbligatori

Per impostare le autorizzazioni necessarie per emettere le metriche lato client gRPC in Cloud Monitoring, concedi il ruolo IAM Monitoring Metric Writer (roles/monitoring.metricWriter) all'account di servizio utilizzato dal client gRPC.

Questo ruolo predefinito contiene le autorizzazioni necessarie per emettere le metriche lato client gRPC in Cloud Monitoring. Per visualizzare le autorizzazioni esatte richieste, consulta la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

  • monitoring.timeSeries.create

Potresti anche ottenere queste autorizzazioni con altri ruoli personalizzati o ruoli predefiniti. Per ulteriori informazioni sul ruolo Monitoring Metric Writer, consulta la documentazione IAM relativa a roles/monitoring.metricWriter.

Considerazioni

Visualizzare le metriche in Metrics Explorer

Segui le istruzioni riportate di seguito per visualizzare le metriche lato client gRPC di Cloud Storage in Metrics Explorer.

  1. Nella console Google Cloud, vai alla pagina Esplora metriche.

    Vai a Esplora metriche

  2. Seleziona il progetto per cui vuoi visualizzare le metriche.

  3. Nel menu a discesa Metrica, fai clic su Seleziona una metrica.

  4. Nella barra di ricerca Filtra in base al nome della risorsa o della metrica, inserisci storage.googleapis.com/Client o cerca la metrica da applicare in base al nome della metrica e fai clic su Applica. Per aggiungere più di una metrica, fai clic su Aggiungi query.

    Cloud Storage applica le metriche al progetto. Puoi filtrare o aggregare le metriche utilizzando i seguenti menu a discesa:

    • Per selezionare e visualizzare un sottoinsieme di dati in base a criteri specificati, utilizza il menu a discesa Filtra.

    • Per combinare più punti dati in un unico valore e visualizzare una panoramica consuntiva delle metriche, utilizza il menu a discesa Aggregazione.

    Lascia in esecuzione l'applicazione per almeno un minuto prima di controllare se sono presenti metriche pubblicate.

Per visualizzare le metriche che hai aggiunto al progetto utilizzando una dashboard, consulta la Panoramica delle dashboard.

Descrizioni delle metriche

Le seguenti sezioni descrivono le metriche lato client di Cloud Storage che possono essere utilizzate per monitorare le prestazioni del client gRPC.

Metriche per tentativo del client

Le seguenti metriche raccolgono i dati sul rendimento relativi ai singoli tentativi effettuati da un client per comunicare con un server. Le metriche per tentativo del client possono aiutarti a misurare il comportamento di ripetizione, i colli di bottiglia e ottimizzare la comunicazione tra un client e un server.

Metrica completa Descrizione Tipo di strumento Unità Attributi
storage.googleapis.com/client/grpc/client/attempt/started Preview. Il numero totale di tentativi RPC avviati, inclusi quelli non completati. Contatore {attempt}
  • grpc.method: il nome completo del metodo gRPC, inclusi il pacchetto, il servizio e il metodo.
  • grpc.target: URI target canonizzato utilizzato quando è stato creato il canale gRPC.
storage.googleapis.com/client/grpc/client/attempt/duration Preview. Il tempo end-to-end necessario per completare un tentativo RPC, incluso il tempo necessario per scegliere un sottocanale. Istogramma s
  • grpc.method: nome completo del metodo gRPC, inclusi pacchetto, servizio e metodo.
  • grpc.target: URI target canonizzato utilizzato per la creazione del canale gRPC.
  • grpc.status: codice di stato del server gRPC ricevuto, ad esempio OK, CANCELLED o DEADLINE_EXCEEDED.
  • grpc.lb.locality: la località in cui viene inviato il traffico. Verrà impostato sull'attributo resolver passato dal criterio weighted_target o sulla stringa vuota se l'attributo resolver non è impostato.
storage.googleapis.com/client/grpc/client/attempt/sent_total_compressed_message_size Preview. I byte totali, compressi ma non criptati, inviati in tutti i messaggi di richiesta, tranne i metadati per ogni tentativo RPC. Non sono inclusi i byte di framing gRPC o di trasporto. Istogramma By
  • grpc.method: nome completo del metodo gRPC, inclusi pacchetto, servizio e metodo.
  • grpc.target: URI target canonizzato utilizzato per la creazione del canale gRPC.
  • grpc.status: codice di stato del server gRPC ricevuto, ad esempio OK, CANCELLED o DEADLINE_EXCEEDED.
  • grpc.lb.locality: la località a cui viene inviato il traffico. Verrà impostato sull'attributo resolver passato dal criterio weighted_target o sulla stringa vuota se l'attributo resolver non è impostato.
storage.googleapis.com/client/grpc/client/attempt/rcvd_total_compressed_message_size Preview. La quantità totale di byte, compressi ma non criptati, ricevuti in tutti i messaggi di risposta, tranne i metadati, per ogni tentativo RPC. Non sono inclusi i byte di framing gRPC o di trasporto. Istogramma By
  • grpc.method: nome completo del metodo gRPC, inclusi pacchetto, servizio e metodo.
  • grpc.target: URI target canonizzato utilizzato per la creazione del canale gRPC.
  • grpc.status: codice di stato del server gRPC ricevuto, ad esempio OK, CANCELLED o DEADLINE_EXCEEDED.
  • grpc.lb.locality: la località a cui viene inviato il traffico. Verrà impostato sull'attributo resolver passato dal criterio weighted_target o sulla stringa vuota se l'attributo resolver non è impostato.

Per ulteriori informazioni sugli strumenti per ogni tentativo del client, consulta la documentazione delle metriche di OpenTelemetry su GitHub.

Metriche per chiamata del client

Le seguenti metriche forniscono una visualizzazione aggregata dell'intero ciclo di vita di una chiamata client a un server. Le metriche per chiamata del client forniscono dati di alto livello sulle chiamate del client, metriche di monitoraggio per comprendere i pattern di chiamata e aiutarti a identificare le frequenze degli errori.

Metrica completa Descrizione Tipo di strumento Unità Attributi
storage.googleapis.com/client/grpc/client/call/duration Preview. Misura il tempo end-to-end necessario alla libreria gRPC per completare un'RPC dal punto di vista dell'applicazione. Istogramma s
  • grpc.method: nome completo del metodo gRPC, inclusi pacchetto, servizio e metodo.
  • grpc.target: URI target canonizzato utilizzato durante la creazione del canale gRPC.
  • grpc.status: codice di stato del server gRPC ricevuto, ad esempio OK, CANCELLED o DEADLINE_EXCEEDED.

Per ulteriori informazioni sugli strumenti per chiamata del client, consulta la documentazione delle metriche di OpenTelemetry su GitHub.

Richiedi metriche di rilevamento del carico

Le seguenti metriche forniscono informazioni sull'efficacia dell'utilizzo del rilevamento del carico delle richieste da parte dell'applicazione client. Le metriche di rilevamento del carico delle richieste possono aiutarti a bilanciare i carichi del server, ottimizzare l'utilizzo delle risorse e migliorare i tempi di risposta del client. Le seguenti metriche sono disponibili solo con la connettività diretta.

Metrica completa Descrizione Tipo di strumento Unità Attributi
storage.googleapis.com/client/grpc/lb/rls/cache_entries Preview. Il numero di voci nella cache di rilevamento del carico di richieste. Misuratore {entry}
  • grpc.target: indica il target del canale gRPC in cui viene utilizzato il WRR.
  • grpc.lb.rls.server_target: l'URI di destinazione del server di rilevamento del carico delle richieste con cui comunica.
  • grpc.lb.rls.instance_uuid: un identificatore universale univoco (UUID) per una singola istanza del client di rilevamento del carico delle richieste. Il valore non è significativo da solo, ma è utile per distinguere le istanze client di rilevamento del carico delle richieste nei casi in cui sono presenti più istanze nello stesso canale gRPC o più canali per lo stesso target.
storage.googleapis.com/client/grpc/lb/rls/cache_size Preview. Le dimensioni attuali della cache di rilevamento del carico delle richieste. Misuratore By
  • grpc.target: il target del canale gRPC in cui viene utilizzato il WRR.
  • grpc.lb.rls.server_target: l'URI di destinazione del server di rilevamento del carico delle richieste con cui comunica.
  • grpc.lb.rls.instance_uuid: un UUID per un'istanza client di rilevamento del carico delle richieste. Il valore non è significativo da solo, ma è utile per distinguere le istanze client di rilevamento del carico delle richieste nei casi in cui sono presenti più istanze nello stesso canale gRPC o più canali per lo stesso target.
storage.googleapis.com/client/grpc/lb/rls/default_target_picks Preview. Il numero di scelte del bilanciatore del carico (LB) inviate al target predefinito. Contatore {pick}
  • grpc.target: indica il target del canale gRPC in cui viene utilizzato il rilevamento del carico delle richieste.
  • grpc.lb.rls.server_target: l'URI di destinazione del server di rilevamento del carico delle richieste con cui comunicare.
  • grpc.lb.rls.data_plane_target: una stringa target utilizzata dal monitoraggio del carico delle richieste per il routing del traffico del piano dati. Il valore viene fornito dal server di rilevamento del carico delle richieste per una determinata chiave o configurato come target predefinito nella configurazione del rilevamento del carico delle richieste.
  • grpc.lb.pick_result:il risultato di una scelta del bilanciatore del carico, ad esempio "complete", "fail" o "drop".
storage.googleapis.com/client/grpc/lb/rls/target_picks Preview. Il numero di scelte LB inviate a ogni target di rilevamento del carico delle richieste. Se il target predefinito viene restituito anche dal server di rilevamento del carico delle richieste, le RPC inviate a quel target dalla cache vengono conteggiate in questa metrica, non in grpc.rls.default_target_picks. Contatore {pick}
  • grpc.target: il target del canale gRPC in cui viene utilizzato il rilevamento del carico delle richieste.
  • grpc.lb.rls.server_target: l'URI di destinazione del server di rilevamento del carico delle richieste con cui comunicare.
  • grpc.lb.rls.data_plane_target: una stringa target utilizzata dal rilevamento del carico delle richieste per il routing del traffico del piano dati. Il valore viene fornito dal server di rilevamento del carico delle richieste per una determinata chiave o configurato come target predefinito nella configurazione del rilevamento del carico delle richieste.
  • grpc.lb.pick_result: il risultato di una scelta del bilanciatore del carico, ad esempio "complete", "fail" o "drop".
storage.googleapis.com/client/grpc/lb/rls/failed_picks Preview. Il numero di scelte LB non riuscite a causa di una richiesta di rilevamento del carico delle richieste non riuscita o del canale di rilevamento del carico delle richieste sottoposto a limitazione. Contatore {pick}
  • grpc.target: il target del canale gRPC in cui viene utilizzato il rilevamento del carico delle richieste.
  • grpc.lb.rls.server_target: l'URI di destinazione del server di rilevamento del carico delle richieste con cui comunicare.

Metriche del client del servizio xDiscovery

Le seguenti metriche forniscono informazioni su come l'applicazione client interagisce con il piano di controllo di xDiscovery Service (xDS) per rilevare e configurare le connessioni ai servizi di backend. Le metriche xDS possono aiutarti a monitorare la latenza delle richieste di servizio, a controllare gli aggiornamenti di configurazione e a ottimizzare il rendimento complessivo di xDS.

Le seguenti metriche sono disponibili solo con la connettività diretta.

Metrica completa Descrizione Tipo di strumento Unità Attributi
storage.googleapis.com/client/grpc/xds_client/connected Preview. Misura se il client xDS ha o meno un stream ADS funzionante per il server xDS. Per un determinato server, questa metrica viene impostata su 1 al momento della creazione iniziale dello stream. Se si verifica un errore di connettività o quando lo stream ADS non va a buon fine senza visualizzare un messaggio di risposta come da A57, la metrica viene impostata su 0. Una volta impostata su 0, la metrica verrà reimpostata su 1 quando verrà ricevuta la prima risposta in uno stream ADS. Questa metrica è disponibile solo per le librerie client Cloud per C++. Misuratore {bool}
  • grpc.target: per i client, indica il target del canale gRPC in cui viene utilizzato XdsClient. Per i server, sarà la stringa "#server".
  • grpc.xds.server: l'URI target del server xDS con cui XdsClient è in comunicazione.
storage.googleapis.com/client/grpc/xds_client/resource_updates_invalid Preview. Il numero di risorse ricevute considerate non valide. Questa metrica è disponibile solo per le librerie client Cloud per C++. Contatore {resource}
  • grpc.target: per i client, indica il target del canale gRPC in cui viene utilizzato XdsClient. Per i server, sarà la stringa "#server".
  • grpc.xds.server: l'URI target del server xDS con cui XdsClient comunica.
  • grpc.xds.resource_type: indica un tipo di risorsa xDS, ad esempio "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/resource_updates_valid Preview. Il numero di risorse ricevute considerate valide, anche se invariate. Questa metrica è disponibile solo per le librerie client Cloud per C++. Contatore {resource}
  • grpc.target: per i client, indica il target del canale gRPC in cui viene utilizzato XdsClient. Per i server, sarà la stringa "#server".
  • grpc.xds.server: l'URI target del server xDS con cui XdsClient comunica.
  • grpc.xds.resource_type: indica un tipo di risorsa xDS, ad esempio "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/resources Preview. Il numero di risorse xDS. Questa metrica è disponibile solo per le librerie client Cloud per C++. Misuratore {resource}
  • grpc.target: per i client, indica il target del canale gRPC in cui viene utilizzato XdsClient. Per i server, sarà la stringa "#server".
  • grpc.xds.authority: l'autorità xDS. Il valore sarà "#old" per i nomi delle risorse non xdstp identificati nell'API xDS prima dell'introduzione della rappresentazione URI xdstp://.
  • grpc.xds.cache_state: indica lo stato della cache di una risorsa xDS.
  • grpc.xds.resource_type indica un tipo di risorsa xDS, ad esempio "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/server_failure Preview. Il numero di server xDS che non funzionano più correttamente e che non sono più disponibili, sono sovraccaricati o forniscono dati di configurazione errati o non validi. Questa metrica è disponibile solo per le librerie client Cloud per C++. Contatore {failure}
  • grpc.target: l'URI target del server xDS con cui XdsClient comunica.
  • grpc.xds.server: per i client, indica il target del canale gRPC in cui viene utilizzato XdsClient. Per i server, si tratta della stringa "#server".

Per ulteriori informazioni sulle metriche dei client xDS, consulta la documentazione sul bilanciamento del carico globale basato su xDS su GitHub.

Disattivare le metriche lato client

Se necessario, puoi disattivare le metriche lato client.

Java

public GrpcStorageOptions.Builder setEnableGrpcClientMetrics(false enableGrpcClientMetrics)

Per ulteriori informazioni, consulta il metodo della classe GrpcStorageOptions.Builder delle librerie client di Cloud per Java per le metriche del client gRPC.

C++

Per disattivare le metriche lato client per l'API gRPC utilizzando le librerie client di Cloud per C++, consulta Struttura EnableGrpcMetricsOption.

Passaggi successivi