View a markdown version of this page

AWS X-Ray concetti - AWS X-Ray

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

AWS X-Ray concetti

AWS X-Ray riceve i dati dai servizi come segmenti. X-Ray quindi raggruppa i segmenti che hanno una richiesta comune in tracce. X-Ray elabora le tracce per generare un grafico del servizio che fornisce una rappresentazione visiva dell'applicazione.

Segmenti

Le risorse di elaborazione che eseguono la logica dell'applicazione inviano i dati sulle loro attività sotto forma di segmenti. Un segmento contiene il nome della risorsa, i dettagli relativi alla richiesta e i dettagli sull'attività eseguita. Ad esempio, quando una richiesta HTTP raggiunge l'applicazione, il segmento può memorizzare i seguenti dati:

  • L'host: nome host, alias o indirizzo IP

  • La richiesta: metodo, indirizzo del cliente, percorso, agente utente

  • La risposta: stato, contenuto

  • Il lavoro svolto: orari di inizio e fine, sottosegmenti

  • Problemi che si verificano: errori, guasti ed eccezioni, inclusa l'acquisizione automatica delle pile di eccezioni.

Dati di segmentazione per qualsiasi traccia X-Ray

L' X-Ray SDK raccoglie informazioni dalle intestazioni di richiesta e risposta, dal codice dell'applicazione e dai metadati sulle AWS risorse su cui viene eseguito. Puoi scegliere i dati da raccogliere modificando la configurazione o il codice dell'applicazione per analizzare le richieste in arrivo, le richieste a valle e i client SDK. AWS

Richieste inoltrate

Se un load balancer o un altro intermediario inoltra una richiesta all'applicazione, X-Ray prende l'IP del client dall'X-Forwarded-Forintestazione della richiesta anziché dall'IP di origine nel pacchetto IP. L'IP del client registrato per una richiesta inoltrata può essere contraffatto, quindi non dovrebbe essere considerato attendibile.

Puoi utilizzare l' X-Ray SDK per registrare informazioni aggiuntive come annotazioni e metadati. Per ulteriori informazioni sulla struttura e le informazioni memorizzate nei segmenti e nei sottosegmenti, consulta AWS X-Ray segmentare i documenti. I documenti di segmento possono avere una dimensione massima di 64 kB.

Sottosegmenti

Un segmento può suddividere i dati sull'attività eseguita in sottosegmenti. I sottosegmenti offrono una maggiore granularità delle informazioni temporali e più dettagli sulle chiamate a valle invocate dall'applicazione per soddisfare la richiesta originale. Un sottosegmento può contenere dettagli aggiuntivi su una chiamata a un database SQL Servizio AWS, a un'API HTTP esterna o a un database SQL. Puoi anche definire sottosegmenti arbitrari per analizzare specifiche funzioni o righe di codice nell'applicazione.

I sottosegmenti forniscono informazioni più dettagliate

Per i servizi che non inviano segmenti propri, come Amazon DynamoDB, X-Ray utilizza i sottosegmenti per generare segmenti dedotti e nodi a valle sulla mappa di traccia. Questo ti consente di visualizzare tutte le dipendenze a valle, anche se non supportano il tracciamento o sono risorse esterne.

I sottosegmenti rappresentano la vista di una chiamata a valle da parte dell'applicazione che opera come client. Se anche il servizio a valle è analizzato, il segmento che questo invia sostituisce il segmento dedotto generato dal segmento del client a monte. Il nodo sul grafo del servizio utilizza sempre le informazioni del segmento del servizio, se disponibili, mentre il collegamento tra due nodi utilizza le informazioni del sottosegmento del servizio a monte.

Ad esempio, quando chiami DynamoDB con un client SDK strumentato, l' AWS SDK registra un sottosegmento per quella chiamata. X-Ray DynamoDB non invia un segmento, quindi il segmento dedotto nella traccia, il nodo DynamoDB nel grafico del servizio e il bordo tra il servizio e DynamoDB contengono tutti informazioni dal sottosegmento.

Margine tra un'applicazione strumentata e DynamoDB.

Quando chiami un altro servizio analizzato utilizzando con un'applicazione analizzata, il servizio a valle invia proprio segmento per memorizzare la sua vista della stessa chiamata che il servizio a monte ha memorizzato in un sottosegmento. Nel grafo del servizio, entrambi i nodi del servizio contengono le informazioni su tempi ed errori provenienti dai segmenti di tali servizi, mentre il collegamento tra essi è basato sulle informazioni provenienti dal sottosegmento del servizio a monte.

Un'applicazione analizzata che chiama un'altra applicazione analizzata.

Entrambi i punti di vista sono utili, poiché il servizio a valle memorizza esattamente l'ora di inizio e fine dell'elaborazione della richiesta, mentre il servizio a monte memorizza la latenza totale che include il tempo che la richiesta ha consumato nel trasferimento tra i due servizi.

Grafico del servizio

X-Ray utilizza i dati inviati dall'applicazione per generare un grafico del servizio. Ogni AWS risorsa a cui invia i dati X-Ray viene visualizzata come servizio nel grafico. I collegamenti connettono i servizi che collaborano per elaborare le richieste. I collegamenti connettono i client alla tua applicazione e la tua applicazione ai servizi e alle risorse a valle utilizzate.

Nomi dei servizi

I segmenti name devono corrispondere al nome di dominio o al nome logico del servizio che genera il segmento. Tuttavia, questo non viene applicato. Qualsiasi applicazione autorizzata PutTraceSegments può inviare segmenti con qualsiasi nome.

Un grafo del servizio è un documento in formato JSON che contiene le informazioni sui servizi e sulle risorse che costituiscono la tua applicazione. La X-Ray console utilizza il grafico del servizio per generare una visualizzazione o una mappa dei servizi.

Mappa di tracciamento

Per un'applicazione distribuita, X-Ray combina i nodi di tutti i servizi che elaborano le richieste con lo stesso ID di traccia in un unico grafico di servizio. Il primo servizio a cui accede la richiesta aggiunge un'intestazione di tracciamento che viene propagata tra il front-end e servizi che vengono invocati.

Ad esempio, Scorekeep esegue un'API Web che chiama un microservizio (una AWS Lambda funzione) per generare un nome casuale utilizzando una libreria. Node.js L' X-Ray SDK per Java genera l'ID di traccia e lo include nelle chiamate a Lambda. Lambda invia i dati di tracciamento e passa l'ID di traccia alla funzione. L' X-Ray SDK per utilizza Node.js anche l'ID di traccia per inviare dati. Di conseguenza, i nodi per l'API, il servizio Lambda e la funzione Lambda appaiono tutti come nodi separati ma connessi sulla mappa di traccia.

I dati del grafico del servizio vengono conservati per 30 giorni.

Tracce

Un ID di tracciamento traccia il percorso di una richiesta attraverso l'applicazione. Un tracciamento raccoglie tutti i segmenti generati da una singola richiesta. Tale richiesta è in genere una richiesta HTTP GET o POST che passa attraverso un sistema di bilanciamento del carico, recupera il codice dell'applicazione e genera chiamate downstream ad altri AWS servizi o API Web esterne. Il primo servizio supportato con cui la richiesta HTTP interagisce aggiunge un'intestazione contenente un ID di tracciamento alla richiesta e la propaga a valle per tracciare latenza, completamento e altri dati relativi alla richiesta.

Sequenza temporale di un tracciamento che raccoglie tutti i segmenti generati da una singola richiesta

Consulta AWS X-Ray i prezzi per informazioni su come X-Ray vengono fatturate le tracce. I dati di tracciamento vengono conservati per 30 giorni.

Campionamento

Per garantire un tracciamento efficiente e fornire un campione rappresentativo delle richieste soddisfatte dall'applicazione, l' X-Ray SDK applica un algoritmo di campionamento per determinare quali richieste vengono tracciate. Per impostazione predefinita, l' X-Ray SDK registra la prima richiesta ogni secondo e il cinque percento di eventuali richieste aggiuntive.

Per evitare di incorrere in costi del servizio durante l'acquisizione delle nozioni di base, il tasso di campionamento di default è conservativo. È possibile configurare X-Ray per modificare la regola di campionamento predefinita e configurare regole aggiuntive che applicano il campionamento in base alle proprietà del servizio o della richiesta.

Ad esempio, potresti voler disabilitare il campionamento e tracciare tutte le richieste di chiamate che modificano lo stato o gestiscono utenti o transazioni. In caso di elevati volumi di chiamate di sola lettura, come il polling in background, i controlli dello stato della connessione o la manutenzione della connessione, puoi campionare con una bassa percentuale e continuare comunque a disporre di un numero sufficiente di dati per rilevare eventuali problemi.

Per ulteriori informazioni, consulta Configurazione delle regole di campionamento di.

Intestazione di tracciamento

Tutte le richieste sono tracciate, fino a un valore minimo configurabile. Dopo aver raggiunto tale minimo, viene tracciata solo una percentuale delle richieste per evitare costi non necessari. La selezione per il campionamento e l'ID di tracciamento vengono aggiunti alle richieste HTTP nelle intestazioni di tracciamento denominate X-Amzn-Trace-Id. Il primo X-Ray-integrated servizio a cui viene inviata la richiesta aggiunge un'intestazione di tracciamento, che viene letta dall' X-Ray SDK e inclusa nella risposta.

Esempio Intestazione di tracciamento con ID di tracciamento root e selezione per il campionamento
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1
Sicurezza dell'intestazione di tracciamento

Un'intestazione di tracciamento può provenire dall' X-Ray SDK, da una richiesta o dal client. Servizio AWS La tua applicazione può rimuovere l'intestazione X-Amzn-Trace-Id dalle richieste in entrata per evitare problemi causati dall'aggiunta alle richieste di ID di tracciamento e selezione per il campionamento da parte degli utenti.

Se la richiesta proviene da un'applicazione analizzata, l'intestazione di tracciamento può anche contenere un ID segmento padre. Ad esempio, se l'applicazione chiama un'API web HTTP downstream con un client HTTP strumentato, l' X-Ray SDK aggiunge l'ID del segmento per la richiesta originale all'intestazione di tracciamento della richiesta downstream. Un'applicazione analizzata che elabora la richiesta a valle può memorizzare l'ID del segmento padre per collegare le due richieste.

Esempio Intestazione di tracciamento con ID di tracciamento root, ID del segmento padre e selezione per il campionamento
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1

Lineagepuò essere aggiunto all'intestazione di traccia da Lambda e altri Servizi AWS come parte dei loro meccanismi di elaborazione e non deve essere utilizzato direttamente.

Esempio Intestazione di tracciamento con Lineage
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1;Lineage=25:a87bd80c:1

Espressioni filtro

Anche utilizzando il campionamento, un'applicazione complessa genera una notevole quantità di dati. La AWS X-Ray console offre una visualizzazione facile da navigare del grafico del servizio. Mostra le informazioni di stato e prestazionali che ti permettono di identificare i problemi e le opportunità di ottimizzazione della tua applicazione. In caso di tracciamento avanzato, puoi approfondire l'analisi dei tracciamenti delle singole richieste, oppure utilizzare espressioni filtro per individuare tracciamenti correlati a specifici percorsi o utenti.

Approfondimento dell'analisi dei tracciamenti delle singole richieste

Gruppi

L'estensione delle espressioni di filtro supporta X-Ray anche la funzionalità di gruppo. Con un'espressione di filtro, è possibile definire i criteri in base ai quali accettare le tracce nel gruppo.

Puoi chiamare il gruppo per nome o tramite Amazon Resource Name (ARN) per generare il proprio grafico del servizio, i riepiloghi delle tracce e le metriche Amazon. CloudWatch Una volta creato un gruppo, le tracce in entrata vengono confrontate con l'espressione del filtro del gruppo mentre vengono archiviate nel servizio. X-Ray Le metriche relative al numero di tracce che corrispondono a ciascun criterio vengono pubblicate CloudWatch ogni minuto.

L'aggiornamento dell'espressione di filtro di un gruppo non modifica i dati già registrati. L'aggiornamento si applica solo per le successive tracce. Ciò può comportare un grafo unito delle espressioni nuove e vecchie. Per evitare questo problema, elimina il gruppo corrente e creane uno nuovo.

Nota

I gruppi sono fatturati per il numero di tracce recuperate corrispondenti all'espressione di filtro. Per ulteriori informazioni, consulta Prezzi di AWS X-Ray.

Per ulteriori informazioni sui gruppi, vedereConfigurazione dei gruppi.

Annotazioni e metadati

Quando si esegue lo strumento dell'applicazione, l' X-Ray SDK registra le informazioni sulle richieste in entrata e in uscita, sulle AWS risorse utilizzate e sull'applicazione stessa. Puoi aggiungere al documento di segmento altre informazioni come annotazioni e metadati. Le annotazioni e i metadati vengono aggregati a livello di traccia e possono essere aggiunti a qualsiasi segmento o sottosegmento.

Le annotazioni sono semplici coppie chiave-valore indicizzate per l'uso con espressioni filtro. Utilizzale per registrare i dati che desideri utilizzare per raggruppare le tracce nella console oppure per chiamare l'API GetTraceSummaries.

X-Ray indicizza fino a 50 annotazioni per traccia.

I metadati sono coppie chiave-valore che possono assumere valori di qualsiasi tipo, inclusi oggetti ed elenchi, ma che non vengono indicizzate. Utilizza i metadati per registrare dati aggiuntivi che desideri memorizzare all'interno del tracciamento ma non ti servono per effettuare ricerche all'interno dei tracciamenti.

È possibile visualizzare annotazioni e metadati nella finestra dei dettagli del segmento o del sottosegmento, all'interno della pagina dei dettagli della traccia nella console. CloudWatch

Le annotazioni e i metadati sono visualizzabili nei dettagli del segmento o del sottosegmento nella console CloudWatch

Errori, malfunzionamenti ed eccezioni

X-Ray tiene traccia degli errori che si verificano nel codice dell'applicazione e degli errori restituiti dai servizi downstream. Gli errori sono classificati come segue.

  • Error— Errori del client (errori della serie 400)

  • Fault— Guasti del server (errori della serie 500)

  • Throttle— Errori di limitazione (429 richieste di troppo)

Quando si verifica un'eccezione mentre l'applicazione sta servendo una richiesta strumentata, l' X-Ray SDK registra i dettagli sull'eccezione, inclusa la traccia dello stack, se disponibile. Puoi visualizzare le eccezioni nei dettagli del segmento nella console. X-Ray