Media CDN protokolliert jede HTTP-Anfrage zwischen dem Client und dem Edge-Netzwerk in Cloud Logging. Logs werden in der Regel nahezu in Echtzeit gesendet. Dazu gehört, dass die Daten in Logging abgefragt und in Cloud Storage und Pub/Sub exportiert werden können.
Folgende Informationen sind in Ihnen enthalten:
- Allgemeine Informationen, die in Google Cloud-Logs angezeigt werden, wie Wichtigkeit, Projekt-ID, Projektnummer und den Zeitstempel.
- HttpRequest-Logfelder
Zusätzliche Metadaten zur Anfrage innerhalb von StructPayload, einschließlich:
- Client-ASN
- Clientstandortdaten
- ID (Stadt) der Caches, die zum Ausführen der Antwort verwendet werden
- TLS SNI-Hostname
- Verwendete TLS-Version
Cache-spezifische Felder
Das jsonPayload
-Objekt eines Media CDN-Logs enthält Metadaten, die angeben, wie Media CDN ein Objekt bereitstellt, ob das Objekt im Cache gespeichert wurde und welche Fehlerzustände aufgetreten sind.
Diese Felder sowie Beispielwerte sind in der folgenden Tabelle aufgeführt.
Feld | Beispielwert | Details |
---|---|---|
backendInitialLatency | 0.126644940s | Die Dauer, die das Back-End benötigt, um auf eine Anfrage zu antworten. Gemessen ab dem Zeitpunkt, an dem das CDN die Weiterleitung der Anfrage an den Ursprung beendet hat, bis das CDN beginnt, Antwortbytes vom Ursprung zu empfangen. Dieses Feld erscheint in den Logs nur, wenn der Cache von einer |
backendLatency | 0.126666342s | Die Dauer, die das Back-End benötigt, um vollständig auf eine Anfrage zu antworten. Gemessen ab dem Zeitpunkt, an dem das CDN die Weiterleitung der Anfrage an den Ursprung beendet hat, bis das CDN die vollständige Antwort vom Back-End erhalten hat. Dieses Feld erscheint in den Logs nur, wenn der Cache von einer |
cacheId | MAA-123456 |
Der IATA-Code (Flughafencode) der dem Cache nächstgelegenen Stadt und eine intransparente Kennzeichnung der Cache-Instanz. Wenn mehrere Cache-Ebenen erforderlich sind, um die Anforderung aufgrund eines vollständigen oder teilweisen Cache-Fehlers zu bedienen, wird die Kette der Cache-Speicherorte angegeben, z. B. del-234567, bom-345678, sin-456789 , wobei der Cache ganz rechts dem Nutzer am nächsten ist. |
cacheKeyFingerprint | f63925711b0dd8a9ff861cd303774e6e | Ein intransparenter Fingerabdruck des Cache-Schlüssels. Anfragen, die demselben Cache-Schlüssel zugeordnet sind, z. B. Anfragen, bei denen Suchparameter nicht enthalten sind oder nicht der Host enthalten ist, sollten denselben Fingerabdruck haben. Wenn die Gesamtzahl der Anfragen der Gesamtzahl der Fingerabdrücke ähnelt, kann dies darauf hindeuten, dass Ihre Cache-Schlüssel zu spezifisch sind. |
cacheMode | USE_ORIGIN_HEADERS | Der cdnPolicy.cacheMode , der auf der Route konfiguriert wurde, die dieser Anfrage entspricht.
|
cacheStatus | Cache hit: Full cache miss: |
Der Cache-Status an jedem Cache-Knoten zwischen dem Nutzer und dem Ursprungsschild, wobei der Wert ganz rechts den Cache darstellt, der dem Nutzer am nächsten ist. |
clientAsn | Die ASN (autonome Systemnummer), die auf der IP-Adresse des verbindenden Clients basiert. | |
clientCity | Mountain View | Der Name der Stadt, aus der die Anfrage stammt, z. B. Mountain View, Kalifornien. Er kann auch den Anfrage- und Antwortheadern hinzugefügt werden und spiegelt die Headervariable |
clientRegionCode | US | Das Land oder die Region, das bzw. die der IP-Adresse des Clients zugeordnet ist. Dies ist ein Unicode-CLDR-Regionscode wie US oder FR. Für die meisten Länder entsprechen diese Codes den ISO-3166-2-Codes. Er kann auch den Anfrage- und Antwortheadern hinzugefügt werden und spiegelt die Headervariable |
enforcedSecurityPolicy | Die Google Cloud Armor-Edge-Sicherheitsrichtlinie, die auf die Anfrage des Clients angewendet wurde. Dazu gehören zusätzliche Informationen über den Namen der Richtlinie, die Priorität und die ergriffene Maßnahme. | |
httpTtfb | 0.157228207s | Die Dauer ab dem Zeitpunkt, an dem der Proxy beginnt, Anfragebyte zu empfangen, bis das erste Byte der Antwort gesendet (nicht empfangen) wird. |
latency | 0.157415635s | Die Dauer ab dem Zeitpunkt, an dem der Proxy beginnt, Anfragebytes zu empfangen, bis er die Antwort an den Client geschrieben hat. |
location | Der Header Location in der Antwort.
|
|
metroIataCode | MAA | Der IATA-Code (Flughafencode) der Stadt, die dem Proxy am nächsten liegt. |
origin | Die Ressource EdgeCacheOrigin , von der die Antwort weitergeleitet wurde.
|
|
originalRequestId | 19d92668-3948-49d8-9244-25f8252043e4 | Die eindeutige Kennung, die der Anfrage zugewiesen wurde, die ursprünglich diese Antwort erzeugt hat.
Wird nur ausgefüllt, wenn sie sich von der request_id für im Cache gespeicherte Antworten unterscheidet.
|
originIp | Die IP-Adresse, mit der die Ressource EdgeCacheOrigin kontaktiert wird, von der die Antwort weitergeleitet wurde.
|
|
proxyRegionCode | US | Das Land (oder die Region), in dem sich der Proxy befindet. Dies ist ein Unicode-CLDR-Regionscode wie US oder FR. Für die meisten Länder entsprechen diese Codes den ISO-3166-2-Codes. |
rangeHeader | Der Header Range in der Anfrage.
|
|
requestId | 4bde6381-cd17-47e1-8c2a-1aaa424a1156 | Die eindeutige Kennung, die der Anfrage vom Proxy zugewiesen ist. |
tlsCipherSuite | 009C | Die Cipher Suite, die während des TLS-Handshakes ausgehandelt wird. Der Wert besteht aus vier Hexadezimalziffern, die von der IANA TLS Cipher Suite Registry definiert werden, z. B. 009C für TLS_RSA_WITH_AES_128_GCM_SHA256. Bei unverschlüsselten Clientverbindungen ist dieser Wert leer. |
tlsSniHostname | Angabe des Servernamens (wie in RFC 6066 definiert), falls vom Client während des TLS- oder QUIC-Handshake angegeben. Der Hostname wird in Kleinbuchstaben konvertiert und alle nachgestellten Punkte werden entfernt. | |
tlsVersion | TLS 1.3 | Die TLS-Version, die während des SSL-Handshakes zwischen dem Client und dem CDN ausgehandelt wird. Mögliche Werte sind TLS 1, TLS 1.1, TLS 1.2 und TLS 1.3. |
Beispiel für einen Logeintrag
Im Folgenden finden Sie ein Beispiel für einen Logeintrag für eine Antwort, die aus dem Cache bereitgestellt wird:
{ "insertId": "617fa16e-0000-2ac9-9993-d4f547fe67d4@a1", "jsonPayload": { "@type": "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry", "tlsVersion": "TLS 1.3", "tlsCipherSuite": "009C", // hex digits for the cipher negotiated "cacheId": "maa-132eed13faa13", "clientAsn": "9299", // AS the client is associated with "origin": "example_origin", "clientRegionCode": "IN", "metroIataCode": "bom", "clientCity": "Mumbai", // City name, in English "latency": "0.005105200s", "proxyStatus": "Google-Edge-Cache", "httpTtfb": "0.005056080s", "cacheMode": "FORCE_CACHE_ALL", "cacheKeyFingerprint": "c360ac18849b6336", "cacheStatus": "hit,stale", "enforcedSecurityPolicy": { "outcome": "ACCEPT", "configuredAction": "ACCEPT", "name": "example_policy", "priority": 1000 }, "originalRequestId": "19d92668-3948-49d8-9244-25f8252043e5", "proxyRegionCode": "IN", "requestId": "4bde6381-cd17-47e1-8c2a-1aaa424a1156", "originIp": "74.125.128.128" }, "httpRequest": { "requestMethod": "GET", "requestUrl": "https://example.com/image.jpg", "requestSize": "3545", "status": 200, "responseSize": "3716", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36", "remoteIp": "62.36.0.43", "protocol": "HTTP/2" }, "resource": { "type": "edgecache.googleapis.com/EdgeCacheRouteRule", "labels": { "matched_path": "/", "path_matcher_name": "routes", "service_name": "example_service", "resource_container": "projects/123456789", "location": "global", "route_destination": "projects/123456789/locations/global/edgeCacheOrigins/example_origin", "route_type": "ORIGIN" } }, "timestamp": "2022-11-19T00:24:13.695328200Z", "logName": "projects/my-project/logs/edgecache.googleapis.com%2Fedge_cache_request", "receiveTimestamp": "2022-11-19T00:24:16.715871645Z" }
Sie können die Logs optional nach Bedarf erfassen oder filtern, um das Logvolumen und die allgemeinen Logging-Gebühren zu reduzieren. Sie können Logs auch zur Analyse in Google Cloud an Pub/Sub oder BigQuery weiterleiten oder Ihre vorhandenen Log-Analysetools verwenden.
Logs aktivieren
Logging ist standardmäßig deaktiviert, um die gespeicherten Daten zu minimieren. Logs werden weitergeleitet, gefiltert und in Logging gespeichert.
So aktivieren Sie das Logging für einen bestimmten Media CDN-Dienst:
gcloud edge-cache services update YOUR_SERVICE \ --enable-logging \ --logging-sample-rate=1.0
So deaktivieren Sie das Logging:
gcloud edge-cache services update YOUR_SERVICE \ --no-enable-logging
So rufen Sie den aktuellen Status des Loggings für einen Dienst ab:
gcloud edge-cache services describe YOUR_SERVICE
Die Ausgabe sieht in etwa so aus:
... logConfig: enable: true sampleRate: 1.0 ...
Beispiellogs
Bei einem großen Anfragevolumen sollten Sie lieber Stichproben aus den Logs nehmen, als für jede Anfrage ein Log zu erstellen, und sich für das proaktive Monitoring und die Prüfung auf Messwerte verlassen.
Wenn Sie Logs nur für 10 % Ihrer Anfragen aufnehmen und speichern möchten, können Sie die logConfig.sampleRate
auf 0.1
setzen.
gcloud edge-cache services update YOUR_SERVICE \ --enable-logging \ --logging-sample-rate=0.1
Logging muss aktiviert sein, um die Abtastrate zu ändern.
Die Abtastrate beträgt, sofern nicht anders angegeben, standardmäßig den Wert 1.0 (100 %), wodurch jede Anfrage für den konfigurierten Dienst protokolliert wird.
Abfragelogs
Sie können Logs mithilfe des Log-Explorers in der Google Cloud Console oder der Google Cloud-Befehlszeile abfragen.
Wenn Sie Logs in der Google Cloud Console aufrufen möchten, filtern Sie nach dem Ressourcentyp „Media CDN“ und (optional) nach Projekt- und Dienstname.
Die folgende Logging-Abfrage zeigt die Logs für alle Ihre Media CDN-Dienste:
resource.type="edgecache.googleapis.com/EdgeCacheRouteRule"
Wenn Sie nach Logs filtern möchten, die mit einer bestimmten EdgeCacheService
-Ressource und einem bestimmten Projekt verknüpft sind, können Sie diese Abfrage erweitern:
resource.type="edgecache.googleapis.com/EdgeCacheRouteRule" resource.labels.resource_container="projects/12345678" resource.labels.service_name="MY_PROJECT"
Informationen zum Abgleich mit partiellen Namen oder zur Verwendung regulärer Ausdrücke finden Sie in der Dokumentation zur Logging-Syntax.
Beispiel: Cache-Fehler identifizieren
Eine Anfrage für ein Objekt kann aus verschiedenen Gründen ein Cache-Fehler haben und eine Cache-Füllung verursachen:
- Eine zu kurze TTL
- Ein zu spezifischer Cache-Schlüssel
- Zu wenige Anfragen für die Speicherung im Cache
Zum Identifizieren von Cache-Fehlern können Sie im Log-Explorer nach Logs filtern.
Die folgende Logabfrage zeigt Anfragen, die im Cache zwischengespeichert werden können (nachgeschlagen werden), aber ein Ausfüllen vom Ursprung erfordern:
resource.type="edgecache.googleapis.com/EdgeCacheRouteRule" resource.labels.resource_container="projects/12345678" resource.labels.service_name="MY_PROJECT" jsonPayload.cacheStatus="miss"
Wenn Sie nach einer bestimmten URL filtern müssen, können Sie nach dem Feld httpRequest.requestUrl
filtern:
httpRequest.requestUrl = "URL"
Verwenden Sie den has
-Operator, um nach einem Teil der URL zu filtern, z. B. der Pfadkomponente:
# `:` is the `has` comparison operator httpRequest.requestUrl: "/videos/1381381_1080.mp4" # You can use `OR` or `AND` to filter on multiple values httpRequest.requestUrl: ("https://media-test.example.com/" OR "https://canary.example.net")
Weitere Informationen zur umfassenden Syntax von Logging für den Abgleich und die Filterung finden Sie in der Dokumentation zu erweiterten Logabfragen.
Aufbewahrungsrichtlinien
Logging unterstützt die Festlegung benutzerdefinierter Aufbewahrungsrichtlinien, auch auf einer Pro-Senke-Basis.
Gespeicherte Logs filtern
Wenn Sie Logs vor dem Speichern filtern möchten, z. B. um nur relevante Felder zu erfassen, um das Gesamtvolumen der zu speichernden und abzufragenden Logs zu reduzieren, können Sie Ausschlussregeln für Logs konfigurieren, mit denen Sie eine Abfrage (Filter) definieren können, die Felder vor der Speicherung ein- oder ausschließt.
Sie können auch mehrere Filter einrichten und beispielsweise alle Cache-Fehleranfragen oder alle Anfragen für einen bestimmten Hostnamen erfassen und nur eine Stichprobe aller Logs aufnehmen.
Logs exportieren
Informationen zum Exportieren von Logs aus Logging finden Sie in der Dokumentation Übersicht über Logexporte. Diese behandelt folgende Themen:
- Logs nach Cloud Storage oder BigQuery exportieren
- Nach Pub/Sub exportieren und mit Cloud Functions oder externen Diensten nutzen
- Aggregation von Logs über mehrere Projekte hinweg
Media CDN lässt sich direkt in Logging einbinden.
Nächste Schritte
- Weitere Informationen zum Logging, einschließlich zum Exportieren von Logs nach BigQuery, Pub/Sub oder Cloud Storage, finden Sie in der Routing und Speicher – Übersicht.
- Weitere Informationen zum Einrichten von logbasierten Messwerten zum Definieren eigener Messwerte auf der Grundlage von protokollierten Anfragen finden Sie in der Logbasierte Messwerte – Übersicht.
- Weitere Informationen zu den Preisen für Logging finden Sie unter Operations-Suite von Google Cloud – Preise.
- Informationen zur Funktionsweise von Audit-Logging und zum Aktivieren und Konfigurieren von Audit-Logs für Administratoraktivitäten finden Sie in der Cloud-Audit-Logs – Dokumentation.