gRPC-clientseitige Messwerte verwenden

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

Mit clientseitigen Messwerten lässt sich die Leistung der Clientanwendung überwachen, die über gRPC mit Cloud Storage interagiert. Der clientseitige Messwert unterscheidet sich von serverseitigen Messwerten, die Einblicke in die Cloud Storage-Leistung aus serverseitiger Sicht bieten.

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. Sie können clientseitige Messwerte mit dem Metrics Explorer ansehen, um Interaktionen zwischen Cloud Storage und dem gRPC-Client zu beobachten und zu optimieren, die Nutzung zu verwalten und Leistungsengpässe und technische Probleme zu beheben.

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.

Hinweise

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, die 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 die Cloud Monitoring API.

  4. Aktivieren Sie die Cloud Storage API.

    Zur Cloud Storage API

  5. Legen Sie die erforderlichen Rollen und Berechtigungen fest, die zum Ausgeben clientseitiger Messwerte erforderlich sind.

Erforderliche Rollen

Um die Berechtigungen festzulegen, die Sie zum Ausgeben 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 Ausgeben von gRPC-Clientseitigen Messwerten an Cloud Monitoring erforderlich sind. Im Abschnitt Erforderliche Berechtigungen finden Sie die erforderlichen Berechtigungen:

Erforderliche Berechtigungen

  • monitoring.timeSeries.create

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.

Hinweise

  • Wenn Sie den Cloud Storage-Connector in Dataproc verwenden, müssen Sie dem Dataproc-VM-Dienstkonto die IAM-Rolle „Monitoring Metric Writer“ (roles/monitoring.metricWriter) zuweisen.

  • Wenn Sie den Apache Beam-Connector in Dataflow verwenden, müssen Sie dem Dataflow-Worker-Dienstkonto die IAM-Rolle „Monitoring Metric Writer“ (roles/monitoring.metricWriter) zuweisen.

Messwerte in Metrics Explorer aufrufen

Gehen Sie nach der folgenden Anleitung vor, um clientseitige gRPC-Messwerte für Cloud Storage im Metrics Explorer aufzurufen.

  1. Rufen Sie in der Google Cloud Console die Seite Metrics Explorer auf.

    Zum Metrics Explorer

  2. Wählen Sie das Projekt aus, für das Sie Messwerte aufrufen möchten.

  3. Klicken Sie im Drop-down-Menü Messwert auf Messwert auswählen.

  4. Geben Sie in der Suchleiste Nach Ressourcen- oder Messwertname filtern den Wert storage.googleapis.com/Client ein oder suchen Sie nach dem Messwert, den Sie anwenden möchten, indem Sie den Messwertnamen eingeben. Klicken Sie dann auf Übernehmen. Wenn Sie mehrere Messwerte hinzufügen möchten, klicken Sie auf Abfrage hinzufügen.

    Cloud Storage wendet die Messwerte auf Ihr Projekt an. Sie können Ihre Messwerte mit den folgenden Drop-down-Menüs filtern oder zusammenfassen:

    • Wenn Sie eine Teilmenge Ihrer Daten anhand bestimmter Kriterien auswählen und ansehen möchten, verwenden Sie das Drop-down-Menü Filter.

    • Wenn Sie mehrere Datenpunkte zu einem einzigen Wert zusammenfassen und eine zusammengefasste Ansicht Ihrer Messwerte aufrufen möchten, verwenden Sie das Drop-down-Menü Aggregation.

    Lassen Sie die Anwendung mindestens eine Minute lang laufen, bevor Sie nach veröffentlichten Messwerten suchen.

Informationen zum Ansehen der Messwerte, die Sie Ihrem Projekt über ein Dashboard hinzugefügt haben, finden Sie unter Dashboards – Übersicht.

Messwertbeschreibungen

In den folgenden Abschnitten werden Cloud Storage-Clientseitige 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 Client-Messwerten pro Versuch können Sie das Wiederholungsverhalten und Engpässe messen und die Kommunikation zwischen einem Client und einem Server optimieren.

Vollständiger Messwert Beschreibung Zahlungsmittel 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: Kanonisierter Ziel-URI, der beim Erstellen des gRPC-Channels 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. 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/sent_total_compressed_message_size Preview: Die Gesamtzahl der Byte, die komprimiert, aber nicht verschlüsselt in allen Anfragenachrichten mit Ausnahme von Metadaten pro RPC-Versuch 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 (komprimierten, nicht verschlüsselten) Byte in allen Antwortnachrichten (außer Metadaten) pro RPC-Versuch. 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.

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

Clientmesswerte pro Aufruf

Die folgenden Messwerte bieten eine aggregierte Ansicht des gesamten Lebenszyklus eines Clientaufrufs an einen Server. Clientbezogene Messwerte pro Anruf liefern allgemeine Daten zu Clientanrufen, Tracking-Messwerte zum Nachvollziehen von Anrufmustern und helfen Ihnen, Häufigkeiten bei Fehlern zu erkennen.

Vollständiger Messwert Beschreibung Zahlungsmittel 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 aus Sicht der Anwendung abzuschließen. 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.

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

Messwerte zur Erkennung der Anfragelast anfordern

Die folgenden Messwerte geben Aufschluss über die Effektivität der Verwendung der Erkennung der Anfragelast durch Ihre Clientanwendung. Messwerte zur Erkennung der Anfragelast können Ihnen helfen, die Serverlast auszugleichen, die Ressourcenauslastung zu optimieren und die Client-Antwortzeiten zu verbessern. Die folgenden Messwerte sind nur bei direkter Verbindung verfügbar.

Vollständiger Messwert Beschreibung Zahlungsmittel Einheit Attribute
storage.googleapis.com/client/grpc/lb/rls/cache_entries Preview: Die Anzahl der Einträge im Cache für die Erkennung der Anfragelast. Gauge {entry}
  • grpc.target: Gibt das Ziel des gRPC-Kanals an, in dem der WRR verwendet wird.
  • grpc.lb.rls.server_target: Der Ziel-URI des Servers, mit dem der Server zur Erkennung der Anfragelast kommuniziert.
  • grpc.lb.rls.instance_uuid: Eine universell eindeutige ID (Universally Unique Identifier, UUID) für eine einzelne Clientinstanz zur Erkennung der Anfragelast. Der Wert ist an sich nicht aussagekräftig, aber nützlich, um zwischen Clientinstanzen mit 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/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 Anfragelast kommuniziert.
  • grpc.lb.rls.instance_uuid: Eine UUID für eine einzelne Clientinstanz zur Erkennung der Anfragelast. Der Wert ist an sich nicht aussagekräftig, aber nützlich, um zwischen Clientinstanzen mit 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 (LB), 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 zur Erkennung der Anfragelast, mit dem kommuniziert werden soll.
  • grpc.lb.rls.data_plane_target: Ein Zielstring, der von der Erkennung der Anforderungslast für das Routing des Datenverkehrs der Datenebene verwendet wird. Der Wert wird entweder vom Server zur Erkennung der Anfragelast für einen bestimmten Schlüssel zurückgegeben oder als Standardziel in der Konfiguration zur Erkennung 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 Erkennung der Anfragelast gesendet werden. Wenn das Standardziel auch vom Server für die Erkennung der Anforderungslast zurückgegeben wird, werden RPCs, die vom 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-Channels, in dem die Erkennung der Anfragelast verwendet wird.
  • grpc.lb.rls.server_target: Der Ziel-URI des Servers zur Erkennung der Anfragelast, mit dem kommuniziert werden soll.
  • grpc.lb.rls.data_plane_target: Ein Zielstring, der von der Erkennung der Anforderungslast für das Routing des Datenverkehrs der Datenebene verwendet wird. Der Wert wird entweder vom Server zur Erkennung der Anfragelast für einen bestimmten Schlüssel zurückgegeben oder als Standardziel in der Konfiguration zur Erkennung 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/failed_picks Preview: Die Anzahl der LB-Auswahlen, die aufgrund einer fehlgeschlagenen Anfrage zum Erfassen der Anfragelast oder einer Drosselung des Kanals zum Erfassen der Anfragelast fehlgeschlagen sind. Zähler {pick}
  • grpc.target: Das Ziel des gRPC-Channels, in dem die Erkennung der Anfragelast verwendet wird.
  • grpc.lb.rls.server_target: Der Ziel-URI des Servers zur Erkennung der Anfragelast, 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 Serviceanfragen verfolgen, Konfigurationsupdates überwachen und die allgemeine xDS-Leistung optimieren.

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

Vollständiger Messwert Beschreibung Zahlungsmittel Einheit Attribute
storage.googleapis.com/client/grpc/xds_client/connected Preview: Gibt an, ob der xDS-Client einen funktionierenden ADS-Stream zum xDS-Server hat. Für einen bestimmten Server wird dieser Messwert auf 1 gesetzt, wenn der Stream erstellt wird. Bei einem Verbindungsfehler oder wenn der ADS-Stream ohne Antwortmeldung gemäß A57 fehlschlägt, wird der Messwert auf 0 gesetzt. Wenn der Wert auf 0 festgelegt 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. Bei Servern ist das der String "#server".
  • grpc.xds.server: Der Ziel-URI des xDS-Servers, mit dem 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-Channels an, in dem XdsClient verwendet wird. Bei Servern ist das 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/resource_updates_valid Preview: Die Anzahl der empfangenen Ressourcen, die als gültig betrachtet wurden, auch wenn sie unverändert waren. 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-Channels an, in dem XdsClient verwendet wird. Bei Servern ist das 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-Channels an, in dem XdsClient verwendet wird. Für Server ist das 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 Cachestatus 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 richtig 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 wird hier das Ziel des gRPC-Channels angegeben, in dem XdsClient verwendet wird. Für Server ist dies der String "#server".

Weitere Informationen zu xDS-Clientmesswerten finden Sie in der Dokumentation zu xDS-basiertem 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 von clientseitigen Messwerten für die gRPC API mit Cloud-Clientbibliotheken für C++ finden Sie unter Struct 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.

Nächste Schritte