Logging und Monitoring für Media CDN-Plug-ins

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

Logging

In diesem Abschnitt werden die Service Extensions-Logs für Media CDN-Plug-ins beschrieben und wie Sie die Informationen in Logeinträgen aufrufen und korrelieren können.

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 oder LOG_INFO fü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.com aufrufen.

  • Media CDN-Logeinträge

    Media CDN-Logeinträge für HTTP-Anfragen an EdgeCacheService-Ressourcen mit einem verknüpften CdnEdgeExtension. Dies sind reguläre Media CDN-Logeinträge, die Sie unter dem Dienst edgecache.googleapis.com aufrufen können.

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 beta service-extensions wasm-plugins update, um das Logging für ein vorhandenes Plug-in zu aktivieren:

gcloud beta 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-ins
  • LOG_CONFIG: Logging-Optionen für das Plug-in. Legen Sie für die Option enable den Wert true fest, um das Logging zu aktivieren. 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 Logeinträge nicht gespeichert werden. Der Standardwert 1 gibt an, dass alle Logeinträge gespeichert werden. Ein Gleitkommawert zwischen 0.0 und 1.0 gibt 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 ist INFO.

Nachdem Sie das Logging für das Plug-in aktiviert haben, können Sie sich 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.

Logeinträge 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 networkactions.googleapis.com/wasm_plugin_activity mit dem Ressourcentyp networkactions.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.

Sie können auch Logeinträge, die mit den entsprechenden Media CDN-Anfragelogs korreliert sind, im Log-Explorer aufrufen. Wenn Sie sich Anfragelogs ansehen und einen Anfragelogeintrag maximieren, werden die mit der Anfrage verknüpften Plug-in-Logs unter dem Anfragelog verschachtelt angezeigt. In dieser Ansicht können Sie Plug-in-Logs im Kontext der zugehörigen Anfrage nachvollziehen.

Logbeispiele

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.networkactions.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": "networkactions.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": {
    "networkactions.googleapis.com/operation": "HTTP_REQUEST_HEADERS"
  },
  "logName": "projects/123456789/logs/networkactions.googleapis.com%2Fwasm_plugin_activity",
  "trace": "projects/123456789/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:44.207265284Z"
}
Der zugehörige Media CDN-Logeintrag sieht so aus: Die Werte für requestId und trace sind in beiden Logeinträgen identisch.
{
  "insertId": "6c95cc54-0000-26ba-ba73-f403043c328c@a1",
  "jsonPayload": {
    "cacheMode": "USE_ORIGIN_HEADERS",
    "@type": "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
        "serviceExtensionInfo": [
      {
        "serviceExtension": "projects/123456789/locations/global/cdnEdgeExtensions/my-cdn-edge-extension",
        "chain": "edge-plugin-chain",
        "extension": "auth-and-header-plugin",
        "grpcStatus": "OK",
        "processingRequests": [
          {
            "eventType": "RESPONSE_HEADERS",
            "processingEffect": "CONTENT_MODIFIED"
          }
        ]
      }
    ],
    "cacheKeyFingerprint": "f04d02bb12f2e79e",
    "proxyStatus": "Google-Edge-Cache",
    "clientCity": "Erlangen",
    "clientAsn": "8881",
    "origin": "example-origin",
    "cacheId": "ber",
    "tlsVersion": "NONE",
    "latency": "0.002840304s",
    "originIp": "142.250.145.128",
    "requestId": "effc0311-6716-431b-9e2a-7586835fdff1",
    "clientRegionCode": "DE",
    "originalRequestId": "7656c418-df7c-4ae5-9db5-4f247ec5a82c",
    "httpTtfb": "0.002814903s",
    "metroIataCode": "BER",
    "proxyRegionCode": "DE",
    "cacheStatus": "hit"
  },
  "httpRequest": {
    "requestMethod": "GET",
    "requestUrl": "https://example.com/image.jpg",
    "requestSize": "1631",
    "status": "200",
    "responseSize": "402907",
    "userAgent": "Wtrace",
    "remoteIp": "2001:1438:1:19::5",
    "protocol": "HTTP/1.1"
  },
  "resource": {
    "type": "edgecache.googleapis.com/EdgeCacheRouteRule",
    "labels": {
      "location": "global",
      "route_destination": "projects/123456789/locations/global/edgeCacheOrigins/example-origin",
      "matched_path": "/turing/",
      "route_type": "ORIGIN",
      "path_matcher_name": "routes",
      "resource_container": "projects/123456789",
      "service_name": "example-service"
    }
  },
  "timestamp": "2023-05-10T03:05:43.321347304Z",
  "logName": "projects/bdn-prober/logs/edgecache.googleapis.com%2Fedge_cache_request",
  "trace": "projects/1069774196212/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:49.919781008Z"
}

Beschränkungen

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.

Monitoring

In diesem Abschnitt wird beschrieben, wie Sie mit Cloud Monitoring-Dashboards Service Extensions-Messwerte für Media CDN-Plug-ins aufrufen können.

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:

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

    Zu den Diensterweiterungen

  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 finden Sie Messwertdiagramme mit Informationen, die Ihnen helfen können, die Leistung des Plug-ins zu überwachen.

  6. 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 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 Plug-in-Versionsfilter 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 Zeitauswahl aus oder klicken Sie auf Benutzerdefiniert und definieren Sie eine Start- und Endzeit. Standardmäßig ist die Auswahl auf 1 day festgelegt.

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 networkactions.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-Messwerte für Diensterweiterungen für Media CDN

Sie können Media CDN-Edge-Erweiterungen im Monitoring Metrics Explorer aus der Perspektive EdgeCacheService überwachen:

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

    Zum Metrics Explorer

  2. Wählen Sie die überwachte Ressource Media CDN Service Extension aus.

  3. Wählen Sie die Messwertkategorie Erweiterung aus.

  4. Filtern Sie nach dem Label extension_service, das auf den Namen Ihres Plug-ins festgelegt ist.

In der Vorabversion können Sie die folgenden Messwerte für Erweiterungen in Media CDN überwachen. Diese Messwerte haben das Präfix networkactions.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.