Log e metriche per la memorizzazione nella cache

Ogni richiesta Cloud CDN viene registrata in Cloud Logging. Per informazioni su come attivare e disattivare il logging, consulta la panoramica del monitoraggio e del logging del bilanciatore del carico delle applicazioni esterno e di Cloud CDN.

I log di 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 per regola di inoltro e poi per 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 come segue:
    • Visualizza tutti i log:seleziona il menu Risorsa e poi Tutte le regole di inoltro.
    • Visualizza i log di una regola di forwarding:seleziona il nome della regola di forwarding dall'elenco delle regole di inoltro.
    • Visualizza i log di una mappa URL utilizzata da una regola di forwarding: seleziona una regola di forwarding e poi una mappa URL.

Richiesta gestita dal backend

Per verificare che una richiesta venga eseguita da un backend abilitato per Cloud CDN, devi cercare tre campi principali, come segue:

  • httpRequest: quando una richiesta viene eseguita da un backend, puoi vedere che la cache è compilata 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 inviata dal backend.
    • statusDetails: "response_sent_by_backend"

Richiesta pubblicata 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 nei log

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 del 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 inviata la risposta della cache. Ad esempio, una risposta della cache pubblicata da una cache ad Amsterdam avrà un valore cacheId pari a AMS-85e2bd4b, dove AMS è il codice IATA e 85e2bd4b è un identificatore opaco dell'istanza della cache (in quanto alcune località Cloud CDN hanno più cache distinte).

  • I campi statusDetails e cacheDetail del jsonPayload.

Puoi filtrare in base ai seguenti campi per determinare lo successo della cache, miss o convalida di una richiesta pubblicata da Cloud CDN:

  • Hit della cache

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

    o

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer!=true

  • Hit della cache convalidato con il server di origine

    jsonPayload.statusDetails="response_from_cache_validated"

    o

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer=true

  • Mancata corrispondenza nella cache

    jsonPayload.statusDetails="response_sent_by_backend"

    o

    httpRequest.cacheHit!=true
    httpRequest.cacheLookup=true

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

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

Per questi campi viene applicata la codifica UTF-8. I caratteri non UTF-8 vengono sostituiti con punti di domanda.

Quando Cloud CDN gestisce una richiesta del 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 del client. Questo accade perché Cloud CDN può inviare richieste a più indirizzi IP del server in risposta a una singola richiesta del client.

Ogni richiesta avviata da Cloud CDN crea un'entrata di log Cloud Logging. La voce di log risultante contiene un campo parentInsertId all'interno di jsonPayload. Puoi utilizzare questo campo per identificare il insertId della voce del 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 di 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 un insieme di definizioni di dashboard disponibili su GitHub nel repository monitoring-dashboard-samples come file JSON. Nel file di rete è presente una dashboard specifica per Cloud CDN denominata cloud-cdn-monitoring.json. Carica questa dashboard personalizzata in Monitoring seguendo le istruzioni riportate in Installazione di dashboard di esempio.

Query di esempio per il monitoraggio di Cloud CDN

Monitoring ti consente di creare dashboard personalizzate. Le dashboard possono utilizzare qualsiasi metrica di monitoraggio per i bilanciatori del carico delle applicazioni esterni. Di seguito sono riportati alcuni esempi di snippet MQL che puoi incollare nelle dashboard di monitoraggio personalizzate.

Conteggio byte richiesta suddiviso per risultato della cache

Questa query si concentra sui backend per i quali è attivata Cloud CDN, includendo 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)]

Latenza TCP di andata e ritorno del client al 95% per un target di backend specifico

Questa query include filter (resource.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 Compute Engine o un backend esterno.

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

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

Questa query suddivide il traffico in base alla classe del codice di risposta (2xx, 3xx, 4xx, 5xx) per aiutarti a distinguere i successi del client, gli errori del client e gli errori del server.

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

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.

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

Passaggi successivi

  • Per scoprire di più sulla registrazione, inclusa la modalità di esportazione dei 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 informazioni sui campi inclusi nella voce di log httpRequest, consulta HttpRequest.