Afficher les journaux

Chaque requête Cloud CDN est consignée dans Cloud Logging. Pour en savoir plus sur l'activation et la désactivation de la journalisation, consultez la page Journalisation et surveillance de l'équilibrage de charge HTTP(S).

Les journaux de Cloud CDN sont associés à l'équilibreur de charge HTTP(S) 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

  1. Dans Google Cloud Console, accédez à la page Visionneuse de journaux.

    Accéder à la page Visionneuse de journaux

  2. Pour afficher tous les journaux, dans le premier menu déroulant de la ligne, sélectionnez Équilibreur de charge HTTP cloud > Toutes les règles de transfert.

  3. Pour afficher les journaux d'une seule règle de transfert, sélectionnez un nom de règle de transfert dans la liste.

  4. Pour afficher les journaux d'un seul mappage d'URL utilisé par une règle de transfert, sélectionnez Équilibreur de charge HTTP cloud, puis choisissez la règle de transfert et le mappage d'URL qui vous intéressent.

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_BYTES
    • cacheLookup: True
    • requestURL : URL
  • jsonPayload : dans le champ statusDetails, 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 gravité, l'ID de projet, le numéro de projet et l'horodatage, les journaux d'équilibrage de charge HTTP(S) 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" de AMS-85e2bd4b, où AMS correspond au code IATA et 85e2bd4b est un identifiant opaque de l'instance de cache (car certains emplacements Cloud CDN possèdent plusieurs caches distincts).

  • Les champs statusDetails de jsonPayload.

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

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.

É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 journal httpRequest.