Registros y métricas del 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 información general sobre el registro y la monitorización de balanceadores de carga de aplicación externos y Cloud CDN.

Los registros de Cloud CDN están asociados al balanceador de carga de aplicaciones externo al que están conectados tus backends de Cloud CDN. Los registros de Cloud CDN se indexan primero por regla de reenvío y, después, por mapa de URLs.

Para ver los registros de Cloud CDN, siga estos pasos.

Consola

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

    Ir a Explorador de registros

  2. En el menú Recurso, selecciona Balanceador de carga HTTP de Cloud.
  3. Para ver los registros, sigue estos pasos:
    • Ver todos los registros: selecciona el menú Recurso y, a continuación, Todas las reglas de reenvío.
    • 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.
    • Ver los registros de un mapa de URLs usado por una regla de reenvío: selecciona una regla de reenvío y, a continuación, un mapa de URLs.

Solicitud atendida desde el backend

Para confirmar que una solicitud se sirve desde un backend con Cloud CDN habilitado, hay tres campos principales que debes buscar, como se indica a continuación:

  • httpRequest: Cuando una solicitud se sirve desde un backend, puedes ver que la caché se rellena 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 ha proporcionado la respuesta.
    • statusDetails: "response_sent_by_backend"

Solicitud servida desde la caché

La siguiente entrada de registro 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 contienen la mayoría de los registros, como la gravedad, el ID del proyecto, el número del proyecto y la marca de tiempo, los registros del balanceador de carga de aplicaciones externo y de Cloud CDN contienen lo siguiente:

  • El campo de registro HttpRequest, que registra el código de estado HTTP, los bytes devueltos y si se ha realizado una búsqueda en caché o se ha rellenado la caché.

  • El campo jsonPayload.cacheId, que indica la ubicación y la instancia de caché desde las que se ha enviado la respuesta de caché. Por ejemplo, una respuesta de caché servida desde una caché de Ámsterdam tendría un valor de cacheId de AMS-85e2bd4b, donde AMS es el código IATA y 85e2bd4b es un identificador opaco de la instancia de caché (porque algunas ubicaciones de Cloud CDN tienen varias cachés independientes).

  • Los campos statusDetails y cacheDetailjsonPayload.

Puedes filtrar por los siguientes campos para determinar el estado de acierto, fallo o revalidación de la caché de una solicitud atendida por Cloud CDN:

  • Hit de caché

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

    o

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer!=true

  • Cache Hit Validated With Origin Server (Acierto de caché validado con el servidor de origen)

    jsonPayload.statusDetails="response_from_cache_validated"

    o

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer=true

  • Fallo de caché

    jsonPayload.statusDetails="response_sent_by_backend"

    o

    httpRequest.cacheHit!=true
    httpRequest.cacheLookup=true

También puedes observar el estado de la caché del lado del 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 el valor false, se omite del registro.

La codificación UTF-8 se aplica obligatoriamente en estos campos. Los caracteres que no son caracteres UTF-8 se sustituyen por signos de interrogación.

Cuando Cloud CDN responde a una solicitud de un cliente iniciando solicitudes de validación o solicitudes de intervalo de bytes, omite el campo serverIp de la entrada de registro de Cloud Logging correspondiente a la solicitud del cliente. Esto se debe a que Cloud CDN puede enviar solicitudes a varias direcciones IP de servidor en respuesta a una sola solicitud de cliente.

Cada solicitud iniciada por Cloud CDN crea una entrada de registro de Cloud Logging. La entrada de registro resultante contiene un campo parentInsertId dentro de jsonPayload. Puede usar este campo para identificar el insertId de la entrada de registro de la solicitud de un solo cliente que ha provocado que Cloud CDN inicie la solicitud de validación o la solicitud de intervalo de bytes. Además, la entrada de registro identifica a Cloud CDN como user-agent.

Monitorizar Cloud CDN

Cloud CDN exporta datos de monitorización a Cloud Monitoring. La monitorización se usa para supervisar el estado de un despliegue de Cloud CDN.

Cloud Monitoring proporciona un conjunto de definiciones de paneles de control disponibles en GitHub en el repositorio monitoring-dashboard-samples como archivos JSON. En el directorio dashboards/networking, hay un panel de control específico de Cloud CDN llamado cloud-cdn-monitoring.json. Sube este panel de control personalizado a Monitoring siguiendo las instrucciones de Instalar paneles de control de ejemplo.

.

Monitorizar consultas de ejemplo de Cloud CDN

Monitoring te permite crear paneles de control personalizados. Los paneles de control pueden usar cualquiera de las métricas de monitorización de los balanceadores de carga de aplicación externos. A continuación, se muestran algunos ejemplos de fragmentos de PromQL que puedes pegar en paneles de control de Monitoring personalizados.

Número de bytes de las solicitudes desglosado por resultado de caché

Esta consulta se centra en los backends que tienen habilitado Cloud CDN, lo que se hace incluyendo 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 TCP de ida y vuelta del cliente en el percentil 95 de un backend de destino específico

Esta consulta incluye backend_target_name="example-backend", lo que reduce el tráfico al backend example-backend. Un backend puede ser un segmento de Cloud Storage, un grupo de VMs 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])
 )
)

Número de solicitudes desglosado por clase de código de respuesta de los backends habilitados para Cloud CDN

Esta consulta desglosa el tráfico por clase de código de respuesta (2xx, 3xx, 4xx y 5xx) para ayudar a separar los éxitos de los clientes, los errores de los clientes 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]
 )
)

Número de solicitudes desglosado por país de origen

Esta consulta muestra el tráfico desglosado por país de origen, que se determina mediante las direcciones IP de los clientes.

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

Siguientes pasos

  • Para 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 la monitorización y las alertas, consulta la documentación de Cloud Logging.

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