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.
Argomenti
- L'applicazione non si avvia dopo l'abilitazione di Application Signals
- L'applicazione Python non si avvia dopo l'attivazione di Application Signals
- Nessun dato di Application Signals per l'applicazione Python che utilizza un server WSGI
- La mia applicazione Node.js non è strumentata o non genera telemetria Application Signals
- Nessun dato applicativo nella dashboard di Application Signals
- Le metriche di servizio o le metriche di dipendenza hanno valori sconosciuti
- Gestione di un ConfigurationConflict durante la gestione del componente aggiuntivo Amazon CloudWatch Observability EKS
- Voglio filtrare le metriche e le tracce non necessarie
- Cosa significa? InternalOperation
- Come posso abilitare la registrazione per le applicazioni.NET?
- Come posso risolvere i conflitti tra le versioni dell'assembly nelle applicazioni.NET?
- Posso disabilitare FluentBit?
- Posso filtrare i log dei contenitori prima di esportarli in Logs? CloudWatch
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
Usa il
--noreload
flag per impedire il ricaricamento automatico.Imposta la variabile di
DJANGO_SETTINGS_MODULE
ambiente sulla posizione del file dell'settings.py
applicazione 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
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
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.
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 comandokubectl describe pod
.Per abilitare la registrazione di debug in OpenTelemetry Python, imposta la variabile di ambiente su
debug
e ridistribuisci l'OTEL_PYTHON_LOG_LEVEL
applicazione.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
esidecar.opentelemetry.io/inject-java
vengano applicate alla distribuzione dell'applicazione e che il valore siatrue
. 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 diReady
èTrue
. Se il containerinit
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 conERROR 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 eservice.name
non è specificata inOTEL_RESOURCE_ATTRIBUTES
, il nome del servizio è impostato su.UnknownService
Per risolvere questo problema, specifica il nome del servizio inOTEL_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 SignalsUnknownRemoteOperationsignifica 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'operazioneloadDatafromDB
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
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
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.