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
- Nella console Google Cloud, vai alla pagina Esplora log.
- Nel menu Risorsa, seleziona Bilanciatore del carico HTTP Cloud.
- 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_BYTEScacheLookup: True
requestURL
: URL
jsonPayload
: dal campostatusDetails
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 aAMS-85e2bd4b
, doveAMS
è il codice IATA, mentre85e2bd4b
è un identificatore opaco dell'istanza della cache (perché alcune località di Cloud CDN hanno più cache discrete).I campi
statusDetails
ecacheDetail
deljsonPayload
.
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
, consultaHttpRequest
.