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 raggruppa quindi i segmenti che hanno una richiesta comune in tracce. X-Ray elabora le tracce per generare un grafico di 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 client, percorso, agente utente

  • La risposta: stato, contenuto

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

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

Dati di segmento per una traccia a raggi X

L'SDK X-Ray raccoglie informazioni dalle intestazioni di richiesta e risposta, dal codice dell'applicazione e dai metadati sulle risorse su cui viene AWS eseguita. Scegliete i dati da raccogliere modificando la configurazione o il codice dell'applicazione per strumentare le richieste in entrata, le richieste downstream e i client SDK. AWS

Richieste inoltrate

Se un sistema di bilanciamento del carico 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 falsificato, quindi non dovrebbe essere considerato attendibile.

È possibile utilizzare 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 dei segmenti possono avere dimensioni fino a 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' AWS servizio 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 sottosegmenti per generare segmenti dedotti e nodi downstream 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 si chiama DynamoDB con un client SDK AWS strumentato, l'SDK X-Ray registra un sottosegmento per quella chiamata. DynamoDB non invia un segmento, quindi il segmento dedotto nella traccia, il nodo DynamoDB sul grafico del servizio e l'edge tra il servizio e DynamoDB contengono tutti informazioni dal sottosegmento.

Edge 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 di servizio. Ogni AWS risorsa che invia dati a X-Ray appare come un 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 PutTraceSegmentspuò 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 console X-Ray 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 invoca un microservizio (una funzione AWS Lambda ) per generare un nome casuale utilizzando una libreria di Node.js. L'X-Ray SDK for 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 Node.js utilizza 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 dei servizi 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. Questa richiesta è in genere una richiesta HTTP GET o POST che attraversa un sistema di bilanciamento del carico, raggiunge il codice dell'applicazione e genera chiamate downstream verso 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 sulla fatturazione delle tracce X-Ray. I dati di tracciamento vengono conservati per 30 giorni.

Campionamento

Per garantire un tracciamento efficiente e fornire un campione rappresentativo delle richieste servite dall'applicazione, l'SDK X-Ray applica un algoritmo di campionamento per determinare quali richieste vengono tracciate. Per impostazione predefinita, l'SDK X-Ray 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 servizio integrato a raggi X raggiunto dalla richiesta aggiunge un'intestazione di tracciamento, che viene letta dall'SDK X-Ray 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;Sampled=1
Sicurezza dell'intestazione di tracciamento

Un'intestazione di tracciamento può provenire da X-Ray SDK AWS servizio, an o dalla richiesta del client. 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 richiama un'API Web HTTP downstream con un client HTTP strumentato, 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 della traccia da Lambda e altri AWS servizi 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;Sampled=1;Lineage=a87bd80c:1|68fd508a:5|c512fbe3:2

Espressioni filtro

Anche utilizzando il campionamento, un'applicazione complessa genera una notevole quantità di dati. La AWS X-Ray console fornisce una easy-to-navigate visualizzazione 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

Estendendo le espressioni dei filtri, X-Ray supporta anche la funzione 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 dei servizi, i riepiloghi delle tracce e i parametri 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 ogni minuto. CloudWatch

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, consultare Prezzi di AWS X-Ray.

Per ulteriori informazioni sui gruppi, vedereConfigurazione dei gruppi.

Annotazioni e metadati

Quando si strumenta l'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 indica 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 di Trace 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 troppe richieste)

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