Jede Anfrage von Cloud CDN wird in Cloud Logging in Logs erfasst. Informationen zum Aktivieren und Deaktivieren des Loggings finden Sie in der Übersicht über das Logging und Monitoring für externe Application Load Balancer und Cloud CDN.
Logs für Cloud CDN sind mit dem externen Application Load Balancer verknüpft, an den Ihre Cloud CDN-Backends angehängt sind. Cloud CDN-Logs werden zuerst nach der Weiterleitungsregel und dann nach dem URL-Mapping indexiert.
So rufen Sie Cloud CDN-Logs auf:
Console
- Rufen Sie in der Console von Google Cloud die Seite Log-Explorer auf.
- Wählen Sie im Menü Ressource die Option Cloud-HTTP-Load Balancer aus.
- So rufen Sie Logs auf:
- Alle Logs ansehen: Wählen Sie das Menü Ressource und dann Alle Weiterleitungsregeln aus.
- Logs für eine Weiterleitungsregel ansehen: Wählen Sie den Namen der Weiterleitungsregel aus der Liste der Weiterleitungsregeln aus.
- Logs für ein von einer Weiterleitungsregel verwendetes URL-Mapping ansehen: Wählen Sie eine Weiterleitungsregel und dann ein URL-Mapping aus.
Vom Backend bereitgestellte Anfrage
Es gibt drei Hauptfelder, die Sie darauf prüfen können, ob eine Anfrage von einem Cloud CDN-fähigen Backend bereitgestellt wird:
httpRequest
: Wenn eine Anfrage von einem Backend bereitgestellt wird, sehen Sie, dass der Cache gefüllt wird. Auch die Anfrage-URL können Sie bestätigen.cacheFillBytes:
NUMBER_OF_BYTEScacheLookup: True
requestURL
: URL
jsonPayload
: Anhand des FeldsstatusDetails
können Sie bestätigen, dass die Antwort vom Backend bereitgestellt wurde.statusDetails: "response_sent_by_backend"
Aus dem Cache bereitgestellte Anfrage
Der folgende Logeintrag zeigt einen Cache-Treffer.
{ insertId: "1oek5rg3l3fxj7" jsonPayload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" cacheId: "SFO-fbae48ad" statusDetails: "response_from_cache" } httpRequest: { requestMethod: "GET" requestUrl: "http://LOAD_BALANCER_IP_ADDRESS/static/us/three-cats.jpg" requestSize: "577" status: 304 responseSize: "157" userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" remoteIp: "CLIENT_IP_ADDRESS" cacheHit: true cacheLookup: true } resource: { type: "http_load_balancer" labels: { zone: "global" url_map_name: "URL_MAP_NAME" forwarding_rule_name: "FORWARDING_RULE_NAME" target_proxy_name: "TARGET_PROXY_NAME" backend_service_name: "" project_id: "PROJECT_ID" } } timestamp: "2020-06-08T23:41:30.078651Z" severity: "INFO" logName: "projects/PROJECT_ID/logs/requests" trace: "projects/PROJECT_ID/traces/241d69833e64b3bf83fabac8c873d992" receiveTimestamp: "2020-06-08T23:41:30.588272510Z" spanId: "7b6537d3672e08e1" }
Was wird protokolliert?
Zusätzlich zu den in den meisten Logs enthaltenen allgemeinen Informationen wie etwa Schweregrad, Projekt-ID, Projektnummer und Zeitstempel enthalten die Logs für externe Application Load Balancer und Cloud CDN Folgendes:
Das HttpRequest-Logfeld, in dem der HTTP-Statuscode und die zurückgegebenen Bytes erfasst sind und das angibt, ob eine Cache-Suche oder Cache-Füllung durchgeführt wurde.
Das Feld
jsonPayload.cacheId
, das den Standort und die Cache-Instanz angibt, von der die Cache-Antwort bereitgestellt wurde. Beispiel: Eine Cache-Antwort, die von einem Cache in Amsterdam bereitgestellt wurde, hätte den cacheId-WertAMS-85e2bd4b
, wobeiAMS
der IATA-Code und85e2bd4b
eine intransparente Kennzeichnung der Cache-Instanz ist, da manche Cloud CDN-Standorte mehrere separate Caches haben.Die Felder
statusDetails
undcacheDetail
derjsonPayload
.
Sie können nach den folgenden Feldern filtern, um den Cache-Treffer-, Cache-Fehler- oder Neuvalidierungsstatus einer von Cloud CDN bereitgestellten Anfrage zu bestimmen:
Cache-Treffer
jsonPayload.statusDetails=("response_from_cache" OR "byte_range_caching")
oder
httpRequest.cacheHit=true
httpRequest.cacheValidatedWithOriginServer!=true
Mit Ursprungsserver validierter Cache-Treffer
jsonPayload.statusDetails="response_from_cache_validated"
oder
httpRequest.cacheHit=true
httpRequest.cacheValidatedWithOriginServer=true
Cache-Fehler
jsonPayload.statusDetails="response_sent_by_backend"
oder
httpRequest.cacheHit!=true
httpRequest.cacheLookup=true
Alternativ können Sie den Cache-Status clientseitig beobachten, indem Sie einen benutzerdefinierten Antwortheader mit cdn_cache_status
konfigurieren.
Boolesche Logfelder werden normalerweise nur angezeigt, wenn sie den Wert true
haben. Wenn ein boolesches Feld den Wert false
hat, wird es nicht im Log ausgegeben.
Für diese Felder wird zwangsweise eine UTF-8-Codierung durchgeführt. Zeichen, bei denen es sich nicht um UTF-8-Zeichen handelt, werden durch Fragezeichen ersetzt.
Wenn Cloud CDN eine Clientanfrage durch Initiieren von Validierungs- oder Bytebereichsanfragen bereitstellt, wird das Feld serverIp
aus dem Logeintrag von Cloud Logging für die Clientanfrage weggelassen. Dies liegt daran, dass Cloud CDN als Reaktion auf eine einzelne Clientanfrage Anfragen an mehrere Server-IP-Adressen senden kann.
Durch jede von Cloud CDN initiierte Anfrage wird außerdem ein Logeintrag in Cloud Logging erstellt. Der resultierende Logeintrag enthält ein Feld parentInsertId
innerhalb von jsonPayload
. Sie können dieses Feld verwenden, um die insertId
des Logeintrags für die einzelne Clientanfrage zu identifizieren, durch die Cloud CDN die Validierungs- oder Bytebereichsanfrage initiiert. Darüber hinaus wird Cloud CDN durch den Logeintrag als User-Agent identifiziert.
Monitoring für Cloud CDN
Cloud CDN exportiert Monitoringdaten in Cloud Monitoring. Monitoring wird verwendet, um den Zustand einer Cloud CDN-Bereitstellung zu überwachen.
Cloud Monitoring bietet vordefinierte Dashboards, die standardmäßig aktiviert sind und einen schnellen Einblick in den Systemstatus und die Leistung ermöglichen. Monitoring bietet auch eine Reihe von benutzerdefinierten Dashboards. Die Definitionen dieser benutzerdefinierten Dashboards sind auf GitHub im monitoring-dashboard-samples-Repository als JSON-Dateien verfügbar. Im Verzeichnis dashboards/networking
gibt es ein Cloud CDN-spezifisches benutzerdefiniertes Dashboard mit dem Namen cloud-cdn-monitoring.json
.
Laden Sie dieses benutzerdefinierte Dashboard in Monitoring hoch. Folgen Sie dazu der Anleitung unter Dashboardvorlage installieren.
Vordefinierte Dashboards
Cloud Monitoring bietet vordefinierte Dashboards für Cloud CDN. Auf diesen Dashboards werden wichtige Messwerte angezeigt, mit denen Sie die Traffic-Verteilung und die Cache-Effektivität ohne manuelle Konfiguration überwachen können.
Vordefinierte Dashboards ansehen
Führen Sie die folgenden Schritte aus, um auf die vordefinierten Dashboards zuzugreifen:
Wechseln Sie in der Google Cloud Console zur Seite Cloud CDN.
Klicken Sie auf den Namen des Ursprungs, für den Sie die Dashboards aufrufen möchten.
Klicken Sie auf der Seite Ursprungsdetails auf Monitoring.
Die vordefinierten Dashboards werden standardmäßig angezeigt.
Messwerte in den Dashboards
Die vordefinierten Dashboards enthalten die folgenden wichtigen Messwerte zu Ihren CDN-Ursprüngen:
Verteilung des Client-Traffics
Eine dynamische geografische Karte, auf der die Quelle von Clientanfragen angezeigt wird. Diese Karte bietet einen visuellen, globalen Überblick darüber, woher der Traffic stammt. Sie können den Zeitraumsfilter anpassen, um die Muster der Traffic-Verteilung für bestimmte Zeiträume zu analysieren.
Kernmesswerte
In der folgenden Tabelle werden die wichtigsten Messwerte beschrieben, die im Dashboard angezeigt werden.
Messwerte Beschreibung Gesamtzahl der Anfragen Die Gesamtzahl aller HTTP/HTTPS-Anfragen, die von Cloud CDN verarbeitet wurden und entweder aus dem Cache oder vom Ursprungs-Backend-Dienst bereitgestellt wurden. Das Diagramm zeigt die Anzahl der Anfragen im Zeitverlauf. Ausgehender Cache-Traffic Das Gesamtvolumen der Daten in Byte, die aus den Cloud CDN-Edge-Caches bereitgestellt wurden. Das Balkendiagramm zeigt das Egress-Volumen im Zeitverlauf. Fehlerverhältnis insgesamt Der Prozentsatz aller Anfragen, die zu einem Fehlerstatuscode 4xx
oder5xx
geführt haben. Dieser Messwert ist ein primärer Indikator für die allgemeine Dienstintegrität.4xx-Fehlerverhältnis Der Prozentsatz der Anfragen, die zu einem clientseitigen Statuscode geführt haben. Dies sind 4xx-Codes wie 404 Not Found
oder403 Forbidden
. Solche Fehler weisen auf Probleme mit den angeforderten Inhalten oder Clientberechtigungen hin.5xx-Fehlerverhältnis Der Prozentsatz der Anfragen, die zu einem serverseitigen Statuscode geführt haben. Das sind 5xx-Codes wie 502 Bad Gateway
oder503 Service Unavailable
. Solche Fehler weisen auf Probleme mit dem Backend-Ursprungsdienst oder der Load-Balancer-Konfiguration hin.Cache-Trefferquote Das Verhältnis der Anfragen, die direkt aus dem Cloud CDN-Cache bereitgestellt wurden, zur Gesamtzahl der Anfragen in Prozent. Cache-Füllung insgesamt Das Gesamtvolumen der Daten in Byte, die aus dem Ursprungs-Backend abgerufen und im Cloud CDN-Cache gespeichert wurden.
Benutzerdefinierte Dashboards
Mit Monitoring können Sie benutzerdefinierte Dashboards erstellen. In Dashboards können alle Monitoringmesswerte für externe Application Load Balancer verwendet werden. Im Folgenden finden Sie einige Beispiele für PromQL-Snippets, die Sie in benutzerdefinierte Monitoringdashboards einfügen können.
Anzahl der Anfragebytes, aufgeschlüsselt nach Cache-Ergebnis
Diese Abfrage konzentriert sich auf Backends, für die Cloud CDN aktiviert ist. Dies geschieht durch Einbinden von cache_result!="DISABLED"
.
sum by (cache_result) ( rate({"loadbalancing.googleapis.com/https/response_bytes_count", monitored_resource="https_lb_rule", cache_result!="DISABLED"}[1m]) )
Client-Roundtrip-TCP-Latenz bei 95 % für ein bestimmtes Backendziel
Diese Abfrage enthält backend_target_name="example-backend"
, wodurch der Traffic auf das Backend example-backend
eingeschränkt wird. Ein Backend kann ein Cloud Storage-Bucket, eine Compute Engine-VM-Gruppe oder ein externes Backend sein.
histogram_quantile( 0.95, sum by (proxy_continent, le) ( rate({"loadbalancing.googleapis.com/https/frontend_tcp_rtt_bucket", monitored_resource="https_lb_rule", backend_target_name="example-backend" }[1m]) ) )
Anzahl der Anfragen, aufgeschlüsselt nach Antwortcodeklasse für Cloud CDN-fähige Backends
Diese Abfrage schlüsselt den Traffic nach der Antwortcodeklasse (2xx, 3xx, 4xx, 5xx) auf, um die Clienterfolge, Clientfehler und Serverfehler voneinander trennen zu können.
sum by (response_code_class) ( count_over_time( {"loadbalancing.googleapis.com/https/request_count", monitored_resource="https_lb_rule", cache_result!="DISABLED" }[1h] ) )
Anzahl der Anfragen, aufgeschlüsselt nach Herkunftsland
In dieser Abfrage wird der Traffic nach dem Herkunftsland aufgeschlüsselt, das mithilfe von Client-IP-Adressen bestimmt wird.
sum by (client_country) ( rate({"loadbalancing.googleapis.com/https/request_count", monitored_resource="https_lb_rule"}[1m]) )
Nächste Schritte
Weitere Informationen zum Logging, einschließlich zum Exportieren von Logs nach BigQuery, Pub/Sub oder Cloud Storage sowie zum Konfigurieren logbasierter Messwerte für das Monitoring und Benachrichtigungen, finden Sie in der Dokumentation zu Cloud Logging.
Informationen zu den im
httpRequest
-Logeintrag enthaltenen Feldern finden Sie unterHttpRequest
.