Log e metriche per la memorizzazione nella cache

Ogni richiesta Cloud CDN viene registrata in Cloud Logging. Per informazioni sull'attivazione e la disattivazione della registrazione, consulta la panoramica del logging e del monitoraggio del bilanciatore del carico delle applicazioni esterno e di Cloud CDN.

I log per Cloud CDN sono associati al bilanciatore del carico delle applicazioni esterno a cui sono collegati i backend Cloud CDN. I log di Cloud CDN vengono indicizzati prima in base alla regola di forwarding e poi in base alla mappa URL.

Per visualizzare i log di Cloud CDN:

Console

  1. Nella console Google Cloud , vai alla pagina Esplora log.

    Vai a Esplora log

  2. Nel menu Risorsa, seleziona Bilanciatore del carico HTTP Cloud.
  3. Visualizza i log nel seguente modo:
    • Visualizza tutti i log:seleziona il menu Risorsa e poi Tutte le regole di inoltro.
    • Visualizza i log per una regola di forwarding:seleziona il nome della regola di forwarding dall'elenco delle regole di forwarding.
    • Visualizza i log per una mappa URL utilizzata da una regola di forwarding: seleziona una regola di forwarding e poi una mappa URL.

Richiesta gestita dal backend

Per confermare che una richiesta viene gestita da un backend abilitato a Cloud CDN, devi cercare tre campi principali:

  • httpRequest: quando una richiesta viene pubblicata da un backend, puoi vedere che la cache è piena e puoi confermare l'URL della richiesta.
    • cacheFillBytes: NUMBER_OF_BYTES
    • cacheLookup: True
    • requestURL: URL
  • jsonPayload: dal campo statusDetails puoi verificare che la risposta sia stata fornita dal backend.
    • statusDetails: "response_sent_by_backend"

Richiesta gestita dalla cache

La seguente voce di log mostra un successo della 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"
}

Che cosa viene registrato

Oltre alle informazioni generali contenute nella maggior parte dei log, come gravità, ID progetto, numero di progetto e timestamp, i log del bilanciatore del carico delle applicazioni esterno e di Cloud CDN contengono quanto segue:

  • Il campo di log HttpRequest, che acquisisce il codice di stato HTTP, i byte restituiti e se è stata eseguita una ricerca nella cache o un riempimento della cache.

  • Il campo jsonPayload.cacheId, che indica la posizione e l'istanza della cache da cui è stata pubblicata la risposta della cache. Ad esempio, una risposta della cache servita da una cache ad Amsterdam avrebbe un valore cacheId di AMS-85e2bd4b, dove AMS è il codice IATA, e 85e2bd4b è un identificatore opaco dell'istanza della cache (perché alcune posizioni Cloud CDN hanno più cache discrete).

  • I campi statusDetails e cacheDetail di jsonPayload.

Puoi filtrare in base ai seguenti campi per determinare lo stato di successo della cache, mancata corrispondenza o convalida di una richiesta gestita da Cloud CDN:

  • Cache Hit

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

    o

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer!=true

  • Cache Hit Validated With Origin Server

    jsonPayload.statusDetails="response_from_cache_validated"

    o

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer=true

  • Cache Miss

    jsonPayload.statusDetails="response_sent_by_backend"

    o

    httpRequest.cacheHit!=true
    httpRequest.cacheLookup=true

In alternativa, puoi osservare lo stato della cache dal lato client configurando un'intestazione della risposta personalizzata con cdn_cache_status.

I campi dei log di tipo booleano in genere vengono visualizzati solo se hanno un valore true. Se un campo booleano ha un valore false, viene omesso dal log.

La codifica UTF-8 è applicata in modo forzato per questi campi. I caratteri non UTF-8 vengono sostituiti con punti interrogativi.

Quando Cloud CDN gestisce una richiesta client avviando richieste di convalida o richieste di intervallo di byte, omette il campo serverIp dalla voce di log di Cloud Logging per la richiesta client. Questo perché Cloud CDN può inviare richieste a più indirizzi IP del server in risposta a una singola richiesta client.

Ogni richiesta avviata da Cloud CDN crea una voce di log Cloud Logging. La voce di log risultante contiene un campo parentInsertId all'interno di jsonPayload. Puoi utilizzare questo campo per identificare insertId della voce di log per la singola richiesta del client che ha richiesto a Cloud CDN di avviare la richiesta di convalida o la richiesta di intervallo di byte. Inoltre, la voce di log identifica Cloud CDN come user agent.

Monitoraggio per Cloud CDN

Cloud CDN esporta i dati di monitoraggio in Cloud Monitoring. Il monitoraggio viene utilizzato per monitorare lo stato di un deployment di Cloud CDN.

Cloud Monitoring fornisce dashboard predefinite che sono abilitate per impostazione predefinita per una rapida panoramica dell'integrità e delle prestazioni del sistema. Monitoring offre anche un insieme di dashboard personalizzate. Le definizioni di queste dashboard personalizzate sono disponibili su GitHub nel repository monitoring-dashboard-samples come file JSON. Nella directory dashboards/networking è presente una dashboard personalizzata specifica di Cloud CDN denominata cloud-cdn-monitoring.json. Carica questa dashboard personalizzata in Monitoring seguendo le istruzioni riportate in Installazione di dashboard di esempio.

Dashboard predefinite

Cloud Monitoring offre dashboard predefinite per Cloud CDN. Queste dashboard mostrano le metriche chiave che ti consentono di monitorare la distribuzione del traffico e l'efficacia della cache senza configurazione manuale.

Visualizzare le dashboard predefinite

Per accedere alle dashboard predefinite:

  1. Nella console Google Cloud , vai alla pagina Cloud CDN.

    Vai a Cloud CDN

  2. Fai clic sul nome dell'origine per cui vuoi visualizzare le dashboard.

  3. Nella pagina Dettagli origine, fai clic su Monitoraggio.

    Le dashboard predefinite vengono visualizzate per impostazione predefinita.

Metriche nelle dashboard

Le dashboard predefinite forniscono le seguenti metriche chiave sulle origini CDN:

  • Distribuzione del traffico client

    Una mappa geografica dinamica che mostra l'origine delle richieste dei client. Questa mappa fornisce una panoramica visiva e globale dell'origine del traffico. Puoi modificare il filtro dell'intervallo di tempo per analizzare i pattern di distribuzione del traffico in periodi specifici.

  • Metriche principali

    La seguente tabella descrive le metriche principali visualizzate nella dashboard.

    Metriche Descrizione
    Richieste totali Il conteggio aggregato di tutte le richieste HTTP/HTTPS elaborate da Cloud CDN, gestite dalla cache o dal servizio di backend di origine. Il grafico mostra il conteggio delle richieste nel tempo.
    Traffico in uscita dalla cache Il volume totale di dati, in byte, gestiti dalle cache perimetrali di Cloud CDN. Il grafico a barre mostra il volume di uscita nel tempo.
    Percentuale errori totali La percentuale di tutte le richieste che hanno generato un codice di stato di errore 4xx o 5xx. Questa metrica è un indicatore primario dello stato generale del servizio.
    Percentuale errori 4xx La percentuale di richieste che hanno generato un codice di stato lato client. Si tratta di codici 4xx, ad esempio 404 Not Found o 403 Forbidden. Questi errori indicano problemi con i contenuti richiesti o con le autorizzazioni del client.
    Percentuale errori 5xx La percentuale di richieste che hanno generato un codice di stato lato server. Si tratta di codici 5xx, ad esempio 502 Bad Gateway o 503 Service Unavailable. Questi errori indicano problemi con il servizio di origine backend o con la configurazione del bilanciatore del carico.
    Percentuale successi cache Il rapporto, espresso in percentuale, tra le richieste gestite direttamente dalla cache Cloud CDN e il numero totale di richieste.
    Riempimento totale della cache Il volume totale di dati, in byte, recuperati dal backend di origine e archiviati nella cache di Cloud CDN.

crea una dashboard personalizzata

Monitoring ti consente di creare dashboard personalizzate. Le dashboard possono utilizzare una qualsiasi delle metriche di monitoraggio per i bilanciatori del carico delle applicazioni esterno. Di seguito sono riportati alcuni snippet PromQL di esempio che puoi incollare nelle dashboard Monitoring personalizzate.

Conteggio byte richiesta suddiviso per risultato della cache

Questa query si concentra sui backend per i quali è abilitato Cloud CDN, il che avviene includendo cache_result!="DISABLED".

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

Latenza TCP round trip del client al 95% per un target di backend specifico

Questa query include backend_target_name="example-backend", che restringe il traffico al backend example-backend. Un backend può essere un bucket Cloud Storage, un gruppo di VM di Compute Engine o un backend esterno.

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

Conteggio delle richieste suddiviso per classe di codice di risposta per i backend abilitati a Cloud CDN

Questa query suddivide il traffico per classe di codice di risposta (2xx, 3xx, 4xx, 5xx) per separare le richieste client riuscite, gli errori del client e gli errori del server.

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

Conteggio delle richieste suddiviso per paese di origine

Questa query mostra il traffico suddiviso per paese di origine, che viene determinato utilizzando gli indirizzi IP dei client.

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

Passaggi successivi

  • Per scoprire di più sulla registrazione, incluso come esportare i log in BigQuery, Pub/Sub o Cloud Storage e come configurare le metriche basate sui log per il monitoraggio e gli avvisi, consulta la documentazione di Cloud Logging.

  • Per scoprire di più sui campi inclusi nella voce di log httpRequest, consulta HttpRequest.