Chaque requête Cloud CDN est consignée dans Cloud Logging. Pour savoir comment activer et désactiver la journalisation, consultez la Présentation de la journalisation et de la surveillance de l'équilibreur de charge d'application externe et de Cloud CDN.
Les journaux de Cloud CDN sont associés à l'équilibreur de charge d'application externe auquel vos backends Cloud CDN sont rattachés. Les journaux Cloud CDN sont d'abord indexés par règle de transfert, puis par mappage d'URL.
Pour afficher les journaux Cloud CDN, procédez comme suit.
Console
- Dans la console Google Cloud , accédez à la page Explorateur de journaux.
- Dans le menu Ressource, sélectionnez Équilibreur de charge HTTP cloud.
- Affichez les journaux comme suit :
- Afficher tous les journaux : sélectionnez le menu Ressource, puis Toutes les règles de transfert.
- Afficher les journaux d'une règle de transfert : sélectionnez le nom de la règle de transfert dans la liste des règles de transfert.
- Afficher les journaux d'un mappage d'URL utilisé par une règle de transfert : sélectionnez une règle de transfert, puis un mappage d'URL.
Requête diffusée à partir du backend
Pour confirmer qu'une requête est diffusée à partir d'un backend compatible avec Cloud CDN, vous devez rechercher trois champs principaux, comme suit :
httpRequest
: Lorsqu'une requête est diffusée à partir d'un backend, vous pouvez constater que le cache est rempli et vous pouvez confirmer l'URL de la requête.cacheFillBytes:
NUMBER_OF_BYTEScacheLookup: True
requestURL
: URL
jsonPayload
: dans le champstatusDetails
, vous pouvez confirmer que la réponse a été diffusée à partir du backend.statusDetails: "response_sent_by_backend"
Requête diffusée à partir du cache
L'entrée de journal suivante montre un succès de cache.
{ 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" }
Contenu consigné
Outre les informations générales contenues dans la plupart des journaux, telles que la sévérité, l'ID de projet, le numéro de projet et le code temporel, les journaux d'équilibreur de charge d'application externe et de Cloud CDN contiennent les éléments suivants :
Le champ de journal HttpRequest, qui enregistre le code d'état HTTP, le nombre d'octets renvoyés et si des opérations de recherche dans le cache et/ou de remplissage de cache ont été effectuées.
Le champ
jsonPayload.cacheId
, qui indique l'emplacement et l'instance de cache à partir desquels la réponse de cache a été diffusée. Par exemple, une réponse de cache diffusée à partir d'un cache situé à Amsterdam aura une valeur "cacheId" deAMS-85e2bd4b
, oùAMS
correspond au code IATA et85e2bd4b
est un identifiant opaque de l'instance de cache (car certains emplacements Cloud CDN possèdent plusieurs caches distincts).Les champs
statusDetails
etcacheDetail
dejsonPayload
.
Vous pouvez filtrer ces champs pour déterminer l'état de succès (hit), de défaut (miss) ou de revalidation de cache d'une requête diffusée par Cloud CDN :
Succès de cache (hit)
jsonPayload.statusDetails=("response_from_cache" OR "byte_range_caching")
ou
httpRequest.cacheHit=true
httpRequest.cacheValidatedWithOriginServer!=true
Succès de cache (hit) validé avec le serveur d'origine
jsonPayload.statusDetails="response_from_cache_validated"
ou
httpRequest.cacheHit=true
httpRequest.cacheValidatedWithOriginServer=true
Défaut de cache (miss)
jsonPayload.statusDetails="response_sent_by_backend"
ou
httpRequest.cacheHit!=true
httpRequest.cacheLookup=true
Vous pouvez également observer l'état du cache côté client en configurant un en-tête de réponse personnalisé avec cdn_cache_status
.
Les champs de journal de type booléen n'apparaissent généralement que s'ils comportent la valeur true
. Si un champ booléen a la valeur false
, il est omis du journal.
Le codage UTF-8 est appliqué pour ces champs. Les caractères qui ne sont pas au format UTF-8 sont remplacés par des points d'interrogation.
Lorsque Cloud CDN diffuse une requête client en initiant des requêtes de validation et/ou des requêtes de plage d'octets, il omet le champ serverIp
de l'entrée de journal Cloud Logging correspondant à la requête client. En effet, Cloud CDN peut envoyer des requêtes à plusieurs adresses IP de serveur en réponse à une requête client unique.
Chaque requête initiée par Cloud CDN crée une entrée de journal Cloud Logging. L'entrée de journal obtenue contient un champ parentInsertId
dans jsonPayload
. Ce champ permet d'identifier le champ insertId
de l'entrée de journal pour la requête client unique qui a invité Cloud CDN à lancer la requête de validation ou la requête de plage d'octets. En outre, l'entrée de journal identifie Cloud CDN en tant qu'entité user-agent.
Monitoring pour Cloud CDN
Cloud CDN exporte les données de surveillance vers Cloud Monitoring. Monitoring est utilisé pour surveiller l'état d'un déploiement Cloud CDN.
Cloud Monitoring fournit des tableaux de bord prédéfinis qui sont activés par défaut pour vous donner un aperçu rapide de l'état et des performances du système. Monitoring propose également un ensemble de tableaux de bord personnalisés. Les définitions de ces tableaux de bord personnalisés sont disponibles sur GitHub dans le dépôt monitoring-dashboard-samples sous forme de fichiers JSON. Le répertoire dashboards/networking
contient un tableau de bord personnalisé propre à Cloud CDN appelé cloud-cdn-monitoring.json
.
Importez ce tableau de bord personnalisé dans Monitoring en suivant les instructions de la page Installer des exemples de tableaux de bord.
Tableaux de bord prédéfinis
Cloud Monitoring propose des tableaux de bord prédéfinis pour Cloud CDN. Ces tableaux de bord affichent des métriques clés qui vous permettent de surveiller la distribution du trafic et l'efficacité du cache sans configuration manuelle.
Afficher les tableaux de bord prédéfinis
Pour accéder aux tableaux de bord prédéfinis, procédez comme suit :
Dans la console Google Cloud , accédez à la page Cloud CDN.
Cliquez sur le nom de l'origine pour laquelle vous souhaitez afficher les tableaux de bord.
Sur la page Détails de l'origine, cliquez sur Surveillance.
Les tableaux de bord prédéfinis s'affichent par défaut.
Métriques dans les tableaux de bord
Les tableaux de bord prédéfinis fournissent les métriques clés suivantes sur vos origines CDN :
Répartition du trafic client
Carte géographique dynamique affichant la source des requêtes client. Cette carte fournit un aperçu visuel et global de l'origine du trafic. Vous pouvez ajuster le filtre de plage de dates pour analyser les tendances de distribution du trafic sur des périodes spécifiques.
Métriques principales
Le tableau suivant décrit les métriques principales affichées dans le tableau de bord.
Métriques Description Nombre total de requêtes Nombre total de requêtes HTTP/HTTPS traitées par Cloud CDN, diffusées à partir du cache ou du service de backend d'origine. Le graphique montre le nombre de requêtes au fil du temps. Sortie du cache Volume total de données, en octets, diffusées à partir des caches périphériques Cloud CDN. Le graphique à barres indique le volume de sortie au fil du temps. Taux d'erreurs total Pourcentage de toutes les requêtes ayant généré un code d'état d'erreur 4xx
ou5xx
. Cette métrique est un indicateur principal de l'état général du service.Taux d'erreurs 4xx Pourcentage de requêtes ayant entraîné un code d'état côté client. Il s'agit de codes 4xx, tels que 404 Not Found
ou403 Forbidden
. Ces erreurs indiquent des problèmes liés au contenu demandé ou aux autorisations du client.Taux d'erreurs 5xx Pourcentage de requêtes ayant généré un code d'état côté serveur. Il s'agit de codes 5xx, tels que 502 Bad Gateway
ou503 Service Unavailable
. Ces erreurs indiquent des problèmes liés au service d'origine du backend ou à la configuration de l'équilibreur de charge.Taux d'accès au cache Ratio, exprimé en pourcentage, des requêtes diffusées directement à partir du cache Cloud CDN par rapport au nombre total de requêtes. Nombre total de remplissages du cache Volume total de données (en octets) récupérées à partir du backend d'origine et stockées dans le cache Cloud CDN.
Tableaux de bord personnalisés
Monitoring vous permet de créer des tableaux de bord personnalisés. Les tableaux de bord peuvent utiliser n'importe quelle métrique de surveillance pour les équilibreurs de charge d'application externes. Voici quelques exemples d'extraits PromQL que vous pouvez coller dans des tableaux de bord Monitoring personnalisés.
Nombre d'octets de requête répartis par résultat de cache
Cette requête porte sur les backends sur lesquels Cloud CDN est activé. Elle est exécutée en incluant le filtre cache_result!="DISABLED"
.
sum by (cache_result) ( rate({"loadbalancing.googleapis.com/https/response_bytes_count", monitored_resource="https_lb_rule", cache_result!="DISABLED"}[1m]) )
Latence TCP aller-retour client à 95 % pour une cible de backend spécifique
Cette requête inclut backend_target_name="example-backend"
, qui limite le trafic vers le backend example-backend
. Un backend peut être un bucket Cloud Storage, un groupe de VM Compute Engine ou un backend externe.
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]) ) )
Nombre de requêtes réparties par classe de code de réponse pour les backends compatibles avec Cloud CDN
Cette requête répartit le trafic par classe de code de réponse (2xx, 3xx, 4xx, 5xx) pour aider à distinguer les réussites des clients, les erreurs client et les erreurs de serveurs.
sum by (response_code_class) ( count_over_time( {"loadbalancing.googleapis.com/https/request_count", monitored_resource="https_lb_rule", cache_result!="DISABLED" }[1h] ) )
Nombre de requêtes réparties par pays d'origine
Cette requête affiche le trafic réparti par pays d'origine, déterminé à l'aide des adresses IP clientes.
sum by (client_country) ( rate({"loadbalancing.googleapis.com/https/request_count", monitored_resource="https_lb_rule"}[1m]) )
Étapes suivantes
Consultez la documentation Cloud Logging pour en savoir plus sur la journalisation, y compris sur l'exportation de journaux vers BigQuery, Pub/Sub ou Cloud Storage, et sur la configuration de métriques basées sur les journaux pour la surveillance et les alertes.
Consultez la section
HttpRequest
pour en savoir plus sur les champs inclus dans l'entrée de journalhttpRequest
.