Clientseitige gRPC-Messwerte verwenden

Auf dieser Seite wird beschrieben, wie Sie clientseitige gRPC-Messwerte an Cloud Monitoring senden, wenn Sie gRPC verwenden, um über eine der folgenden unterstützten Schnittstellen mit Cloud Storage zu interagieren:

Mit clientseitigen Messwerten können Sie die Leistung der Clientanwendung überwachen, die über gRPC mit Cloud Storage interagiert. Der clientseitige Messwert unterscheidet sich von serverseitigen Messwerten, die Aufschluss über die Cloud Storage-Leistung aus serverseitiger Sicht geben.

Funktionsweise

Sie können festlegen, dass clientseitige Messwerte an Cloud Monitoring gesendet werden, wenn Sie gRPC verwenden, um über eine der unterstützten Schnittstellen mit Cloud Storage zu interagieren.

Preise

Clientseitige Cloud Storage-Messwerte sind nicht kostenpflichtig. Sie können also clientseitige Cloud Storage-Messwerte ausgeben, speichern und darauf zugreifen, ohne dass Cloud Monitoring-Gebühren anfallen. Weitere Informationen zu den Preisen finden Sie unter Google Cloud Observability – Preise.

Hinweis

Wenn Sie clientseitige Messwerte verwenden möchten, müssen Sie zuerst die folgenden Schritte ausführen:

  1. Prüfen Sie, ob die Cloud Storage-Clientbibliothek oder der Connector, den Sie verwenden möchten, gRPC unterstützt. Die folgenden Cloud Storage-Clientbibliotheken und ‑Connectors unterstützen gRPC:

  2. Richten Sie die Authentifizierung ein.

  3. Aktivieren Sie Cloud Monitoring API.

  4. Aktivieren Sie die Cloud Storage API.

    Cloud Storage API aufrufen

  5. Legen Sie die erforderlichen Rollen und Berechtigungen fest, die zum Ausgeben von clientseitigen Messwerten erforderlich sind.

Erforderliche Rollen

Um die Berechtigungen festzulegen, die Sie zum Senden von clientseitigen gRPC-Messwerten an Cloud Monitoring benötigen, weisen Sie dem vom gRPC-Client verwendeten Dienstkonto die IAM-Rolle Monitoring Metric Writer (roles/monitoring.metricWriter) zu.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Senden von clientseitigen gRPC-Messwerten an Cloud Monitoring erforderlich sind. Die genauen Berechtigungen, die erforderlich sind, finden Sie im Abschnitt Erforderliche Berechtigungen:

Erforderliche Berechtigungen

  • monitoring.timeSeries.create

Diese IAM-Berechtigung ist in den folgenden vordefinierten Cloud Storage-Rollen enthalten:

Sie können diese Berechtigungen auch mit anderen benutzerdefinierten Rollen oder vordefinierten Rollen erhalten. Weitere Informationen zur Rolle „Monitoring Metric Writer“ finden Sie in der IAM-Dokumentation zu roles/monitoring.metricWriter.

Messwertbeschreibungen

In den folgenden Abschnitten werden die clientseitigen Cloud Storage-Messwerte beschrieben, mit denen die Leistung des gRPC-Clients überwacht werden kann.

Messwerte für einzelne Versuche auf Clientseite

Mit den folgenden Messwerten werden Leistungsdaten zu einzelnen Versuchen eines Clients erfasst, mit einem Server zu kommunizieren. Mit clientseitigen Messwerten pro Versuch können Sie das Wiederholungsverhalten und Engpässe messen und die Kommunikation zwischen Client und Server optimieren.

Vollständiger Messwert Beschreibung Instrumententyp Einheit Attribute
storage.googleapis.com/client/grpc/client/attempt/started Preview: Die Gesamtzahl der gestarteten RPC-Versuche, einschließlich der nicht abgeschlossenen. Zähler {attempt}
  • grpc.method: der vollständige gRPC-Methodenname, einschließlich Paket, Dienst und Methode.
  • grpc.target: Kanonischer Ziel-URI, der beim Erstellen des gRPC-Kanals verwendet wird.
storage.googleapis.com/client/grpc/client/attempt/duration Preview: Die End-to-End-Zeit, die für den Abschluss eines RPC-Versuchs benötigt wird, einschließlich der Zeit für die Auswahl eines Subkanals. Histogramm s
  • grpc.method: Vollständiger gRPC-Methodenname, einschließlich Paket, Dienst und Methode.
  • grpc.target: Kanonisierter Ziel-URI, der beim Erstellen des gRPC-Channels verwendet wird.
  • grpc.status: Empfangener gRPC-Server-Statuscode, z. B. OK, CANCELLED oder DEADLINE_EXCEEDED.
  • grpc.lb.locality: der Ort, an den der Traffic gesendet wird. Dies wird auf das Resolver-Attribut gesetzt, das von der weighted_target-Richtlinie übergeben wird, oder auf den leeren String, wenn das Resolver-Attribut nicht festgelegt ist.
storage.googleapis.com/client/grpc/client/attempt/sent_total_compressed_message_size Preview: Die Gesamtzahl der Byte (komprimiert, aber nicht verschlüsselt), die pro RPC-Versuch in allen Anfragenachrichten mit Ausnahme von Metadaten gesendet werden. gRPC- oder Transport-Framing-Bytes sind nicht enthalten. Histogramm By
  • grpc.method: Vollständiger gRPC-Methodenname, einschließlich Paket, Dienst und Methode.
  • grpc.target: Kanonisierter Ziel-URI, der beim Erstellen des gRPC-Channels verwendet wird.
  • grpc.status: Empfangener gRPC-Server-Statuscode, z. B. OK, CANCELLED oder DEADLINE_EXCEEDED.
  • grpc.lb.locality: der Ort, an den der Traffic gesendet wird. Dieser Wert wird auf das Resolver-Attribut gesetzt, das von der weighted_target-Richtlinie übergeben wird, oder auf den leeren String, wenn das Resolver-Attribut nicht festgelegt ist.
storage.googleapis.com/client/grpc/client/attempt/rcvd_total_compressed_message_size Preview: Die Gesamtzahl der Byte (komprimiert, aber nicht verschlüsselt), die in allen Antwortnachrichten außer Metadaten pro RPC-Versuch empfangen werden. gRPC- oder Transport-Framing-Bytes sind nicht enthalten. Histogramm By
  • grpc.method: Vollständiger gRPC-Methodenname, einschließlich Paket, Dienst und Methode.
  • grpc.target: Kanonisierter Ziel-URI, der beim Erstellen des gRPC-Channels verwendet wird.
  • grpc.status: empfangener gRPC-Server-Statuscode, z. B. OK, CANCELLED oder DEADLINE_EXCEEDED.
  • grpc.lb.locality: der Ort, an den der Traffic gesendet wird. Dies wird auf das Resolver-Attribut gesetzt, das von der weighted_target-Richtlinie übergeben wird, oder auf den leeren String, wenn das Resolver-Attribut nicht festgelegt ist.

Weitere Informationen zu clientseitigen Instrumenten pro Versuch finden Sie in der OpenTelemetry-Dokumentation zu Messwerten auf GitHub.

Clientseitige Messwerte pro Anruf

Die folgenden Messwerte bieten eine aggregierte Ansicht des gesamten Lebenszyklus eines Clientaufrufs an einen Server. Client-Messwerte pro Aufruf liefern allgemeine Daten zu Clientaufrufen, Tracking-Messwerte zum Verständnis von Aufrufmustern und helfen Ihnen, Fehlerhäufigkeiten zu erkennen.

Vollständiger Messwert Beschreibung Instrumententyp Einheit Attribute
storage.googleapis.com/client/grpc/client/call/duration Preview: Misst die End-to-End-Zeit, die die gRPC-Bibliothek benötigt, um einen RPC abzuschließen, aus Sicht der Anwendung. Histogramm s
  • grpc.method: vollständiger gRPC-Methodenname, einschließlich Paket, Dienst und Methode.
  • grpc.target: Kanonischer Ziel-URI, der beim Erstellen des gRPC-Kanals verwendet wird.
  • grpc.status: empfangener gRPC-Server-Statuscode, z. B. OK, CANCELLED oder DEADLINE_EXCEEDED.

Weitere Informationen zu clientseitigen Instrumenten pro Aufruf finden Sie in der OpenTelemetry-Messwertdokumentation auf GitHub.

Messwerte zur Erkennung der Anfragelast anfordern

Die folgenden Messwerte geben Aufschluss darüber, wie effektiv die Funktion zur Erkennung der Anfragelast in Ihrer Clientanwendung ist. Messwerte zur Erkennung der Anfragelast können Ihnen helfen, die Serverlast auszugleichen, die Ressourcennutzung zu optimieren und die Client-Antwortzeiten zu verbessern. Die folgenden Messwerte sind nur bei direkter Verbindung verfügbar.

Vollständiger Messwert Beschreibung Instrumententyp Einheit Attribute
storage.googleapis.com/client/grpc/lb/rls/cache_entries Preview. Die Anzahl der Einträge im Cache für die Anfrageauslastungserkennung. Gauge {entry}
  • grpc.target: Gibt das Ziel des gRPC-Channels an, in dem der WRR verwendet wird.
  • grpc.lb.rls.server_target: Der Ziel-URI des Servers, mit dem der Server zur Erkennung der Anforderungslast kommuniziert.
  • grpc.lb.rls.instance_uuid: ein Universally Unique Identifier (UUID) für eine einzelne Clientinstanz mit Anfrage-Load-Sensing. Der Wert ist für sich genommen nicht aussagekräftig, aber er ist nützlich, um zwischen Clientinstanzen mit Anfrageauslastungserkennung zu unterscheiden, wenn entweder mehrere Instanzen im selben gRPC-Kanal vorhanden sind oder mehrere Kanäle zum selben Ziel vorhanden sind.
storage.googleapis.com/client/grpc/lb/rls/cache_size Preview: Die aktuelle Größe des Caches für die Erkennung der Anfragelast. Gauge By
  • grpc.target: Das Ziel des gRPC-Channels, in dem der WRR verwendet wird.
  • grpc.lb.rls.server_target: Der Ziel-URI des Servers, mit dem der Server zur Erkennung der Anforderungslast kommuniziert.
  • grpc.lb.rls.instance_uuid: Eine UUID für eine einzelne Clientinstanz für die Anfrage-Lasterkennung. Der Wert ist an sich nicht aussagekräftig, aber nützlich, um zwischen Clientinstanzen für die Erkennung der Anfragelast zu unterscheiden, wenn es entweder mehrere Instanzen im selben gRPC-Channel oder mehrere Channels für dasselbe Ziel gibt.
storage.googleapis.com/client/grpc/lb/rls/default_target_picks Preview: Die Anzahl der Load-Balancer-Auswahlen, die an das Standardziel gesendet wurden. Zähler {pick}
  • grpc.target: Gibt das Ziel des gRPC-Channels an, in dem die Erkennung der Anfragelast verwendet wird.
  • grpc.lb.rls.server_target: der Ziel-URI des Servers für die Anfrageauslastungserkennung, mit dem kommuniziert werden soll.
  • grpc.lb.rls.data_plane_target: Ein Zielstring, der von der Anfrage-Lastenerkennung zum Weiterleiten von Traffic auf der Datenebene verwendet wird. Der Wert wird entweder vom Server zur Erfassung der Anfragelast für einen bestimmten Schlüssel zurückgegeben oder als Standardziel in der Konfiguration zur Erfassung der Anfragelast konfiguriert.
  • grpc.lb.pick_result:das Ergebnis einer LB-Auswahl, z. B. "complete", "fail" oder "drop".
storage.googleapis.com/client/grpc/lb/rls/target_picks Preview: Die Anzahl der LB-Auswahlen, die an jedes Ziel für die Anfrage-Lasterkennung gesendet werden. Wenn das Standardziel auch vom Server für die Erkennung der Anfragelast zurückgegeben wird, werden RPCs, die aus dem Cache an dieses Ziel gesendet werden, in diesem Messwert und nicht in grpc.rls.default_target_picks gezählt. Zähler {pick}
  • grpc.target: Das Ziel des gRPC-Kanals, in dem die Anfrage-Lasterkennung verwendet wird.
  • grpc.lb.rls.server_target: Der Ziel-URI des Servers zur Erkennung der Anforderungslast, mit dem kommuniziert werden soll.
  • grpc.lb.rls.data_plane_target: Ein Zielstring, der von der Anfrage-Lasterkennung zum Weiterleiten von Traffic auf der Datenebene verwendet wird. Der Wert wird entweder vom Server für die Anfrageauslastungserkennung für einen bestimmten Schlüssel zurückgegeben oder als Standardziel in der Konfiguration für die Anfrageauslastungserkennung konfiguriert.
  • grpc.lb.pick_result: das Ergebnis einer LB-Auswahl, z. B. "complete", "fail" oder "drop".
storage.googleapis.com/client/grpc/lb/rls/failed_picks Preview. Die Anzahl der LB-Auswahlen, die entweder aufgrund einer fehlgeschlagenen Anfrage zur Lastmessung oder aufgrund einer Drosselung des Kanals für die Lastmessung fehlgeschlagen sind. Zähler {pick}
  • grpc.target: Das Ziel des gRPC-Kanals, in dem die Anfrage-Lasterkennung verwendet wird.
  • grpc.lb.rls.server_target: der Ziel-URI des Servers für die Anfrageauslastungserkennung, mit dem kommuniziert werden soll.

xDiscovery Service-Clientmesswerte

Die folgenden Messwerte geben Aufschluss darüber, wie Ihre Clientanwendung mit der xDiscovery Service (xDS)-Steuerungsebene interagiert, um Verbindungen zu Backend-Diensten zu erkennen und zu konfigurieren. Mit xDS-Messwerten können Sie die Latenz von Dienstanfragen verfolgen, Konfigurationsupdates überwachen und die xDS-Gesamtleistung optimieren.

Die folgenden Messwerte sind nur bei direkter Verbindung verfügbar.

Vollständiger Messwert Beschreibung Instrumententyp Einheit Attribute
storage.googleapis.com/client/grpc/xds_client/connected Preview. Misst, ob der xDS-Client einen funktionierenden ADS-Stream zum xDS-Server hat. Für einen bestimmten Server wird dieser Messwert beim Erstellen des Streams auf 1 gesetzt. Wenn ein Verbindungsfehler auftritt oder der ADS-Stream ohne Antwortnachricht gemäß A57 fehlschlägt, wird der Messwert auf 0 gesetzt. Wenn der Messwert auf 0 gesetzt ist, wird er auf 1 zurückgesetzt, sobald die erste Antwort in einem ADS-Stream empfangen wird. Dieser Messwert ist nur für Cloud-Clientbibliotheken für C++ verfügbar. Gauge {bool}
  • grpc.target: Gibt für Clients das Ziel des gRPC-Channels an, in dem XdsClient verwendet wird. Für Server ist dies der String "#server".
  • grpc.xds.server: der Ziel-URI des xDS-Servers, mit dem der XdsClient kommuniziert.
storage.googleapis.com/client/grpc/xds_client/resource_updates_invalid Preview: Die Anzahl der empfangenen Ressourcen, die als ungültig eingestuft wurden. Dieser Messwert ist nur für Cloud-Clientbibliotheken für C++ verfügbar. Zähler {resource}
  • grpc.target: Gibt für Clients das Ziel des gRPC-Kanals an, in dem der XdsClient verwendet wird. Für Server ist dies der String "#server".
  • grpc.xds.server: der Ziel-URI des xDS-Servers, mit dem der XdsClient kommuniziert.
  • grpc.xds.resource_type: Gibt einen xDS-Ressourcentyp an, z. B. "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/resource_updates_valid Preview: Die Anzahl der empfangenen Ressourcen, die als gültig eingestuft wurden, auch wenn sie unverändert sind. Dieser Messwert ist nur für Cloud-Clientbibliotheken für C++ verfügbar. Zähler {resource}
  • grpc.target: Gibt für Clients das Ziel des gRPC-Kanals an, in dem der XdsClient verwendet wird. Für Server ist dies der String "#server".
  • grpc.xds.server: Der Ziel-URI des xDS-Servers, mit dem XdsClient kommuniziert.
  • grpc.xds.resource_type: Gibt einen xDS-Ressourcentyp an, z. B. "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/resources Preview: Die Anzahl der xDS-Ressourcen. Dieser Messwert ist nur für Cloud-Clientbibliotheken für C++ verfügbar. Gauge {resource}
  • grpc.target: Gibt für Clients das Ziel des gRPC-Kanals an, in dem der XdsClient verwendet wird. Bei Servern ist dies der String "#server".
  • grpc.xds.authority: Die xDS-Autorität. Der Wert ist "#old" für Ressourcenname ohne xdstp, die in der xDS API vor der Einführung der xdstp://-URI-Darstellung identifiziert wurden.
  • grpc.xds.cache_state: Gibt den Cache-Status einer xDS-Ressource an.
  • grpc.xds.resource_type gibt einen xDS-Ressourcentyp an, z. B. "envoy.config.listener.v3.Listener".
storage.googleapis.com/client/grpc/xds_client/server_failure Preview. Die Anzahl der xDS-Server, die nicht mehr ordnungsgemäß funktionieren und entweder nicht mehr verfügbar oder überlastet sind oder falsche oder ungültige Konfigurationsdaten bereitstellen. Dieser Messwert ist nur für Cloud-Clientbibliotheken für C++ verfügbar. Zähler {failure}
  • grpc.target: Der Ziel-URI des xDS-Servers, mit dem XdsClient kommuniziert.
  • grpc.xds.server: Für Clients gibt dies das Ziel des gRPC-Channels an, in dem XdsClient verwendet wird. Bei Servern ist das der String "#server".

Weitere Informationen zu xDS-Clientmesswerten finden Sie in der Dokumentation zum xDS-basierten globalen Load-Balancing auf GitHub.

Clientseitige Messwerte deaktivieren

Sie können clientseitige Messwerte bei Bedarf deaktivieren.

Java

public GrpcStorageOptions.Builder setEnableGrpcClientMetrics(false enableGrpcClientMetrics)

Weitere Informationen finden Sie unter Cloud-Clientbibliotheken für die Java-Klasse GrpcStorageOptions.Builder-Methode für gRPC-Clientmesswerte.

C++

Informationen zum Deaktivieren clientseitiger Messwerte für die gRPC API mit Cloud-Clientbibliotheken für C++ finden Sie unter Struktur EnableGrpcMetricsOption.

Wenn Sie Bazel zum Erstellen Ihrer Anwendung verwenden und clientseitige Messwerte deaktivieren möchten, legen Sie die Option enable_grpc_metrics in der Build-Datei Ihrer Anwendung auf false fest.