Risoluzione dei problemi relativi all'installazione di Application Signals - Amazon CloudWatch

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à.

Risoluzione dei problemi relativi all'installazione di Application Signals

Questa sezione contiene suggerimenti per la risoluzione dei problemi relativi a CloudWatch Application Signals.

L'applicazione non si avvia dopo l'abilitazione di Application Signals

Se l'applicazione su un cluster Amazon EKS non si avvia dopo aver abilitato Application Signals sul cluster, verifica quanto segue:

  • Verifica se l'applicazione è stata strumentata da un'altra soluzione di monitoraggio. Application Signals potrebbe non supportare la coesistenza con altre soluzioni di strumentazione.

  • Verifica che l'applicazione soddisfi i requisiti di compatibilità per utilizzare Application Signals. Per ulteriori informazioni, consulta Sistemi supportati da Application Signals .

  • Se l'applicazione non è riuscita a recuperare gli artefatti di Application Signals come l'agente AWS Distro for Java OpenTelemetery o Python e CloudWatch le immagini degli agenti, potrebbe trattarsi di un problema di rete.

Per mitigare il problema, rimuovete l'annotazione instrumentation.opentelemetry.io/inject-java: "true" o instrumentation.opentelemetry.io/inject-python: "true" dal manifesto di distribuzione dell'applicazione e ridistribuite l'applicazione. Quindi controlla se l'applicazione funziona.

Problemi noti

È noto che la raccolta di metriche di runtime nella versione Java SDK v1.32.5 non funziona con le applicazioni che utilizzano Wildfly. JBoss Questo problema si estende al componente aggiuntivo Amazon CloudWatch Observability EKS e interessa le versioni successive2.3.0-eksbuild.1. 2.5.0-eksbuild.1

In caso di impatto, esegui il downgrade della versione o disabilita la raccolta di parametri di runtime aggiungendo la variabile di ambiente all'applicazione. OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false

L'applicazione Python non si avvia dopo l'attivazione di Application Signals

È un problema noto nella OpenTelemetry strumentazione automatica che una variabile di PYTHONPATH ambiente mancante a volte può causare il mancato avvio dell'applicazione. Per risolvere questo problema, assicuratevi di impostare la variabile di PYTHONPATH ambiente sulla posizione della directory di lavoro dell'applicazione. Per ulteriori informazioni su questo problema, vedere L'impostazione della strumentazione automatica di Python di PYTHONPATH non è conforme al comportamento di risoluzione dei moduli di Python, interrompendo le applicazioni Django.

Per le applicazioni Django, ci sono configurazioni aggiuntive richieste, che sono descritte nella documentazione di Python OpenTelemetry .

  • Usa il --noreload flag per impedire il ricaricamento automatico.

  • Imposta la variabile di DJANGO_SETTINGS_MODULE ambiente sulla posizione del file dell'settings.pyapplicazione Django. Ciò garantisce che OpenTelemetry possa accedere e integrarsi correttamente con le impostazioni di Django.

Nessun dato di Application Signals per l'applicazione Python che utilizza un server WSGI

Se si utilizza un server WSGI come Gunicorn o uWSGI, è necessario apportare ulteriori modifiche per far funzionare la strumentazione automatica di ADOT Python.

Nota

Assicurati di utilizzare la versione più recente di ADOT Python e il componente aggiuntivo CloudWatch Amazon Observability EKS prima di procedere.

Passaggi aggiuntivi per abilitare Application Signals con un server WSGI
  1. Importa la strumentazione automatica nei processi di lavoro biforcati.

    Per Gunicorn, usa il gancio: post_fork

    # gunicorn.conf.py def post_fork(server, worker): from opentelemetry.instrumentation.auto_instrumentation import sitecustomize

    Per uWSGI, usa la direttiva. import

    # uwsgi.ini [uwsgi] ; required for the instrumentation of worker processes enable-threads = true lazy-apps = true import = opentelemetry.instrumentation.auto_instrumentation.sitecustomize
  2. Abilita la configurazione per la strumentazione automatica di ADOT Python per saltare il processo principale e rimandarlo ai lavoratori impostando la variabile di ambiente su. OTEL_AWS_PYTHON_DEFER_TO_WORKERS_ENABLED true

La mia applicazione Node.js non è strumentata o non genera telemetria Application Signals

Per abilitare Application Signals for Node.js, è necessario assicurarsi che l'applicazione Node.js utilizzi il formato del modulo CommonJS (CJS). Attualmente, AWS Distro for OpenTelemetry Node.js non supporta il formato del modulo ESM, poiché OpenTelemetry JavaScript il supporto di ESM è sperimentale ed è in corso di elaborazione.

Per determinare se la tua applicazione utilizza CJS e non ESM, assicurati che l'applicazione non soddisfi le condizioni per abilitare ESM.

Nessun dato applicativo nella dashboard di Application Signals

Se nei pannelli di controllo di Application Signals mancano parametri o tracce, le cause potrebbero essere le seguenti. Esamina queste cause solo se hai atteso per 15 minuti che Application Signals raccogliesse e visualizzasse i dati dall'ultimo aggiornamento.

  • Assicurati che la libreria e il framework che stai utilizzando siano supportati dall'agente Java ADOT. Per ulteriori informazioni, consulta Librerie/framework.

  • Assicurati che l' CloudWatch agente sia in esecuzione. Per prima cosa controlla lo stato dei pod degli CloudWatch agenti e assicurati che siano tutti a Running posto.

    kubectl -n amazon-cloudwatch get pods.

    Aggiungi quanto segue al file di configurazione dell' CloudWatch agente per abilitare i log di debug, quindi riavvia l'agente.

    "agent": { "region": "${REGION}", "debug": true },

    Quindi verifica la presenza di errori nei pod dell'agente. CloudWatch

  • Verifica la presenza di problemi di configurazione con l' CloudWatch agente. Verificate che quanto segue sia ancora presente nel file di configurazione dell' CloudWatch agente e che l'agente sia stato riavviato da quando è stato aggiunto.

    "agent": { "region": "${REGION}", "debug": true },

    Quindi controlla i registri di OpenTelemetry debug per verificare la presenza di messaggi di errore come. ERROR io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter - Failed to export ... Questi messaggi potrebbero indicare il problema.

    Se questo non risolve il problema, scarica e controlla le variabili di ambiente con nomi che iniziano con OTEL_ descrivendo il pod con il comando kubectl describe pod.

  • Per abilitare la registrazione di debug in OpenTelemetry Python, imposta la variabile di ambiente su debug e ridistribuisci l'OTEL_PYTHON_LOG_LEVELapplicazione.

  • Verifica la presenza di autorizzazioni errate o insufficienti per l'esportazione dei dati dall'agente. CloudWatch Se vedi Access Denied dei messaggi nei registri degli CloudWatch agenti, questo potrebbe essere il problema. È possibile che le autorizzazioni applicate durante l'installazione dell' CloudWatch agente siano state successivamente modificate o revocate.

  • Verifica la presenza di un problema relativo a AWS Distro for OpenTelemetry (ADOT) durante la generazione di dati di telemetria.

    Assicurati che le annotazioni sulla strumentazione instrumentation.opentelemetry.io/inject-java e sidecar.opentelemetry.io/inject-java vengano applicate alla distribuzione dell'applicazione e che il valore sia true. Senza questi, i pod dell'applicazione non saranno dotati di strumenti anche se il componente aggiuntivo ADOT è installato correttamente.

    Quindi, controlla se il container init è applicato all'applicazione e lo stato di Ready è True. Se il container init non è pronto, verifica lo stato del motivo.

    Se il problema persiste, abilita la registrazione di debug su OpenTelemetry Java SDK impostando la variabile di ambiente su true e ridistribuendo l'applicazione. OTEL_JAVAAGENT_DEBUG Quindi cerca i messaggi che iniziano con ERROR io.telemetry.

  • È possibile che l'esportatore metric/span stia eliminando i dati. Per scoprirlo, controlla il log dell'applicazione per i messaggi che includono Failed to export...

  • L' CloudWatch agente potrebbe subire delle limitazioni durante l'invio di metriche o intervalli ad Application Signals. Verifica la presenza di messaggi che indicano una limitazione nei registri degli agenti. CloudWatch

  • Assicurati di aver abilitato la configurazione del servizio. È necessario eseguire questa operazione solo una volta nella propria regione.

    Per confermare ciò, nella CloudWatch console scegli Application Signals, Services. Se il passaggio 1 non è contrassegnato come Completo, scegli Inizia a scoprire i tuoi servizi. I dati dovrebbero iniziare ad arrivare entro cinque minuti.

Le metriche di servizio o le metriche di dipendenza hanno valori sconosciuti

Se vedi UnknownService, UnknownOperationUnknownRemoteService, o UnknownRemoteOperationper un nome o un'operazione di dipendenza nei dashboard di Application Signals, controlla se la presenza di punti dati per il servizio remoto sconosciuto e il funzionamento remoto sconosciuto coincidono con le relative distribuzioni.

  • UnknownServicesignifica che il nome di un'applicazione strumentata è sconosciuto. Se la variabile di OTEL_SERVICE_NAME ambiente non è definita e service.name non è specificata inOTEL_RESOURCE_ATTRIBUTES, il nome del servizio è impostato su. UnknownService Per risolvere questo problema, specifica il nome del servizio in OTEL_SERVICE_NAME oOTEL_RESOURCE_ATTRIBUTES.

  • UnknownOperationsignifica che il nome di un'operazione richiamata è sconosciuto. Ciò si verifica quando Application Signals non è in grado di scoprire il nome di un'operazione che richiama la chiamata remota o quando il nome dell'operazione estratto contiene valori di cardinalità elevati.

  • UnknownRemoteServicesignifica che il nome del servizio di destinazione è sconosciuto. Ciò si verifica quando il sistema non è in grado di estrarre il nome del servizio di destinazione a cui accede la chiamata remota.

    Una soluzione consiste nel creare un intervallo personalizzato attorno alla funzione che invia la richiesta e aggiungere l'attributo aws.remote.service con il valore designato. Un'altra opzione è configurare l' CloudWatch agente per personalizzare il valore metrico di. RemoteService Per ulteriori informazioni sulle personalizzazioni nell' CloudWatch agente, consulta. Abilita CloudWatch Application Signals

  • UnknownRemoteOperationsignifica che il nome dell'operazione di destinazione è sconosciuto. Ciò si verifica quando il sistema non è in grado di estrarre il nome dell'operazione di destinazione a cui accede la chiamata remota.

    Una soluzione consiste nel creare un intervallo personalizzato attorno alla funzione che invia la richiesta e aggiungere l'attributo aws.remote.operation con il valore designato. Un'altra opzione è configurare l' CloudWatch agente per personalizzare il valore metrico di. RemoteOperation Per ulteriori informazioni sulle personalizzazioni nell' CloudWatch agente, consulta. Abilita CloudWatch Application Signals

Gestione di un ConfigurationConflict durante la gestione del componente aggiuntivo Amazon CloudWatch Observability EKS

Quando installi o aggiorni il componente aggiuntivo Amazon CloudWatch Observability EKS, se noti un errore causato da un Health Issue di tipo ConfigurationConflict con una descrizione che inizia conConflicts found when trying to apply. Will not continue due to resolve conflicts mode, è probabile che l' CloudWatch agente e i relativi componenti associati, come il ServiceAccount, il ClusterRole e il, siano ClusterRoleBinding installati nel cluster. Quando il componente aggiuntivo tenta di installare l' CloudWatch agente e i componenti associati, se rileva modifiche nei contenuti, per impostazione predefinita fallisce l'installazione o l'aggiornamento per evitare di sovrascrivere lo stato delle risorse sul cluster.

Se stai tentando di eseguire l'onboarding del componente aggiuntivo Amazon CloudWatch Observability EKS e riscontri questo errore, ti consigliamo di eliminare una configurazione di CloudWatch agente esistente che avevi precedentemente installato sul cluster e quindi di installare il componente aggiuntivo EKS. Assicurati di eseguire il backup di tutte le personalizzazioni che potresti aver apportato alla configurazione originale dell' CloudWatch agente, ad esempio una configurazione personalizzata dell'agente, e di fornirle al componente aggiuntivo Amazon CloudWatch Observability EKS alla prossima installazione o aggiornamento. Se in precedenza avevi installato l' CloudWatch agente per l'onboarding su Container Insights, consulta per ulteriori informazioni. Eliminazione dell' CloudWatch agente e di Fluent Bit for Container Insights

In alternativa, il componente aggiuntivo supporta un'opzione di configurazione per la risoluzione dei conflitti che può specificare OVERWRITE. È possibile utilizzare questa opzione per procedere con l'installazione o l'aggiornamento del componente aggiuntivo sovrascrivendo i conflitti nel cluster. Se utilizzi la console Amazon EKS, trovi il metodo di risoluzione dei conflitti selezionando le impostazioni di configurazione facoltative quando crei o aggiorni il componente aggiuntivo. Se utilizzi il AWS CLI, puoi fornire il comando --resolve-conflicts OVERWRITE al tuo comando per creare o aggiornare il componente aggiuntivo.

Voglio filtrare le metriche e le tracce non necessarie

Se Application Signals sta raccogliendo tracce e metriche che non desideri, consulta Gestisci le operazioni ad alta cardinalità per informazioni sulla configurazione dell' CloudWatch agente con regole personalizzate per ridurre la cardinalità.

Per informazioni sulla personalizzazione delle regole di campionamento delle tracce, vedere Configurare le regole di campionamento nella documentazione di X-Ray.

Cosa significa? InternalOperation

An InternalOperation è un'operazione che viene attivata dall'applicazione internamente anziché da una chiamata esterna. Vedere InternalOperation è un comportamento sano.

Alcuni esempi tipici in cui è possibile vedere InternalOperation sono i seguenti:

  • Precaricamento all'avvio: l'applicazione esegue un'operazione denominata loadDatafromDB che legge i metadati da un database durante la fase di riscaldamento. Invece di osservare un'operazione loadDatafromDB come servizio, la vedrete classificata come. InternalOperation

  • Esecuzione asincrona in background: l'applicazione si iscrive a una coda di eventi ed elabora i dati in streaming di conseguenza ogni volta che viene effettuato un aggiornamento. Ogni operazione attivata verrà eseguita InternalOperation come operazione di servizio.

  • Recupero delle informazioni sull'host da un registro dei servizi: l'applicazione comunica con un registro dei servizi per l'individuazione del servizio. Tutte le interazioni con il sistema di rilevamento sono classificate come. InternalOperation

Come posso abilitare la registrazione per le applicazioni.NET?

Per abilitare la registrazione per le applicazioni.NET, configura le seguenti variabili di ambiente. Per ulteriori informazioni su come configurare queste variabili di ambiente, vedi Risoluzione dei problemi relativi alla strumentazione automatica.NET nella documentazione. OpenTelemetry

  • OTEL_LOG_LEVEL

  • OTEL_DOTNET_AUTO_LOG_DIRECTORY

  • COREHOST_TRACE

  • COREHOST_TRACEFILE

Come posso risolvere i conflitti tra le versioni dell'assembly nelle applicazioni.NET?

Se viene visualizzato il seguente errore, consulta Conflitti tra versioni di Assembly nella OpenTelemetry documentazione per i passaggi di risoluzione.

Unhandled exception. System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'. The system cannot find the file specified. File name: 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=7.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' at Microsoft.AspNetCore.Builder.WebApplicationBuilder..ctor(WebApplicationOptions options, Action`1 configureDefaults) at Microsoft.AspNetCore.Builder.WebApplication.CreateBuilder(String[] args) at Program.<Main>$(String[] args) in /Blog.Core/Blog.Core.Api/Program.cs:line 26

Posso disabilitare FluentBit?

Puoi disabilitarlo FluentBit configurando il componente aggiuntivo Amazon CloudWatch Observability EKS. Per ulteriori informazioni, consulta (Facoltativo) Configurazione aggiuntiva.

Posso filtrare i log dei contenitori prima di esportarli in Logs? CloudWatch

No, il filtraggio dei registri dei contenitori non è ancora supportato.