Come posso risolvere il problema delle tracce, dei segmenti o dei servizi X-Ray mancanti nella mappa dei servizi?

9 minuti di lettura
0

Desidero risolvere i problemi relativi a tracce, segmenti e servizi AWS X-Ray mancanti nella mappa dei servizi.

Breve descrizione

Le tracce mancanti determinano una mancanza di servizi nella mappa del servizio. Di seguito sono riportate le cause che portano alla mancanza di tracce:

  • Strumentazione non corretta
  • L’SDK X-Ray non riesce a raggiungere il daemon X-Ray tramite l'indirizzo o il numero di porta del daemon
  • Il daemon X-Ray non riesce a raggiungere l'endpoint del servizio X-Ray
  • Il tracciamento non è configurato a livello di servizio individuale
  • Autorizzazioni di AWS Identity and Access Management (IAM) mancanti
  • Configurazione delle regole di campionamento
  • Configurazione mancante nell’OpenTelemetry Collector

L’assenza di segmenti principali aperti nei sottosegmenti può determinare la mancanza di segmenti. Per ulteriori informazioni, consulta Risoluzione dei problemi di AWS X-Ray.

Risoluzione

Strumentazione non corretta

Strumentazione non corretta quando si utilizza l’SDK X-Ray

Se il codice dell'applicazione non è strutturato correttamente per l’SDK X-Ray per applicare patch alle librerie e ai framework supportati, è possibile che vengano a mancare delle tracce. Anche gli ID di traccia che non vengono passati ai servizi downstream possono causare la mancanza di tracce.

Per risolvere questo problema, attiva la registrazione a livello di debug nell'SDK per inviare log più dettagliati nel file di log dell'applicazione. Ciò consente di isolare ulteriormente i problemi che sono correlati alla strumentazione e di tracciare il flusso dell'ID traccia nell'applicazione. I log indicano anche se manca una traccia perché questa non è stata campionata o per via di un'errata configurazione della strumentazione. Per ulteriori informazioni, controlla la registrazione di debug nell’SDK X-Ray per Java, Node.js, Python, .NET o Ruby.

Nota: se l'applicazione utilizza un agente di strumentazione automatica per Java, non acquisisce le tracce per le richieste asincrone e le tracce saranno mancanti. Se delle tracce risultano mancanti, usa la strumentazione manuale. Se riscontri funzionalità mancanti o problemi nell'SDK X-Ray, verifica se l'SDK OpenTelemetry utilizza l'agente di strumentazione automatica per Java.

Strumentazione non coretta quando si utilizza l’SDK OpenTelemetry

Se utilizzi l’SDK OpenTelemetry e il codice dell'applicazione non è correttamente strutturato per applicare le patch alle librerie e ai framework supportati, è possibile che nel codice vengano a mancare delle tracce. Anche gli ID traccia che non vengono passati ai servizi downstream possono causare la mancanza di segmenti.

Per risolvere questo problema, procedi come indicato di seguito:

  • Attiva la registrazione a livello di debug sull'SDK per inviare log più dettagliati al file di log dell'applicazione. Ciò consente di isolare ulteriormente i problemi relativi alla strumentazione e di tracciare il flusso dell'ID traccia nell'applicazione. I log indicano se manca una traccia perché questa non è stata campionata o per via di un'errata configurazione della strumentazione. Per ulteriori informazioni, controlla la registrazione di debug nell’SDK X-Ray per Java, Node.js, Python, .NET o Ruby.
  • Assicurati che la strumentazione non sia spenta. Per ulteriori informazioni, consulta Soppressione di una strumentazione automatica specifica sul sito Web OpenTelemetry.

Nota: per arricchire le tracce con le informazioni sull'infrastruttura AWS, assicurati che nell’SDK OpenTelemetry sia supportato il rilevatore di risorse AWS per quel servizio AWS . Per ulteriori informazioni, consulta Utilizzo dei rilevatori di risorse AWS.

L’SDK X-Ray non riesce a raggiungere il daemon X-Ray tramite l'indirizzo o il numero di porta del daemon

Se l’SDK X-Ray non riesce a raggiungere il daemon X-Ray tramite il numero e l'indirizzo di porta del daemon predefiniti o configurati, le tracce nell’SDK sono mancanti. L'indirizzo del daemon X-Ray viene passato all'SDK con la variabile ambientale AWS_XRAY_DAEMON_ADDRESS. Per impostazione predefinita, il daemon X-Ray rimane in ascolto sulla porta 2000 UDP. È possibile modificare questa porta tramite l'opzione della riga di comando e il file di configurazione passato al daemon X-Ray. Per ulteriori informazioni, consulta Utilizzo di un file di configurazione.

Se esegui il daemon X-Ray con log di debug, esegui il seguente comando per identificare la porta UDP configurata per il daemon X-Ray:

./xray -l debug

Nota: l'esempio seguente identifica 3000 come numero di porta.

Esempio di output:

2023-03-28T15:15:43-07:00 \[Debug\] Listening on UDP 127.0.0.1:3000

Se non esegui il daemon X-Ray con i log di debug, attiva l'opzione per il debug dei log, quindi esegui nuovamente il daemon. Per ulteriori informazioni, consulta Utilizzo di un file di configurazione.

Nota: se il daemon X-Ray non è in esecuzione sullo stesso computer dell'applicazione e dell'SDK X-Ray, controlla la regola in entrata e la regola in ingresso. Verifica che la regola in entrata del gruppo di sicurezza e la regola in ingresso della lista di controllo degli accessi alla rete (ACL) consentano il traffico. È necessario consentire il traffico per l’SDK X-Ray verso la porta dell’ascoltatore del daemon X-Ray.

Il daemon X-Ray non riesce a raggiungere l'endpoint del servizio X-Ray

Se il daemon X-Ray non riesce a raggiungere l'endpoint del servizio X-Ray, procedi come indicato di seguito:

  • Se hai configurato un proxy all’estremità di origine, controlla se il proxy non consente al traffico di raggiungere l'endpoint del servizio X-Ray.
  • Se utilizzi l'endpoint X-Ray Amazon Virtual Private Cloud (Amazon VPC) com.amazonaws.region.xray per connetterti al servizio X-Ray, verifica il gruppo di sicurezza collegato. Assicurati che il gruppo di sicurezza collegato disponga di traffico in uscita che consenta al traffico HTTPS di inviare dati all'API del servizio X-Ray. Assicurati inoltre che il gruppo di sicurezza consenta al traffico in entrata sulla porta 443 di autorizzare il daemon X-Ray.
  • Verifica che l'ACL di rete associata e l'endpoint Amazon VPC X-Ray abbiano una regola in uscita che consenta il traffico sulla porta 443 ovunque 0.0.0.0/0. Il daemon X-Ray deve inviare dati all'endpoint del servizio X-Ray. Verifica inoltre che la regola in ingresso dell’ACL di rete consenta il traffico dal daemon X-Ray all'endpoint VPC Amazon.

Il tracciamento non è configurato a livello di servizio individuale

Se non attivi la configurazione dell’X-Ray per determinati servizi AWS, potrebbero mancare delle tracce. Di seguito è riportato un elenco di servizi AWS per i quali devi attivare la configurazione dell’X-Ray a livello di servizio:

Autorizzazioni IAM mancanti

Verifica di disporre delle autorizzazioni IAM necessarie:

  • Se ricevi messaggi di errore Accesso negato nei log del daemon X-Ray, verifica le autorizzazioni IAM. Per inviare tracce all'endpoint del servizio X-Ray, il ruolo IAM del demone X-Ray richiede che le autorizzazioni siano contenute nella policy gestita AWSXRayDaemonWriteAccess. Se utilizzi una condizione basata sui tag nella policy IAM, assicurati che questa si riferisca al tag corretto. Per ulteriori informazioni, consulta Autorizzazione basata su tag X-Ray.
  • Se il daemon X-Ray è in esecuzione in Amazon Elastic Container Service (Amazon ECS) come container sidecar nell'attività, controlla il ruolo dell'attività di Amazon ECS. Assicurati che al ruolo dell’attività di Amazon ECS sia collegata la policy AWSXRayDaemonWriteAccess.
  • Se distribuisci il daemon X-Ray in Amazon Elastic Kubernetes Services (Amazon EKS), controlla il container sidecar nel pod. Assicurati che il container utilizzi i ruoli IAM per gli account di servizio (IRSA) e che la policy AWSXRayDaemonWriteAccess sia collegata al ruolo IAM.
  • Se hai configurato il daemon X-Ray in Amazon Elastic Compute Cloud (Amazon EC2), controlla il profilo dell'istanza associato. Assicurati che la policy AWSXRayDaemonWriteAccess sia collegata al ruolo del profilo dell'istanza associato a quell'istanza EC2.
  • Se hai configurato il daemon X-Ray in AWS Lambda, controlla il ruolo di esecuzione di Lambda. Verifica se il ruolo di esecuzione Lambda dispone della policy AWSXRayDaemonWriteAccess. Assicurati che la policy sia collegata.
  • Se hai attivato il tracciamento attivo in Amazon SNS e non riesci ancora a vedere le tracce, configura una policy delle risorse in X-Ray.

Nota: per verificare le autorizzazioni per X-Ray, utilizza il simulatore di policy IAM per testare il tuo ruolo o la tua policy IAM collegata alla risorsa. Verifica inoltre le policy di controllo dei servizi (SCP) per la tua organizzazione. Le SCP limitano l'accesso a livello di account per chiamate API specifiche.

Per un elenco delle policy IAM gestite per X-Ray, consulta Policy gestite da IAM per X-Ray.

Configurazione delle regole di campionamento

Se l’SDK X-Ray e i servizi AWS che supportano il tracciamento attivo con configurazione del campionamento non campionano le tracce, è possibile che vengano a mancare delle tracce. Utilizza le regole di campionamento per determinare le richieste da registrare. Per impostazione predefinita, l'SDK X-Ray registra la prima richiesta ogni secondo e il 5% di tutte le richieste aggiuntive. È possibile modificare la frequenza di campionamento per ridurre o aumentare il numero di tracce registrate.

Ad esempio, un serbatoio è impostato su 1. Un serbatoio pari a 1 indica che viene presa la prima richiesta di ogni secondo. Oppure, la frequenza di campionamento è impostata su 0,1. Una frequenza di campionamento di 0,1 indica che viene registrato il 10% delle richieste aggiuntive di ciascun secondo.

Poiché l’SDK X-Ray limita il numero di richieste registrate dall'SDK, è possibile che le richieste non vengano tutte tracciate. Per registrare più tracce, aumenta le impostazioni del serbatoio e della frequenza di campionamento. Per ulteriori informazioni, consulta Esempi di regole di campionamento.

Nota: se hai configurato più regole di campionamento e il numero di tracce campionate varia, controlla la regola di campionamento utilizzata dall’SDK X-Ray. Per ulteriori informazioni, consulta Visualizzazione dei risultati del campionamento.

Configurazione mancante nell’OpenTelemetry Collector

Se usi OpenTelemetry Collector anziché il daemon X-Ray, potrebbe mancare la configurazione richiesta del ricevitore e dell'esportatore. Se manca una configurazione, le tracce non verranno inviate all'endpoint del servizio X-Ray. In base al ricevitore, controlla la configurazione del ricevitore nel file config.yaml per verificare che non vi sia alcuna configurazione mancante.

Guarda queste configurazioni di esempio sul sito Web GitHub:

**Nota:**Assicurati che le autorizzazioni IAM necessarie siano incluse nella policy gestita AWSXRayDaemonWriteAccess.

AWS UFFICIALE
AWS UFFICIALEAggiornata 5 mesi fa