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
- Nella console Google Cloud , vai alla pagina Esplora log.
- Nel menu Risorsa, seleziona Bilanciatore del carico HTTP Cloud.
- 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_BYTEScacheLookup: True
requestURL
: URL
jsonPayload
: dal campostatusDetails
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 diAMS-85e2bd4b
, doveAMS
è il codice IATA, e85e2bd4b
è un identificatore opaco dell'istanza della cache (perché alcune posizioni Cloud CDN hanno più cache discrete).I campi
statusDetails
ecacheDetail
dijsonPayload
.
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:
Hit nella cache
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 del 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 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 un insieme di definizioni di dashboard disponibili su GitHub nel
repository monitoring-dashboard-samples
come file JSON. Nella directory dashboards/networking
è presente una dashboard 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.
Esempi di query di monitoraggio di Cloud CDN
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, operazione eseguita 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 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
, consultaHttpRequest
.