Registros y métricas para el almacenamiento en caché

Cada solicitud de Cloud CDN se registra en Cloud Logging. Para obtener información sobre cómo habilitar y deshabilitar el registro, consulta la descripción general del registro y la supervisión del balanceador de cargas de aplicaciones externo y Cloud CDN.

Los registros de Cloud CDN están asociados con el balanceador de cargas de aplicaciones externo al que se vinculan tus backends de Cloud CDN. Los registros de Cloud CDN se indexan primero mediante la regla de reenvío y, luego, mediante el mapa de URL.

Para ver los registros de Cloud CDN, sigue los pasos a continuación.

Console

  1. En la consola de Google Cloud, ve a la página Explorador de registros.

    Ir al Explorador de registros

  2. En el menú Recurso, selecciona Balanceador de cargas de HTTP de Cloud.
  3. Visualiza los registros de la siguiente manera:
    • Ver todos los registros: Selecciona el menú Recurso y, luego, Todas las reglas de reenvío.
    • Ver los registros de una regla de reenvío: Selecciona el nombre de la regla de reenvío de la lista de reglas de reenvío.
    • Ver los registros de un mapa de URL que usa una regla de reenvío: Selecciona una regla de reenvío y, luego, selecciona un mapa de URL.

Solicitud entregada desde el backend

A fin de confirmar que una solicitud se entrega desde un backend con Cloud CDN habilitado, debes buscar tres campos principales, como los siguientes:

  • httpRequest: Cuando se entrega una solicitud desde un backend, puedes ver que la caché está llena y confirmar la URL de la solicitud.
    • cacheFillBytes: NUMBER_OF_BYTES
    • cacheLookup: True
    • requestURL: URL
  • jsonPayload: En el campo statusDetails, puedes confirmar que el backend entregó la respuesta.
    • statusDetails: "response_sent_by_backend"

Solicitud entregada desde la caché

En la siguiente entrada de registro, se muestra un acierto de caché.

 {
    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"
}

¿Qué se registra?

Además de la información general que se encuentra en la mayoría de los registros, como la gravedad, el ID del proyecto, el número de proyecto y la marca de tiempo, los registros del balanceador de cargas de aplicaciones externo y Cloud CDN contienen lo siguiente:

  • El campo de registro de HttpRequest, que captura el código de estado HTTP, los bytes mostrados y si se realizó una búsqueda en caché o un llenado de caché

  • El campo jsonPayload.cacheId, que indica la ubicación y la instancia de caché desde la que se entregó la respuesta de caché. Por ejemplo, una respuesta almacenada en caché que se entrega desde una caché en Ámsterdam tendrá un valor de caché de AMS-85e2bd4b, en el que AMS es el código IATA85e2bd4b es un identificador opaco de la instancia de caché (porque algunas ubicaciones de Cloud CDN tienen varias caché discretas)

  • Los campos statusDetails y cacheDetail de jsonPayload.

Puedes filtrar los siguientes campos para determinar el estado de acierto, error o revalidación de caché de una solicitud que entrega Cloud CDN:

  • Acierto de caché

    jsonPayload.statusDetails=("response_from_cache" OR "byte_range_caching")

    o

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer!=true

  • Acierto de caché validado con el servidor de origen

    jsonPayload.statusDetails="response_from_cache_validated"

    o

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer=true

  • Error de caché

    jsonPayload.statusDetails="response_sent_by_backend"

    o

    httpRequest.cacheHit!=true
    httpRequest.cacheLookup=true

Como alternativa, puedes observar el estado de la caché desde el lado del cliente si configuras un encabezado de respuesta personalizado con cdn_cache_status.

Los campos de registro de tipo booleano suelen aparecer solo si tienen el valor true. Si un campo booleano tiene un valor false, ese campo se omite del registro.

La codificación UTF-8 se aplica a estos campos. Los caracteres que no son caracteres UTF-8 se reemplazan con signos de interrogación.

Cuando Cloud CDN entrega una solicitud del cliente mediante el inicio de solicitudes de validación o solicitudes de rango de bytes, omite el campo serverIp de la entrada de registro de Cloud Logging para la solicitud del cliente. Esto se debe a que Cloud CDN puede enviar solicitudes a varias direcciones IP de servidores en respuesta a una sola solicitud del cliente.

Cada solicitud que inicia Cloud CDN crea una entrada de registro de Cloud Logging. La entrada de registro resultante contiene un campo parentInsertId dentro de jsonPayload. Puedes usar este campo a fin de identificar el insertId de la entrada de registro para la única solicitud del cliente que requiere que Cloud CDN inicie la solicitud de validación o de rango de bytes. Además, la entrada de registro identifica a Cloud CDN como el usuario-agente.

Monitoring para Cloud CDN

Cloud CDN exporta datos de supervisión a Cloud Monitoring. Monitoring se usa para supervisar el estado de una implementación de Cloud CDN.

Cloud Monitoring proporciona un conjunto de definiciones de panel disponibles en GitHub en el repositorio de monitoring-dashboard-samples como archivos JSON. En el archivo de herramientas de redes, hay un panel específico de Cloud CDN llamado cloud-cdn-monitoring.json. Para subir este panel personalizado a Monitoring, sigue las instrucciones que se encuentran en Instala paneles de muestra.

Supervisa las consultas de ejemplo de Cloud CDN

Monitoring te permite crear paneles personalizados. Los paneles pueden usar cualquiera de las métricas de supervisión para balanceadores de cargas de aplicaciones externos. A continuación, se muestran algunos ejemplos de fragmentos de MQL que puedes pegar en paneles de Monitoring personalizados.

Recuento de bytes de solicitudes desglosados por resultado de caché

Esta consulta se centra en los backends que tienen Cloud CDN habilitado, lo que se incluye agregando filter (metric.cache_result != 'DISABLED').

fetch https_lb_rule
| metric 'loadbalancing.googleapis.com/https/response_bytes_count'
| filter (metric.cache_result != 'DISABLED')
| align rate(1m)
| every 1m
| group_by [metric.cache_result],
    [value_response_bytes_count_aggregate:
       aggregate(value.response_bytes_count)]

Latencia de TCP de ida y vuelta del cliente al 95% para un destino de backend específico

Esta consulta incluye filter (resource.backend_target_name = 'example-backend'), que reduce el tráfico al backend de example-backend. Un backend puede ser un bucket de Cloud Storage, un grupo de VM de Compute Engine o un backend externo.

fetch https_lb_rule
| metric 'loadbalancing.googleapis.com/https/frontend_tcp_rtt'
| filter (resource.backend_target_name = 'example-backend')
| group_by 1m,
    [value_frontend_tcp_rtt_aggregate: aggregate(value.frontend_tcp_rtt)]
| every 1m
| group_by [metric.proxy_continent],
    [value_frontend_tcp_rtt_aggregate_percentile:
       percentile(value_frontend_tcp_rtt_aggregate, 95)]

Recuento de solicitudes desglosado por clase de código de respuesta para los backends habilitados para Cloud CDN

Esta consulta divide el tráfico por clase de código de respuesta (2xx, 3xx, 4xx, 5xx) para ayudar a separar los éxitos del cliente, los errores del cliente y los errores del servidor.

fetch https_lb_rule
| metric 'loadbalancing.googleapis.com/https/request_count'
| filter (metric.cache_result != 'DISABLED')
| group_by 1h, [row_count: row_count()]
| every 1h
| group_by [metric.response_code_class],
    [row_count_aggregate: aggregate(row_count)]

Recuento de solicitudes desglosado por país de origen

En esta consulta, se muestra el tráfico desglosado por país de origen, que se determina mediante direcciones IP de cliente.

fetch https_lb_rule
| metric 'loadbalancing.googleapis.com/https/request_count'
| align rate(1m)
| every 1m
| group_by [metric.client_country], [value_request_count_aggregate: aggregate(value.request_count)]

¿Qué sigue?

  • A fin de obtener más información sobre el registro, incluido cómo exportar registros a BigQuery, Pub/Sub o Cloud Storage y cómo configurar métricas basadas en registros para supervisar y crear alertas, consulta la Documentación de Cloud Logging.

  • Para obtener información sobre los campos que se incluyen en la entrada de registro httpRequest, consulta HttpRequest.