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 e inhabilitar el registro, consulta la descripción general del registro y la supervisión del balanceador de cargas de aplicaciones externo y de Cloud CDN.

Los registros de Cloud CDN están asociados con el balanceador de cargas de aplicaciones externo al que se conectan 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 Google Cloud consola, 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.
    • Para ver los registros de una regla de reenvío, selecciona el nombre de la regla de reenvío en la lista de reglas de reenvío.
    • Para ver los registros de un mapa de URL que utiliza una regla de reenvío, selecciona una regla de reenvío y, luego, 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 de Cloud CDN contienen lo siguiente:

  • El campo de registro de HttpRequest, que captura el código de estado HTTP, los bytes devueltos 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 cliente configurando 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 paneles predefinidos que están habilitados de forma predeterminada para obtener información rápida sobre el estado y el rendimiento del sistema. Monitoring también ofrece un conjunto de paneles personalizados. Las definiciones de estos paneles personalizados están disponibles en GitHub en el repositorio de monitoring-dashboard-samples como archivos JSON. En el directorio dashboards/networking, hay un panel personalizado 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.

Paneles predefinidos

Cloud Monitoring ofrece paneles predefinidos para Cloud CDN. Estos paneles muestran métricas clave que te permiten supervisar la distribución del tráfico y la eficacia de la caché sin necesidad de realizar una configuración manual.

Visualiza paneles predefinidos

Realiza los siguientes pasos para acceder a los paneles predefinidos:

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

    Ir a Cloud CDN

  2. Haz clic en el nombre del origen para el que deseas ver los paneles.

  3. En la página Detalles del origen, haz clic en Monitoring.

    Los paneles predefinidos aparecen de forma predeterminada.

Métricas en los paneles

Los paneles predefinidos proporcionan las siguientes métricas clave sobre tus orígenes de CDN:

  • Distribución del tráfico de clientes

    Un mapa geográfico dinámico que muestra la fuente de las solicitudes de los clientes. Este mapa proporciona una descripción general visual y global de dónde se origina el tráfico. Puedes ajustar el filtro de período para analizar los patrones de distribución del tráfico en períodos específicos.

  • Métricas principales

    En la siguiente tabla, se describen las métricas principales que se muestran en el panel.

    Métricas Descripción
    Total de solicitudes Es el recuento agregado de todas las solicitudes HTTP/HTTPS procesadas por Cloud CDN, ya sea que se hayan entregado desde la caché o desde el servicio de backend de origen. El gráfico muestra el recuento de solicitudes a lo largo del tiempo.
    Salida de caché Es el volumen total de datos, en bytes, que se entregaron desde las cachés perimetrales de Cloud CDN. El gráfico de barras muestra el volumen de salida a lo largo del tiempo.
    Proporción de errores total Es el porcentaje de todas las solicitudes que generaron un código de estado de error 4xx o 5xx. Esta métrica es un indicador principal del estado general del servicio.
    Proporción de errores 4xx Es el porcentaje de solicitudes que generaron un código de estado del cliente. Estos son códigos 4xx, como 404 Not Found o 403 Forbidden. Estos errores indican problemas con el contenido solicitado o los permisos del cliente.
    Proporción de errores 5xx Es el porcentaje de solicitudes que generaron un código de estado del servidor. Estos son códigos 5xx, como 502 Bad Gateway o 503 Service Unavailable. Estos errores indican problemas con el servicio de origen del backend o la configuración del balanceador de cargas.
    Tasa de aciertos de caché Es la proporción, expresada como porcentaje, de las solicitudes que se entregan directamente desde la caché de Cloud CDN en comparación con la cantidad total de solicitudes.
    Relleno de caché total Es el volumen total de datos, en bytes, recuperados del backend de origen y almacenados en la caché de Cloud CDN.

Paneles personalizados

Monitoring te permite crear paneles personalizados. Los paneles pueden usar cualquiera de las métricas de supervisión para los balanceadores de cargas de aplicaciones externos. A continuación, se muestran algunos ejemplos de fragmentos de PromQL 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 cache_result!="DISABLED".

sum by (cache_result) (
 rate({"loadbalancing.googleapis.com/https/response_bytes_count", monitored_resource="https_lb_rule", cache_result!="DISABLED"}[1m])
)

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

Esta consulta incluye 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.

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])
 )
)

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.

sum by (response_code_class) (
 count_over_time(
  {"loadbalancing.googleapis.com/https/request_count",
     monitored_resource="https_lb_rule",
     cache_result!="DISABLED"
   }[1h]
 )
)

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.

sum by (client_country) (
 rate({"loadbalancing.googleapis.com/https/request_count", monitored_resource="https_lb_rule"}[1m])
)

¿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.