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

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.

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 e. JVMs

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. La strumentazione automatica è disponibile per diverse librerie PHP di uso comune. Per ulteriori informazioni, vedere registro. OpenTelemetry

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. Per un elenco delle librerie di strumentazione rilasciate, vedi Registry.

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.

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. CommonJS su. GitHub

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 Node.js.

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-autoinstrumentation e @opentelemetry/instrumentation come 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:

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:

  1. Installa la dipendenza richiesta:

    go get go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws
  2. Aggiungi la riga seguente all'applicazione:

    otelaws.AppendMiddlewares(&cfg.APIOptions)
  3. 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 }

Per informazioni sulla configurazione dell'eseguibile di strumentazione automatica, vedere Metodi di configurazione.

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 QueryContext Query

  • Utilizzare ExecContext invece di Exec

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