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 das Logging für Application Load Balancer-Plug-ins beschrieben. Logging ist sowohl aus der Perspektive des Plug-ins als auch aus der Perspektive des Load Balancers möglich.
Logeinträge
Service Extensions unterstützt das Generieren von Logeinträgen während der Ausführung Ihres Plug-ins. 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.
Plug-in-Logeinträge werden mit den folgenden Kontextinformationen annotiert:
- Standardmäßige Logannotationen wie Zeitstempel und Logebene.
- Die Identität des Plug-ins, das die Nachricht generiert hat.
- Der Callback des Plug-ins, in dem die Logeintrag generiert wurde.
- Eine
requestId-Trace-ID, mit der das Anfragelog ermittelt werden kann, mit dem ein Logeintrag verknüpft ist.
Logs, die für Service Extensions relevant sind, gehören zu einer der folgenden Kategorien:
Plug-in-Logeinträge
Wird durch einen Logging-Aufruf generiert, z. B.
info!(...)für Rust,proxywasm.LogInfo(...)für Go oderLOG_INFOfür C++. Service Extensions exportiert diese Logeinträge nach Cloud Logging. Sie können Anfrage- und Antwortheader sowie alle vom Plug-in ausgeführten Aktionen protokollieren.Sie können diese Nachrichten mit dem Dienst
networkservices.googleapis.comaufrufen.Cloud Load Balancing-Logeinträge
Sie können diese Nachrichten mit dem Dienst
loadbalancing.googleapis.comaufrufen.
Logging aus der Perspektive des Plug-ins
In diesem Abschnitt wird das Logging von Service Extensions aus der Perspektive des Plug-ins beschrieben.
Logging für ein Plug-in aktivieren
Service Extensions unterstützt das Generieren von Logeinträgen während der Ausführung Ihres Plug-ins. 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 Befehl gcloud service-extensions wasm-plugins update, 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 vollständig qualifizierte Name des Plug-insLOG_CONFIG: Logging-Optionen für das Plug-in. Legen Sie für die Optionenableden Werttruefest, um das Logging zu aktivieren. Geben Sie dann die folgenden Details an:sample-rate: die Abtastrate von Aktivitätsprotokollen als Wert zwischen0und1. Der Wert0gibt an, dass Logeinträge nicht gespeichert werden. Der Standardwert1gibt an, dass alle Logeinträge gespeichert werden. Ein Gleitkommawert zwischen0.0und1.0gibt an, dass ein Prozentsatz der Logeinträge gespeichert wird.min-log-level: die niedrigste Wichtigkeitsstufe von Plug-in-Logeinträgen, die nach Cloud Logging exportiert werden sollen. Der Standardwert istINFO.
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf, um sich Logs anzusehen.
Logeinträge für Plug-ins ansehen
Logs können durch Erstellen von Abfragen im Log-Explorer aufgerufen werden.
Sie können Plug-in-Logs als eigenständige Service Extensions-Logs ansehen. In dieser Ansicht wird jede Plug-in-Lognachricht in einem eigenen Logeintrag aufgezeichnet und nicht automatisch mit Anfrageloginformationen verknüpft.
Diese Logeinträge befinden sich im Log networkservices.googleapis.com/wasm_plugin_activity mit dem Ressourcentyp networkservices.googleapis.com/WasmPluginVersion.
Das System kann diesem Log auch informative Logeinträge hinzufügen.
Wenn beispielsweise ein Plug-in-Fehler auftritt, weil ein Plug-in-Aufruf die CPU- oder Arbeitsspeicherlimits überschreitet, wird eine Nachricht mit dem Schweregrad ERROR protokolliert. Solche Meldungen werden auch unter Fehler ansehen und filtern angezeigt.
Beispiele für Plug-in-Logs
Beispiel für einen Logeintrag für Diensterweiterungen: 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 Logaufruf des Plug-ins verwendet wird. Im Abschnitt labels ist der Wert der API HTTP_REQUEST_HEADER. Das bedeutet, dass der protokollierte Vorgang der on_http_request_headers-Plug-in-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 HTTP-Anfrage des Clients protokollieren. Dieser Betrag wird auf mehrere Logging-Aufrufe aufgeteilt, die mit einer bestimmten HTTP-Anfrage verknüpft sind. Das Limit gilt nur für den Text von Logeinträgen, 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-Logeinträgen ausführt und dann ein on_http_response_headers-Callback versucht, drei Logging-Aufrufe mit jeweils 4 KiB-Logeinträgen für dieselbe HTTP-Anfrage auszuführen, wird der fünfte Logeintrag verworfen. Es wird ein Logeintrag hinzugefügt, um die Anzahl der vom Plug-in generierten Logeinträge aufzuzeichnen, die verworfen wurden.
Logging aus der Perspektive des Load Balancers
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 beim Erstellen eines Dienstes aktivieren, indem Sie das Logging für den Backend-Dienst aktivieren, 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 zwischen0.0und1.0, wobei0.0dazu führt, dass keine Anfragen in Logs erfasst werden, und1.0bedeutet, dass 100% der Anfragen in Logs erfasst werden. Der Standardwert ist1.0. Diese Einstellung ist nur wirksam, wenn sie mit dem Parameterenable-loggingverwendet wird. Wenn Sieenable-loggingweglassen, ist das Logging deaktiviert.REGION: die Region des BackendsLOGGING_OPTIONAL_MODE: Aktiviert das Logging für optionale Felder in einem der folgenden Modi:INCLUDE_ALL_OPTIONALenthält alle optionalen Felder.EXCLUDE_ALL_OPTIONAL(Standard): Zum Ausschließen aller optionalen Felder.CUSTOMenthält eine benutzerdefinierte Liste optionaler Felder.
OPTIONAL_FIELDS: eine durch Kommas getrennte Liste optionaler Felder, wenn Sie den ModusCUSTOMauswä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.
Logeinträge für einen Backend-Dienst
Im Allgemeinen enthalten Logeinträge für Application Load Balancer Informationen, die für das Monitoring und die Fehlerbehebung bei Ihrem HTTP- oder HTTPS-Traffic nützlich sind. Log-Einträge enthalten die folgenden Informationen:
- Informationen, die in den meisten Logs von Google Cloud angezeigt werden, wie z. B. Schweregrad, Projekt-ID, Projektnummer und Zeitstempel, wie im Log LogEntry beschrieben.
- HttpRequest-Logfelder.
Anfrageprotokolle 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 | Name der Erweiterungskette in der Diensterweiterungsressource, die der Anfrage entspricht. |
extension |
String | Name der Erweiterung innerhalb der Erweiterungskette. |
failed_open |
boolean | Wenn in der Erweiterungskonfiguration failOpen auf true gesetzt ist, gibt der Wert true für diesen Messwert an, dass die Verarbeitung fortgesetzt wurde, wenn die Erweiterung das Zeitlimit überschritten hat oder fehlgeschlagen 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 auftreten.
|
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:
|
per_processing_request_info[].processing_effect_details |
String | Wenn processing_effect den Wert MUTATION_REJECTED hat, die Details dazu, warum eine Mutation abgelehnt wurde.
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 mit Cloud Monitoring-Dashboards Messwerte für Application Load Balancer-Plug-ins aufrufen können, die mit Service Extensions konfiguriert wurden. Sie können Plug-ins entweder aus der Plug-in-Perspektive oder aus der Load-Balancer-Perspektive überwachen.
Monitoring aus der Perspektive von Plug-ins
In diesem Abschnitt wird das Monitoring von Service Extensions aus der Perspektive von Plug-ins beschrieben.
Ausführliche Informationen zu den Messwerttypen für Diensterweiterungen finden Sie auf der Seite Google Cloud -Messwerte.
Monitoring-Dashboard für Service Extensions ansehen
So rufen Sie das Monitoring-Dashboard für Service Extensions auf:
- Rufen Sie in der Google Cloud Console die Seite Service Extensions auf.
- Klicken Sie auf den Tab Plugins.
- Klicken Sie auf den Namen eines Plug-ins.
- Klicken Sie auf der Seite Plug-in-Details auf den Tab Monitoring.
- Wenn Sie die Messwerte für Vorgänge im Lebenszyklus des Plug-ins aufrufen möchten, wählen Sie Werte aus der Liste Vorgangsfilter aus. Standardmäßig sind die Werte
HTTP request headerundHTTP response headerausgewählt. - Wenn Sie die Messwerte für eine bestimmte Plug-in-Version aufrufen möchten, wählen Sie einen Wert aus der Liste Plug-in-Versionsfilter aus. Standardmäßig werden Messwerte für alle Versionen angezeigt.
- 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 Zeitauswahl aus oder klicken Sie auf Benutzerdefiniert und definieren Sie eine Start- und Endzeit. Standardmäßig ist die Auswahl auf
1 dayfestgelegt.
Auf der Seite Monitoring finden Sie Messwertdiagramme mit Informationen, die Ihnen helfen können, die Leistung des Plug-ins zu überwachen.
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 wird in den Einträgen der Tabelle weggelassen.
| Messwerttyp | Anzeigename
Art, Typ, Einheit Beschreibung |
|---|---|
invocation_count
|
Anzahl der Aufrufe des Wasm-Plug-ins
DELTA, INT64, 1
Die Anzahl der Aufrufe des Plug-ins im ausgewählten Zeitraum. Jeder Callback-Aufruf eines Plug-ins zählt als separater Plug-in-Aufruf. |
invocation_latencies
|
Aufruflatenz des Wasm-Plug-ins
DELTA, DISTRIBUTION, us
Die lokale Ausführungszeit des Plug-ins in Millisekunden. Der Messwert enthält durch Labels abgegrenzte Einträge für jeden Callback. |
cpu/usage_times
|
Normalisierte CPU-Nutzung des Wasm-Plug-ins
DELTA, DISTRIBUTION, us{CPU}
Die CPU-Nutzungszeit von Plug-in-Aufrufen in Mikrosekunden. |
memory/bytes_used
|
Arbeitsspeichernutzung des Wasm-Plug-ins
GAUGE, DISTRIBUTION, By
Gesamter von Wasm-Plug-in-VMs zugewiesener Arbeitsspeicher in Byte. |
Monitoring aus Sicht des Load Balancers
In diesem Abschnitt wird das Monitoring 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:
- Rufen Sie in der Google Cloud Console die Seite Dashboard-Übersicht auf.
- 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 anzeigen 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.
Plug-in-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 Vorabversion können Sie die folgenden Messwerte für Erweiterungen auf allen Arten von Application Load Balancern überwachen. Diese Messwerte haben das Präfix networkservices.googleapis.com.
Das Präfix wird 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
DELTA, INT64, 1
Die Anzahl der an die Erweiterung gesendeten Aufrufe. |
extension/invocation_latencies
|
Latenzen beim Aufruf von Erweiterungen
DELTA, DISTRIBUTION, ms
Die Verteilung, die aus der Latenz jedes Erweiterungsaufrufs berechnet wird. Gilt nur für Aufruferweiterungen; wird für Plug‑ins nicht unterstützt. |
extension/sent_chunks_count
|
Anzahl der von der Erweiterung gesendeten Chunks
DELTA, INT64, 1
Gilt nur für request_body- und response_body-Ereignisse.
Die Anzahl der Datenblöcke, die an die Erweiterung gesendet wurden. |
extension/received_chunks_count
|
Anzahl der von der Erweiterung empfangenen Chunks
DELTA, INT64, 1
Gilt nur für request_body- und response_body-Ereignisse.
Die Anzahl der von der Erweiterung empfangenen Chunks. |
extension/failed_open_count
|
Fehlgeschlagene Aufrufe der Erweiterung mit Fail-Open
DELTA, INT64, 1
Die Anzahl der fehlgeschlagenen Aufrufe, wenn das System für Fail-Open konfiguriert war und die Anfrage fortgesetzt werden durfte. |
extension/mutation_rejections_count
|
Anzahl der Ablehnungen von Erweiterungsmutationen
DELTA, INT64, 1
Die Anzahl der Aufrufe, die Anfrageheader-, Body- oder Trailer-Mutationen angefordert haben, aber abgelehnt wurden. Ablehnungen können aus verschiedenen Gründen auftreten, z. B. wenn die Mutation ungültig ist oder die Größenbeschränkungen überschreitet. |
extension/sent_bytes_count
|
Anzahl der von der Erweiterung gesendeten Byte
DELTA, INT64, By
Die Anzahl der an die Erweiterung gesendeten Byte. |
extension/received_bytes_count
|
Anzahl der von der Erweiterung empfangenen Byte
DELTA, INT64, By
Die Anzahl der von der Erweiterung empfangenen Byte. |
Sie können auch die folgenden Messwerte überwachen. Diese Messwerte haben das Präfix loadbalancing.googleapis.com/. Das Präfix wird 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
DELTA, INT64, 1
Die Anzahl der Aufrufe eines Plug-ins vom Application Load Balancer. |
https/backend_request_bytes_count,
https/external/regional/backend_request_bytes_count,
https/internal/backend_request_bytes_count
|
Backend-Anfragebyte
DELTA, INT64, By
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
DELTA, INT64, By
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:
Wechseln Sie in der Google Cloud Console zur Seite Metrics Explorer.
Maximieren Sie im Element Messwert das Menü Messwert auswählen. Führen Sie anschließend folgende Schritte aus:
Wählen Sie in der Liste der Ressourcen die entsprechende Regel für den Application Load Balancer aus.
Wählen Sie in der Liste der Messwertkategorien Https aus.
Wählen Sie aus der Liste der Messwerte einen Plug-in-Messwert aus.
Klicken Sie auf Übernehmen.
Gehen Sie im Element Filter so vor:
Wählen Sie das Label backend_target_type aus und legen Sie den Wert auf
WASM_PLUGINfest.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 mit den Google Cloud -Messwerten.