Log e metriche per la memorizzazione nella cache

Ogni richiesta Cloud CDN viene registrata in Cloud Logging. Per informazioni sull'abilitazione e la disabilitazione del logging, consulta la panoramica sul logging e sul monitoraggio 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 tramite una regola di forwarding e poi tramite la mappa URL.

Per visualizzare i log di Cloud CDN, segui questi passaggi.

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, quindi Tutte le regole di forwarding.
    • 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, quindi seleziona una mappa URL.

Richiesta gestita dal backend

Per confermare che una richiesta venga gestita da un backend abilitato per Cloud CDN, esistono tre campi principali da cercare, come indicato di seguito:

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

Richiesta gestita dalla cache

La seguente voce di log indica 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"
}

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 log HttpRequest, che acquisisce il codice di stato HTTP, i byte restituiti e se è stata eseguita una ricerca e/o un riempimento della cache.

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

  • I campi statusDetails e cacheDetail del jsonPayload.

Puoi filtrare i seguenti campi per determinare lo stato di successo, fallimento o riconvalida della cache di una richiesta gestita da Cloud CDN:

  • Hit della cache

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

    o

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer!=true

  • successo della cache convalidato con il server di origine

    jsonPayload.statusDetails="response_from_cache_validated"

    o

    httpRequest.cacheHit=true
    httpRequest.cacheValidatedWithOriginServer=true

  • Miss cache

    jsonPayload.statusDetails="response_sent_by_backend"

    o

    httpRequest.cacheHit!=true
    httpRequest.cacheLookup=true

I campi log di tipo boolean solitamente vengono visualizzati solo se presentano il valore true. Se un campo booleano ha un valore di false, il campo viene omesso dal log.

Per questi campi viene applicata la codifica UTF-8. I caratteri che non sono UTF-8 vengono sostituiti con punti interrogativi.

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

Ogni richiesta avviata da Cloud CDN crea una voce di log di 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 di log per la singola richiesta client che ha chiesto 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 è usato per controllare l'integrità di un deployment Cloud CDN.

Cloud Monitoring fornisce un insieme di definizioni di dashboard disponibili su GitHub nel repository monitoring-dashboard-samples sotto forma di file JSON. Nel file di networking è presente una dashboard specifica per Cloud CDN chiamata cloud-cdn-monitoring.json. Carica questa dashboard personalizzata su Monitoring seguendo le istruzioni in Installazione di dashboard di esempio.

Monitoraggio delle query di esempio di Cloud CDN

Monitoring consente di creare dashboard personalizzate. Le dashboard possono utilizzare qualsiasi delle metriche di monitoraggio per gli Application Load Balancer esterni. Di seguito sono riportati alcuni esempi di snippet MQL che puoi incollare nelle dashboard di Monitoring personalizzate.

Conteggio dei byte delle richieste suddivisi per risultato della cache

Questa query è incentrata sui backend con Cloud CDN abilitato, per eseguire l'operazione 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 roundtrip del client al 95% per una destinazione specifica del backend

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

Numero di 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 distinguere le operazioni riuscite del client, quelle del client e quelle 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)]

Numero di richieste suddiviso per paese di origine

Questa query mostra il traffico suddiviso per paese di origine, 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 saperne di più sul logging, incluso come esportare i log in BigQuery, Pub/Sub o Cloud Storage, e su come configurare le metriche basate su 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.