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à.
Sistemi supportati
Application Signals è supportato e testato su Amazon EKS, Kubernetes nativo, Amazon ECS e Amazon. EC2 Le istruzioni per abilitare Application Signals su Amazon EC2 dovrebbero funzionare su qualsiasi piattaforma che supporti l' CloudWatch agente e AWS Distro for OpenTelemetry.
Argomenti
Compatibilità con Java
Application Signals supporta le applicazioni Java e supporta le stesse librerie e framework Java di AWS Distro for. OpenTelemetry Per ulteriori informazioni, consulta Librerie, framework, server di applicazioni supportati
Compatibilità DI.NET
Application Signals supporta le stesse librerie e framework .NET di AWS Distro for. OpenTelemetry Per ulteriori informazioni, consulta Strumentazione supportata.
Application Signals supporta applicazioni.NET in esecuzione su x86-64 o ARM64 CPUs e supporta Linux x64, Linux ARM64 e Microsoft Windows Server 2022 x64.
Compatibilità PHP
Application Signals supporta applicazioni PHP con strumentazione Zero Code. OpenTelemetry A tale scopo non è AWS disponibile alcun SDK Distro for Open Telemetry (ADOT). È necessario utilizzare lo standard OpenTelemetry Instrumentation SDK con Transaction Search abilitato. Per iniziare a utilizzare la strumentazione a codice zero in PHP, segui questi passaggi dai documenti di PHP Instrumentation, OpenTelemetry PHP zero-code instrumentation.
Compatibilità con Ruby
Application Signals supporta le applicazioni Ruby con strumentazione Zero Code. OpenTelemetry A tale scopo non è AWS disponibile alcun SDK Distro for Open Telemetry (ADOT). È necessario utilizzare lo standard OpenTelemetry Instrumentation SDK con Transaction Search abilitato. Per iniziare a utilizzare la strumentazione a codice zero in Ruby, segui questi passaggi dai documenti di Ruby Instrumentation, OpenTelemetry Ruby zero-code instrumentation.
Compatibilità con Python
Application Signals supporta le stesse librerie e framework di AWS Distro for. OpenTelemetry Per ulteriori informazioni, consulta Pacchetti supportati all'indirizzo. opentelemetry-python-contrib
Prima di abilitare Application Signals per le tue applicazioni Python, tieni presente le seguenti considerazioni.
In alcune applicazioni containerizzate, una variabile di
PYTHONPATHambiente mancante a volte può impedire l'avvio dell'applicazione. Per risolvere questo problema, assicuratevi di impostare la variabile diPYTHONPATHambiente sulla posizione della directory di lavoro dell'applicazione. Ciò è dovuto a un problema noto con la OpenTelemetry strumentazione automatica. Per ulteriori informazioni su questo problema, vedere L'impostazione della strumentazione automatica in Pythondi PYTHONPATH non è conforme. -
Usa il
--noreloadflag per impedire il ricaricamento automatico.Imposta la variabile di
DJANGO_SETTINGS_MODULEambiente sulla posizione del file dell'settings.pyapplicazione Django. Ciò garantisce che OpenTelemetry possa accedere e integrarsi correttamente con le impostazioni di Django.
Compatibilità con Node.js
Application Signals supporta le stesse librerie e framework Node.js di AWS Distro for does. OpenTelemetry Per ulteriori informazioni, consulta Strumentazione supportata.
Limitazioni note di Node.js con ESM
La AWS Distro for Opentelemetry Node.js supporta due sistemi di ECMAScript moduli: Modules (ESM) e CommonJS (CJS). Per abilitare Application Signals, ti consigliamo di utilizzare il formato del modulo CJS perché il supporto di ESM OpenTelemetry JavaScript è sperimentale e in corso. Per maggiori dettagli, consulta ECMAScript Modules vs.
Per determinare se la tua applicazione utilizza CJS e non ESM, assicurati che l'applicazione non soddisfi le condizioni per abilitare ESM. Per ulteriori informazioni su queste condizioni, consulta Enabling nella documentazione di
La AWS Distro for Opentelemetry Node.js fornisce un supporto limitato per ESM in base OpenTelemetry JavaScript al supporto sperimentale per ESM. Ciò significa quanto segue:
La versione di Node.js deve essere 18.19.0 o successiva.
L'applicazione Node.js che si desidera utilizzare come strumento deve includere
@aws/aws-distro-opentelemetry-node-autoinstrumentatione@opentelemetry/instrumentationcome dipendenze.L'applicazione Node.js che si desidera utilizzare come strumento deve iniziare con la seguente opzione di nodo:
NODE_OPTIONS=' --import @aws/aws-distro-opentelemetry-node-autoinstrumentation/register --experimental-loader=@opentelemetry/instrumentation/hook.mjs'
Per abilitare Application Signals con il formato del modulo ESM Node.js, forniamo diverse configurazioni per diverse piattaforme:
Amazon EKS — Configurazione di un'applicazione Node.js con il formato del modulo ESM
Amazon ECS con strategia sidecar — Setting up a Node.js application with the ESM module format
Amazon ECS con strategia daemon — Setting up a Node.js application with the ESM module format
Amazon ECS con AWS CDK
Amazon EC2 — Setting up a Node.js application with the ESM module format
Kubernetes — Configurazione di un'applicazione Node.js con il formato del modulo ESM
GoLang compatibilità
Application Signals supporta GoLang applicazioni con strumentazione Zero Code. OpenTelemetry A tale scopo non è AWS disponibile alcun SDK Distro for Open Telemetry (ADOT). È necessario utilizzare lo standard OpenTelemetry Instrumentation SDK con Transaction Search abilitato. Per iniziare a utilizzare la strumentazione a codice zero in GoLang, segui questi passaggi dai documenti di Instrumentation, Guida introduttiva a Go OpenTelemetry GoLang Automatic Instrumentation. OpenTelemetry
GoLang Considerazioni sull'implementazione, strumentazione.
Scopri importanti dettagli di implementazione per l'utilizzo della strumentazione. GoLang Questa guida spiega come implementare la propagazione esplicita del contesto nelle GoLang applicazioni e configurare gli Application Signals. Una corretta implementazione della GoLang strumentazione consente di monitorare e analizzare efficacemente le prestazioni dell'applicazione.
Strumentazione dell'SDK AWS
La libreria di strumentazione automatica Golang non supporta la strumentazione AWS SDK pronta all'uso. È necessario utilizzare la strumentazione della otelaws libreria insieme all'agente di strumentazione automatica:
-
Installa la dipendenza richiesta:
go get go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws -
Aggiungi la riga seguente all'applicazione:
otelaws.AppendMiddlewares(&cfg.APIOptions) -
Crea AWS client successivi con l'
aws.Configoggetto precedente:s3Client := s3.NewFromConfig(cfg)
L'esempio seguente genererà intervalli per AWS le chiamate e si integra con la strumentazione automatica.
func handleRequest(ctx context.Context) error { cfg, err := config.LoadDefaultConfig(ctx) if err != nil { return err } // Add OpenTelemetry instrumentation middleware to the AWS config otelaws.AppendMiddlewares(&cfg.APIOptions) // Create S3 client with the instrumented config s3Client := s3.NewFromConfig(cfg) // Now any operations with this client will be traced // with the context from the upstream call _, err = s3Client.ListBuckets(ctx, &s3.ListBucketsInput{}) return err }
Strumentazione delle chiamate HTTP
Le chiamate HTTP possono dividere le tracce quando Context non viene passato tra le richieste: i client HTTP devono utilizzare NewRequestWithContext() invece di NewRequest() garantire che il servizio downstream utilizzi lo stesso contesto. Quando entrambi i servizi dispongono di agenti di strumentazione, gli span si connettono allo stesso ID di traccia per fornire visibilità. end-to-end
func makeDownstreamCall(ctx context.Context, url string) ([]byte, error) { client := &http.Client{} // Create request with context from the upstream call req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil) if err != nil { return nil, err } // Execute the request resp, err := client.Do(req) if err != nil { return nil, err } defer resp.Body.Close() }
Strumentazione delle chiamate SQL
Gli intervalli SQL possono disconnettersi dall'intervallo principale, facendo sì che le chiamate client vengano dedotte come intervalli del server. Ciò si verifica quando le chiamate SQL non ricevono il contesto dai rispettivi gestori upstream. Per impostazione context.Background() predefinita, le chiamate SQL standard apprezzano Query e Exec utilizzano, non il contesto del chiamante upstream. Sostituisci le chiamate SQL standard con i loro equivalenti sensibili al contesto:
-
Usa invece di
QueryContextQuery -
Utilizzare
ExecContextinvece diExec
Questi metodi passano il contesto della richiesta upstream alle chiamate DB, mantenendo la corretta continuità di traccia.
func queryDatabase(ctx context.Context, db *sql.DB, userID string) (*sql.Rows, error) { // This breaks the trace context // row := db.Query("SELECT name FROM users WHERE id = $1", userID) // This passes the context from the upstream call for trace continuity rows, err := db.QueryContext(ctx, "SELECT name FROM users WHERE id = $1", userID) return rows, error }
Nota
L'db.systemattributo non è attualmente supportato per le chiamate SQL. Questa limitazione influisce sulla capacità CloudWatch di identificare con precisione i client del database. Di conseguenza, verranno visualizzate le dipendenze UnknownRemoteServiceal posto del nome del client DB che effettua la query.
Rilevatori di risorse
La strumentazione automatica Go attualmente non supporta la configurazione dei rilevatori di risorse in fase di esecuzione. La OpenTelemetry community sta lavorando a una funzionalità per configurare i rilevatori di risorse utilizzando variabili di ambiente. Cerca questa funzionalità in un futuro aggiornamento. Nel frattempo, è possibile utilizzare l' CloudWatch agente con strumentazione automatica per generare automaticamente gli attributi delle risorse host.
Matrice di supporto per la versione runtime
| Lingua | Versione di runtime |
|---|---|
|
Java |
Versioni JVM 8, 11, 17, 21 e 23 |
|
Python |
Sono supportate le versioni di Python 3.9 e successive |
|
.NET |
Le versioni 1.6.0 e precedenti supportano .NET 6, 8 e .NET Framework 4.6.2 e versioni successive La versione 1.7.0 e successive supportano .NET 8, 9 e .NET Framework 4.6.2 e versioni successive |
|
Node.js |
Le versioni 14, 16, 18, 20 e 22 di Node.js |
|
PHP |
Versioni PHP 8.0 e successive |
|
Ruby |
CRuby >= 3.1, >= 9.3.2.0 o JRuby >= 22.1 TruffleRuby |
GoLang |
Versioni Golang 1.18 e successive |
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, interessando le versioni successive2.3.0-eksbuild.1. 2.6.0-eksbuild.1 Il problema è stato risolto nella versione Java SDK v1.32.6 e nella versione aggiuntiva Amazon CloudWatch Observability EKS. v3.0.0-eksbuild.1
In caso di impatto, aggiorna la versione di Java SDK o disabilita la raccolta di parametri di runtime aggiungendo la variabile di ambiente all'applicazione. OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false