Logging und Monitoring für Application Load Balancer- und Cloud CDN-Plug-ins

Auf dieser Seite erfahren Sie, wie Sie Cloud Logging und Cloud Monitoring mit Service Extensions-Plug-ins für Cloud Load Balancing und Cloud CDN konfigurieren und verwenden.

Logging

In diesem Abschnitt wird die Protokollierung für Application Load Balancer-Plug-ins beschrieben. Die Protokollierung ist sowohl aus der Perspektive des Plug-ins als auch aus der Perspektive des Load-Balancers möglich.

Logeinträge

Mit Service Extensions können Sie während der Ausführung Ihres Plugins Logmeldungen generieren. Das Aufzeichnen von Logs ist standardmäßig deaktiviert. Wenn Sie Logs für ein Plug-in aufzeichnen möchten, aktivieren Sie es, wenn Sie das Plug-in erstellen oder aktualisieren.

Plugin-Logeinträge werden mit den folgenden Kontextinformationen versehen:

  • Standardmäßige Log-Anmerkungen wie Zeitstempel und Logebene.
  • Die Identität des Plug-ins, das die Nachricht generiert hat.
  • Das Plug-in callback, in dem der Logeintrag generiert wurde.
  • Eine requestId-Trace-ID, mit der das Anfragelog ermittelt werden kann, dem ein Logeintrag zugeordnet ist.

Logs, die sich auf Service Extensions beziehen, fallen in eine der folgenden Kategorien:

  • Plug-in-Logeinträge

    Wird durch einen Logging-Aufruf wie info!(...) für Rust, proxywasm.LogInfo(...) für Go oder LOG_INFO für C++ generiert. Service Extensions exportiert diese Logmeldungen nach Cloud Logging. Sie können Anfrage- und Antwortheader sowie alle Aktionen protokollieren, die das Plug-in ausgeführt hat.

    Sie können diese Nachrichten über den networkservices.googleapis.com-Dienst aufrufen.

  • Cloud Load Balancing-Logmeldungen

    Sie können diese Nachrichten über den loadbalancing.googleapis.com-Dienst aufrufen.

Protokollierung aus der Perspektive des Plug-ins

In diesem Abschnitt wird das Logging von Service Extensions aus der Perspektive des Plugins beschrieben.

Logging für ein Plug-in aktivieren

Mit Service Extensions können Sie während der Ausführung Ihres Plugins Logmeldungen generieren. Das Aufzeichnen von Logs ist standardmäßig deaktiviert.

Wenn Sie Logs für ein Plug-in aufzeichnen möchten, aktivieren Sie es, wenn Sie das Plug-in erstellen oder aktualisieren.

Verwenden Sie den gcloud service-extensions wasm-plugins update-Befehl, um das Logging für ein vorhandenes Plug-in zu aktivieren:

gcloud service-extensions wasm-plugins update WASM_PLUGIN \
    --log-config=[LOG_CONFIG,...]

Ersetzen Sie Folgendes:

  • WASM_PLUGIN: die ID oder der voll qualifizierte Name des Plug-ins
  • LOG_CONFIG: Logging-Optionen für das Plug-in. Wenn Sie das Logging aktivieren möchten, legen Sie die Option enable auf true fest. Geben Sie dann die folgenden Details an:

    • sample-rate: Die Abtastrate von Aktivitätsprotokollen als Wert zwischen 0 und 1. Der Wert 0 gibt an, dass keine Logmeldungen gespeichert werden. Der Standardwert 1 gibt an, dass alle Log-Nachrichten gespeichert werden. Ein Gleitkommawert zwischen 0.0 und 1.0 gibt an, dass ein bestimmter Prozentsatz der Log-Nachrichten gespeichert wird.
    • min-log-level: die minimale Schweregradstufe von Plug-in-Log-Nachrichten, die nach Cloud Logging exportiert werden sollen. Der Standardwert ist INFO.

Nachdem Sie das Logging für das Plug-in aktiviert haben, können Sie die von Logging-Anweisungen im Plug-in-Code ausgegebenen Nachrichten in Cloud Logging ansehen.

Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf, um sich Logs anzusehen.

Lognachrichten für Plugins ansehen

Logs können im Log-Explorer durch Erstellen von Abfragen aufgerufen werden.

Sie können Plug-in-Logs als eigenständige Service Extensions-Logs ansehen. In dieser Ansicht wird jede Plug-in-Logmeldung in einem eigenen Logeintrag aufgezeichnet und nicht automatisch mit Informationen aus dem Anfragelog verknüpft.

Diese Logmeldungen befinden sich im Log networkservices.googleapis.com/wasm_plugin_activity mit dem Ressourcentyp networkservices.googleapis.com/WasmPluginVersion.

Das System fügt diesem Log möglicherweise auch informative Logmeldungen hinzu. Wenn beispielsweise ein Plug-in-Fehler auftritt, weil ein Plug-in-Aufruf die CPU- oder Arbeitsspeicherlimits überschreitet, wird eine Meldung mit dem Schweregrad ERROR protokolliert. Solche Meldungen können auch unter Fehler ansehen und filtern aufgerufen werden.

Beispiele für Plug‑in-Logs

Beispiel für einen Logeintrag für Service Extensions Der Wert von message wird an den LOG_INFO-Aufruf des Plug-ins übergeben. Der Wert severity hängt von der Logebene ab, die im Plugin-Logaufruf verwendet wird. Im Abschnitt labels ist der Wert der API HTTP_REQUEST_HEADER. Das bedeutet, dass der protokollierte Vorgang der on_http_request_headers-Plugin-Callback ist.

{
  "insertId": "65224aac-0000-24bd-a0e1-582429bd544c@a1",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.networkservices.logging.v1.WasmPluginLogEntry",
    "metroIataCode": "ber",
    "proxyRegionCode": "DE",
    "message": "[add_header_plugin.cc:26]::onRequestHeaders() AddHeaderStreamContext::onRequestHeaders called",
    "requestId": "effc0311-6716-431b-9e2a-7586835fdff1"
  },
  "resource": {
    "type": "networkservices.googleapis.com/WasmPluginVersion",
    "labels": {
      "plugin_version": "prod-1",
      "resource_container": "projects/123456789",
      "location": "global",
      "plugin_name": "add-headers-plugin-prod-resource"
    }
  },
  "timestamp": "2023-05-10T03:05:43.317015458Z",
  "severity": "INFO",
  "labels": {
    "networkservices.googleapis.com/operation": "HTTP_REQUEST_HEADERS"
  },
  "logName": "projects/123456789/logs/networkservices.googleapis.com%2Fwasm_plugin_activity",
  "trace": "projects/123456789/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:44.207265284Z"
}

Einschränkungen für das Logging

Plug-ins können maximal 16 KiB Nutzlastdaten pro Client-HTTP-Anfrage protokollieren. Dieser Betrag wird auf mehrere Protokollierungsaufrufe aufgeteilt, die mit einer bestimmten HTTP-Anfrage verknüpft sind. Das Limit gilt nur für den Text von Logmeldungen, nicht für zusätzliche Metadaten, die dem Logeintrag von Diensterweiterungen hinzugefügt werden.

Wenn beispielsweise ein on_http_request_headers-Callback zwei Logging-Aufrufe mit jeweils 4 KiB großen Nachrichten ausführt und ein on_http_response_headers-Callback dann versucht, drei Logging-Aufrufe mit jeweils 4 KiB großen Nachrichten für dieselbe HTTP-Anfrage auszuführen, wird die dritte Logging-Nachricht verworfen. Es wird ein Logeintrag hinzugefügt, um die Anzahl der vom Plug-in generierten Logeinträge zu erfassen, die verworfen wurden.

Protokollierung aus Load-Balancer-Sicht

In diesem Abschnitt wird das Logging von Service Extensions aus der Perspektive des Load Balancers beschrieben.

Logging für einen Backend-Dienst aktivieren

Sie können das Logging für Application Load Balancer-Plug-ins aktivieren, wenn Sie einen Dienst erstellen. Dazu aktivieren Sie das Logging für den Backend-Dienst, der das Ziel einer Anfrage ist.

Verwenden Sie den Befehl gcloud compute backend-services update, um das Logging für den Ziel-Backend-Dienst zu aktivieren.

gcloud compute backend-services update BACKEND_SERVICE \
    --enable-logging \
    --logging-sample-rate=RATE \
    --region=REGION \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

Ersetzen Sie Folgendes:

  • BACKEND_SERVICE: der Name des Backend-Dienstes.
  • RATE: Ein Wert zwischen 0.0 und 1.0, wobei 0.0 bedeutet, dass keine Anfragen protokolliert werden, und 1.0 bedeutet, dass 100% der Anfragen protokolliert werden. Der Standardwert ist 1.0. Diese Einstellung ist nur in Verbindung mit dem Parameter enable-logging wirksam. Wenn Sie enable-logging weglassen, ist das Logging deaktiviert.
  • REGION ist die Region des Backends.
  • LOGGING_OPTIONAL_MODE: Aktiviert das Logging für optionale Felder in einem der folgenden Modi:

    • INCLUDE_ALL_OPTIONAL umfasst alle optionalen Felder.
    • EXCLUDE_ALL_OPTIONAL (Standard) schließt alle optionalen Felder aus.
    • CUSTOM enthält eine benutzerdefinierte Liste optionaler Felder.
  • OPTIONAL_FIELDS: eine durch Kommas getrennte Liste optionaler Felder, wenn Sie den Modus CUSTOM auswählen

Nachdem Sie das Logging für den Backend-Dienst aktiviert haben, werden HTTP- oder HTTPS-Anfragen mit Cloud Logging protokolliert.

Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf, um sich Logs anzusehen.

Nachrichten für einen Backend-Dienst protokollieren

Im Allgemeinen enthalten Application Load Balancer-Logeinträge Informationen, die für das Monitoring und die Fehlerbehebung bei Ihrem HTTP- oder HTTPS-Traffic nützlich sind. Folgende Informationen sind in ihnen enthalten:

  • Informationen, die in den meisten Logs von Google Cloud angezeigt werden, wie z. B. Schweregrad, Projekt-ID, Projektnummer und Zeitstempel, wie im LogEntry-Log beschrieben.
  • HttpRequest-Logfelder.

Anfragelogs für HTTP- und HTTPS-Load-Balancer enthalten ein service_extension_info-Objekt in der JSON-Nutzlast des Load-Balancer-Logeintrags mit den folgenden Informationen:

Feld Typ Beschreibung
backend_target_name String Name des Backend-Ziels der Erweiterung.
backend_target_type String Typ des Backend-Ziels.
chain String Der Name der Erweiterungskette in der Diensterweiterungsressource, die der Anfrage entspricht.
extension String Name der Erweiterung in der Erweiterungskette.
failed_open boolean Wenn in der Erweiterungskonfiguration failOpen auf true gesetzt ist, bedeutet der Wert true für diesen Messwert, dass die Verarbeitung fortgesetzt wurde, als für die Erweiterung ein Zeitlimit überschritten wurde oder ein Fehler aufgetreten ist.

Gilt nur für regionale externe Application Load Balancer, regionale interne Application Load Balancer und regionenübergreifende interne Application Load Balancer.

grpc_status enum Der aktuelle Status des gRPC-Streams. Weitere Informationen finden Sie unter gRPC-Statuscodes.
per_processing_request_info Array Eine Liste mit entweder ProcessingRequest-Statistiken für ext_proc-Erweiterungen oder CheckRequest-Statistiken für ext_authz-Erweiterungen, die über den gRPC-Stream erfolgen.
per_processing_request_info[].event_type enum Der Ereignistyp von ProcessingRequest. Kann einer der folgenden Werte sein: REQUEST_HEADERS, REQUEST_BODY, RESPONSE_HEADERS oder RESPONSE_BODY.
per_processing_request_info[].latency Dauer Die Dauer ab dem Zeitpunkt, an dem das erste Byte der ProcessingRequest-Nachricht an die Erweiterung gesendet wird, bis zu dem Zeitpunkt, an dem das letzte Byte der ProcessingResponse-Nachricht empfangen wird.
per_processing_request_info[].processing_effect enum Das Ergebnis der Verarbeitung für jedes Ereignis in einer Verarbeitungsanfrage.

Gilt nur für regionale externe Application Load Balancer, regionale interne Application Load Balancer und regionenübergreifende interne Application Load Balancer.

Kann einer der folgenden Werte sein:

  • NONE: Gibt an, dass Inhalte nicht geändert wurden.
  • NONE_FAILED_OPEN: gibt an, dass keine Mutationen ausgeführt wurden, da die Erweiterung fehlgeschlagen ist.
  • CONTENT_MODIFIED: Gibt an, dass Inhalte durch eine erfolgreich angewendete Mutationsanfrage geändert wurden.
  • IMMEDIATE_RESPONSE: Gibt an, dass die Erweiterung eine sofortige Antwort gesendet hat, um die weitere Verarbeitung zu beenden.
  • MUTATION_REJECTED: Gibt an, dass für die Erweiterung mindestens eine unzulässige Änderung angefordert wurde und die weitere Verarbeitung eingestellt wurde. Es werden entsprechende Fehlermeldungen protokolliert.
  • UNSPECIFIED: Gibt an, dass die Auswirkungen der Verarbeitung nicht bekannt sind.
per_processing_request_info[].processing_effect_details String Wenn processing_effect gleich MUTATION_REJECTED ist, werden die Gründe für die Ablehnung einer Mutation angegeben.

Gilt nur für regionale externe Application Load Balancer, regionale interne Application Load Balancer und regionenübergreifende interne Application Load Balancer.

resource String Name der Erweiterungsressource

Monitoring

In diesem Abschnitt wird beschrieben, wie Sie Cloud Monitoring-Dashboards verwenden können, um Messwerte für Application Load Balancer-Plug-ins aufzurufen, die mit Service Extensions konfiguriert werden. Sie können Plug-ins entweder aus der Plug-in- oder aus der Load-Balancer-Perspektive überwachen.

Monitoring aus der Perspektive von Plug-ins

In diesem Abschnitt wird die Überwachung von Service Extensions aus der Perspektive von Plug-ins beschrieben.

Ausführliche Informationen zu Messwerttypen für Service Extensions finden Sie auf der Seite Google Cloud -Messwerte.

Monitoring-Dashboard für Service Extensions aufrufen

So rufen Sie das Monitoring-Dashboard für Service Extensions auf:

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

    Zu den Service Extensions

  2. Klicken Sie auf den Tab Plugins.
  3. Klicken Sie auf den Namen eines Plug-ins.
  4. Klicken Sie auf der Seite Plug-in-Details auf den Tab Monitoring.
  5. Auf der Seite Monitoring enthalten die Messwertdiagramme Informationen, mit denen Sie die Leistung von Plug-ins im Blick behalten können.

  6. Wenn Sie die Messwerte für Plugin-Lebenszyklusvorgänge aufrufen möchten, wählen Sie Werte aus der Liste Vorgangsfilter aus. Standardmäßig sind die Werte HTTP request header und HTTP response header ausgewählt.
  7. Wenn Sie die Messwerte für eine bestimmte Plug‑in-Version aufrufen möchten, wählen Sie einen Wert aus der Liste Filter für Plug‑in-Version aus. Standardmäßig werden Messwerte für alle Versionen angezeigt.
  8. Wenn Sie den Zeitraum ändern möchten, für den Sie die Daten aufrufen möchten, wählen Sie entweder einen vordefinierten Zeitraum aus der Zeitachse aus oder klicken Sie auf Benutzerdefiniert und definieren Sie eine Start- und Endzeit. Standardmäßig ist die Auswahl auf 1 day eingestellt.

Plug-in-Messwerte für Service Extensions

Sie können die folgenden Messwerte für Plug-ins aus der Perspektive von Service Extensions überwachen. Diese Messwerte haben das Präfix networkservices.googleapis.com/wasm_plugin/. Das Präfix wurde in den Einträgen der Tabelle weggelassen.

Messwerttyp Anzeigename
Art, Typ, Einheit
Beschreibung
invocation_count Anzahl der Aufrufe des Wasm-Plug-ins
DELTAINT641
Die Anzahl der Aufrufe des Plug-ins im ausgewählten Zeitraum. Jeder Aufruf eines Rückrufs eines Plugins wird als separater Plugin-Aufruf gezählt.
invocation_latencies Aufruflatenz des Wasm-Plug-ins
DELTADISTRIBUTIONus
Die lokale Ausführungszeit des Plug-ins in Millisekunden. Der Messwert enthält labelbasierte Einträge für jeden Callback.
cpu/usage_times Normalisierte CPU-Nutzung des Wasm-Plug-ins
DELTADISTRIBUTIONus{CPU}
Die CPU-Nutzungszeit von Plug-in-Aufrufen in Mikrosekunden.
memory/bytes_used Arbeitsspeichernutzung des Wasm-Plug-ins
GAUGEDISTRIBUTIONBy
Gesamter von Wasm-Plug-in-VMs zugewiesener Arbeitsspeicher in Byte.

Monitoring aus der Sicht des Load-Balancers

In diesem Abschnitt wird die Überwachung von Service Extensions für Plug-ins aus der Perspektive des Load Balancers beschrieben.

Monitoring-Dashboard für Cloud Load Balancing aufrufen

Application Load Balancer exportieren Monitoringdaten nach Cloud Monitoring.

Monitoring-Messwerte können für Folgendes verwendet werden:

  • Bewertung der Konfiguration, Nutzung und Leistung eines Load-Balancers
  • Fehlerbehebung
  • Verbesserung der Ressourcenauslastung und Nutzerfreundlichkeit

So rufen Sie ein vordefiniertes Dashboard auf:

  1. Rufen Sie in der Google Cloud Console die Seite Dashboard-Übersicht auf.

    Zur Dashboard-Übersicht

  2. Klicken Sie im Bereich Kategorien auf GCP.
    • Wenn Sie eine Liste der Dashboards für alle Ihre Load-Balancer aufrufen möchten, klicken Sie in der Liste GCP-Dashboards auf das Dashboard mit dem Namen Google Cloud-Load-Balancer. Wenn Sie das Dashboard eines bestimmten Load-Balancers aufrufen möchten, suchen Sie den Load-Balancer in der Liste und klicken Sie auf den Namen.
    • Wählen Sie das entsprechende Dashboard aus, um nur die vordefinierten Dashboards für Ihre Load Balancer aufzurufen.

Zusätzlich zu den vordefinierten Dashboards in Monitoring können Sie über die Cloud Monitoring API benutzerdefinierte Dashboards erstellen, Benachrichtigungen einrichten und Messwerte abrufen.

Plugin-Messwerte für Cloud Load Balancing

Sie können die folgenden Messwerte für Plug-ins aus der Perspektive von Cloud Load Balancing überwachen.

In der Vorschau können Sie die folgenden Messwerte für Erweiterungen für regionale externe Application Load Balancer, regionale interne Application Load Balancer und regionenübergreifende interne Application Load Balancer überwachen. Diese Messwerte haben das Präfix networkservices.googleapis.com. Das Präfix wurde in den Einträgen der folgenden Tabelle weggelassen.

In der folgenden Tabelle finden Sie den Messwerttyp, den Anzeigenamen, die Art, den Typ, die Einheit und die Beschreibung für jeden Messwert.

Messwerttyp Anzeigename
Art, Typ, Einheit
Beschreibung
extension/invocation_count Anzahl der Erweiterungsaufrufe
DELTAINT641
Die Anzahl der an die Erweiterung gesendeten Aufrufe.
extension/invocation_latencies Latenzen beim Aufrufen von Erweiterungen
DELTADISTRIBUTIONms
Die Verteilung, die aus der Latenz jedes Aufrufs von Erweiterungen berechnet wird.
extension/sent_chunks_count Anzahl der gesendeten Chunks für Erweiterungen
DELTAINT641
Gilt nur für request_body- und response_body-Ereignisse. Die Anzahl der an die Erweiterung gesendeten Datenblöcke.
extension/received_chunks_count Anzahl der empfangenen Chunks für Erweiterung
DELTAINT641
Gilt nur für request_body- und response_body-Ereignisse. Die Anzahl der von der Erweiterung empfangenen Chunks.
extension/failed_open_count Fehlgeschlagene Aufrufe von Erweiterungen mit Fail-Open
DELTAINT641
Die Anzahl der fehlgeschlagenen Aufrufe, wenn das System für Fail-Open konfiguriert war und die Anfrage fortgesetzt werden durfte.
extension/mutation_rejections Anzahl der Ablehnungen von Erweiterungsänderungen
DELTAINT641
Die Anzahl der Aufrufe, bei denen Header-, Text- oder Trailer-Änderungen angefordert wurden, die jedoch abgelehnt wurden. Ablehnungen können aus verschiedenen Gründen erfolgen, z. B. wenn die Mutation ungültig ist oder Größenbeschränkungen überschreitet.
extension/sent_bytes_count Anzahl der von der Erweiterung gesendeten Byte
DELTAINT64By
Die Anzahl der an die Erweiterung gesendeten Byte.
extension/received_bytes_count Anzahl der von der Erweiterung empfangenen Byte
DELTAINT64By
Die Anzahl der von der Erweiterung empfangenen Byte.

Sie können auch die folgenden Messwerte im Blick behalten. Diese Messwerte haben das Präfix loadbalancing.googleapis.com/. Das Präfix wurde in den Einträgen der Tabelle weggelassen.

Messwerttyp Anzeigename
Art, Typ, Einheit
Beschreibung
https/backend_request_count,
https/external/regional/backend_request_count,
https/internal/backend_request_count
Anzahl der Backend-Anfragen
DELTAINT641
Die Anzahl der Aufrufe eines Plug-ins durch den Application Load Balancer.
https/backend_request_bytes_count,
https/external/regional/backend_request_bytes_count,
https/internal/backend_request_bytes_count
Backend-Anfragebyte
DELTAINT64By
Die Anzahl der Byte, die vom Load-Balancer an das Plug-in gesendet wurden.
https/backend_response_bytes_count,
https/external/regional/backend_response_bytes_count,
https/internal/backend_response_bytes_count
Backend-Antwortbyte
DELTAINT64By
Die Anzahl der Byte, die der Load Balancer vom Erweiterungs-Backend empfangen hat.

Plug‑in-Messwerte ansehen

So rufen Sie die Messwerte eines bestimmten Plug-ins auf:

  1. Wechseln Sie in der Google Cloud Console zur Seite Metrics Explorer.

    Zu Metrics Explorer

  2. Maximieren Sie im Element Messwert das Menü Messwert auswählen. Gehen Sie dann so vor:

    1. Wählen Sie in der Liste der Ressourcen die entsprechende Application Load Balancer-Regel aus.

    2. Wählen Sie in der Liste der Messwertkategorien Https aus.

    3. Wählen Sie in der Messwertliste einen Plug‑in-Messwert aus.

    4. Klicken Sie auf Übernehmen.

  3. Gehen Sie im Element Filter so vor:

    1. Wählen Sie das Label backend_target_type aus und legen Sie den Wert auf WASM_PLUGIN fest.

    2. Wählen Sie das Label backend_target_name aus und legen Sie den Plug-in-Namen als Wert fest.

Weitere Informationen zu Load-Balancer-Messwerttypen finden Sie im Abschnitt loadbalancing auf der Seite Google Cloud Messwerte.