Risoluzione dei problemi
Panoramica
Comprendere come risolvere i problemi utilizzando CloudFront aiuta gli operatori e gli SRE (Ingegneri dell’affidabilità del sito) a correggere rapidamente gli errori che possono verificarsi in diverse parti dell'applicazione web: CloudFront, funzioni edge od origine. Alcuni di questi errori includono: un'origine sovraccarica che restituisce errori 5xx, CloudFront non in grado di connettersi all'origine, oppure un'esecuzione fallita di Lambda@Edge dopo un'eccezione non gestita nel suo codice.
Tracciamento delle richieste degli utenti fino all'origine
CloudFront genera un ID di richiesta univoco per ogni singola richiesta che elabora. Consigliamo di tracciare la richiesta utilizzando il suo ID mentre scorre lungo lo stack dell'applicazione:
- CloudFront aggiunge un'intestazione x-amz-cf-id che contiene l'ID della richiesta quando restituisce la risposta a una richiesta HTTP.
- CloudFront include l'ID della richiesta nel campo x-edge-request-id del record di log generato per la richiesta nei log di accesso. Se una WebACL di AWS WAF è collegata alla distribuzione CloudFront, il WAF include l'ID della richiesta nel campo IDrichiesta del record di log generato per la richiesta nei log WAF. Ad esempio, OLX ha creato un chatbot che può essere utilizzato dai tecnici dell'assistenza clienti in Slack per interrogare una richiesta specifica in base al suo ID di richiesta dai log WAF, per capire perché sono stati bloccati e quindi rispondere più rapidamente ai ticket dei clienti su base giornaliera.
- Se una funzione edge è configurata sulla distribuzione CloudFront, l'ID della richiesta viene reso disponibile alla funzione nel campo IDrichiesta dell'oggetto evento, sia per Funzioni CloudFront che per Lambda@Edge.
- In caso di mancate memorizzazioni nella cache, quando CloudFront inoltra la richiesta all'origine aggiunge l'intestazione x-amz-cf-id alla richiesta, con il valore dell'ID della richiesta. Consigliamo di registrare questa intestazione sui server di origine.
Risoluzione degli errori utilizzando CloudFront
Quando i tuoi sistemi di monitoraggio (ad esempio gli allarmi CloudWatch) rilevano un aumento delle risposte con errori 4xx o 5xx, devi analizzare il tipo di errore e dove si verifica per porvi rimedio.
A tale scopo, filtra i log di accesso di CloudFront sui record che generano un codice di errore e controlla i campi di registro x-edge-result-type, x-edge-response-result-type e x-edge-detailed-result-type per comprendere meglio il problema. L'analisi dei log di accesso dipende da dove essi vengono archiviati. Un approccio molto semplice consiste nell'interrogare i log archiviati in S3 utilizzando Athena con query SQL standard. Ad esempio, la seguente query SQL filtra i log per errori 5xx in un intervallo di date specifico, limitato alle prime 100 voci.
SELEZIONA * COME conteggio DA cloudfront_logs
DOVE stato >= 500 E "data" TRA DATA '2022-06-09' E DATA '2022-06-10'
LIMITE 100;
In alcuni casi, prendi in considerazione i log di WAF o CloudFront per ulteriori informazioni su come risolvere i problemi. Ad esempio, i log di AWS WAF potrebbero spiegare perché una determinata richiesta è stata bloccata. Un altro esempio è il controllo dei log delle funzioni edge in CloudWatch Logs per comprendere un errore di esecuzione che ha provocato un 5xx. Infine, consigliamo di comprendere in che modo CloudFront memorizza gli errori nella cache per sapere quando una risposta di errore viene restituita o meno dalla cache di CloudFront.
Risoluzione dei problemi di latenza con CloudFront
Quando i tuoi sistemi di monitoraggio (ad esempio gli allarmi CloudWatch sulla latenza dell'origine e i parametri della percentuale di riscontri nella cache) rilevano un aumento delle latenze di risposta, devi capire dov'è il collo di bottiglia della latenza per rimediare. Per farlo, considera l'analisi dei campi di latenza nei log di accesso di CloudFront. Considera i seguenti campi:
- time-to-first-byte: latenza del primo byte tra CloudFront e il visualizzatore, disponibile nei log standard e nei log in tempo reale
- time-taken: latenza dell'ultimo byte tra CloudFront e il visualizzatore, disponibile nei log standard e nei log in tempo reale
- origin-fbl: latenza del primo byte tra CloudFront e la tua origine, disponibile nei log in tempo reale
- origin-lbl: latenza dell'ultimo byte tra CloudFront e la tua origine, disponibile nei log in tempo reale
È possibile analizzare questi campi raggruppando la query SQL in base a una delle dimensioni pertinenti, ad esempio URL o Paese. Ciò ti aiuterà a individuare il problema della latenza. Inoltre, puoi trovare le stesse informazioni sul lato client utilizzando le intestazioni di temporizzazione del server di CloudFront, se configurate nella policy delle intestazioni di risposta. L'intestazione dei tempi del server riportata di seguito spiega che la mia richiesta aveva un riscontro nella cache del pop MRS52-P1 a Marsiglia, con una latenza downstream del primo byte di 64 millisecondi. Tieni presente l'intestazione Age generata da CloudFront, per spiegare che questo contenuto è stato recuperato o aggiornato dall'origine da 61 secondi.
Risoluzione dei problemi relativi alle prestazioni web utilizzando CloudWatch RUM
CloudWatch RUM consente di monitorare l'applicazione sul lato client, integrando un tag javascript nelle pagine web. Il javascript raccoglie i dati dalle API del browser, come i tempi di caricamento delle pagine con suddivisione nelle fasi di connessione (ricerca DNS, connessione TCP, ecc.) o Google Core Web Vitals (LCP, FID, ecc.), e quindi li invia a CloudWatch RUM per essere visualizzati nella dashboard. Puoi analizzare le prestazioni dell'applicazione filtrando in base a dimensioni specifiche come tipo di browser, Paese dell'utente o ID di pagina specifico.
Richiesta di assistenza al Supporto AWS
In situazioni in cui hai bisogno dell'assistenza del Supporto AWS per risolvere altri errori o problemi di latenza, apri un ticket di supporto che includa un elenco di ID richiesta CloudFront corrispondenti a richieste lente o che generano errori. Forniti questi ID richiesta, i tecnici dell'assistenza possono accedere ai log interni per comprendere meglio il problema e fornire consigli su come risolverlo.
Risorse
- Documentazione: risolvi i problemi comuni che potresti incontrare quando configuri Amazon CloudFront per distribuire i tuoi contenuti
- Blog: Quattro passaggi per il debug della distribuzione di contenuti su AWS. Nota che, sebbene questo blog sia obsoleto, la metodologia descritta è ancora valida.
- Documentazione: Come posso ridurre l'aumento della latenza e risolvere i relativi problemi da CloudFront?
- Procedura: Articoli sulla risoluzione dei problemi per CloudFront del Supporto AWS
- Procedura: Articoli sulla risoluzione dei problemi per AWS WAF del Supporto AWS
- AWS re:Invent 2021 - Ottimizza le applicazioni tramite approfondimenti sugli utenti finali con Amazon CloudWatch RUM
- Blog: Analisi dei log AWS WAF nei file di log di Amazon CloudWatch
- Documentazione: Test e debug delle funzioni Lambda@Edge
- Blog: Configura il monitoraggio completo con Amazon CloudFront utilizzando OpenTelemetry