Log e metriche per la memorizzazione nella cache

Ogni richiesta Cloud CDN viene registrata 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 che a cui sono collegati i backend Cloud CDN. I log di Cloud CDN sono indicizzati innanzitutto mediante una regola di forwarding e poi tramite 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, quindi seleziona 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 di una mappa URL utilizzata da una regola di inoltro: seleziona una regola di inoltro e poi una mappa URL.

Richiesta gestita dal backend

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

  • 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 confermare che il è stata fornita dal backend.
    • statusDetails: "response_sent_by_backend"

Richiesta gestita dalla cache

La seguente voce di log mostra un hit 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 la cache da cui è stata fornita 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).

  • Le statusDetails e cacheDetail campi di jsonPayload.

Puoi filtrare i seguenti campi per determinare hit, fallimenti della cache o di riconvalida 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

  • Hit cache convalidati con 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

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

Per questi campi viene applicata la codifica UTF-8. Caratteri non UTF-8 vengono sostituiti da punti interrogativi.

Quando Cloud CDN gestisce una richiesta del client avviando la convalida o richieste di intervalli di byte, il campo serverIp viene omesso 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 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 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 del 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 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 su Monitoring seguendo le istruzioni in Installazione delle dashboard di esempio.

Query di esempio per il monitoraggio di Cloud CDN

Il monitoraggio ti consente creare dashboard personalizzate. Le dashboard possono utilizzare uno qualsiasi dei di monitoraggio delle metriche 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 è incentrata sui backend per cui è abilitato Cloud CDN. Per farlo, devi includere 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 verso il 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) aiutano a separare 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)]

Conteggio delle richieste suddiviso per paese di origine

Questa query mostra il traffico suddiviso per paese di origine, che è determinato utilizzando gli indirizzi IP 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, in 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.