Metriche raccolte da Application Signals - Amazon CloudWatch

Metriche raccolte da Application Signals

Application Signals raccoglie sia le metriche standard delle applicazioni sia le metriche di runtime dalle applicazioni per le quali è abilitata.

Le metriche standard delle applicazioni si riferiscono agli aspetti più critici delle prestazioni, della latenza e della disponibilità del servizio.

Le metriche di runtime tengono traccia delle metriche delle applicazioni nel tempo, tra cui l'utilizzo della memoria, l'utilizzo della CPU e la rimozione di oggetti inutili (garbage collection). Application Signals visualizza le metriche di runtime nel contesto dei servizi che hai abilitato per Application Signals. In caso di problemi operativi, l'osservazione delle metriche di runtime può essere utile per individuare la causa principale del problema. Ad esempio, puoi vedere se i picchi di latenza in un servizio sono correlati ai picchi di una metrica di runtime.

Parametri dell'applicazione standard raccolti

Application Signals raccoglie i parametri dell'applicazione standard dai servizi che rileva. Questi parametri si riferiscono agli aspetti più critici delle prestazioni di un servizio: latenza, guasti ed errori. Possono aiutarti a identificare i problemi, monitorare le tendenze delle prestazioni e ottimizzare le risorse per migliorare complessivamente l'esperienza utente.

La tabella seguente elenca i parametri raccolti da Application Signals. Tali parametri sono inviati a CloudWatch nello spazio dei nomi di ApplicationSignals.

Parametro Descrizione

Latency

Il ritardo prima dell'inizio del trasferimento dei dati dopo la richiesta.

Unità: millisecondi

Fault

Un conteggio degli errori lato server HTTP 5XX e degli errori di stato di intervallo di OpenTelemetry.

Unità: nessuna

Error

Un numero di errori HTTP 4XX lato client. Questi sono considerati errori di richiesta non causati da problemi del servizio. Pertanto, il parametro Availability visualizzato nei pannelli di controllo di Application Signals non considera questi errori guasti del servizio.

Unità: nessuna

La metrica Availability visualizzata nei pannelli di controllo di Application Signals viene calcolata come (1 - Faults/totale)*100. Le risposte totali includono tutte le risposte e sono ricavate da SampleCount(Latency). Le risposte con esito positivo sono tutte risposte senza errori 5XX. Le risposte 4XX vengono considerate corrette durante il calcolo di Availability di Application Signals.

Dimensioni raccolte e combinazioni di dimensioni

Le seguenti dimensioni sono definite per ciascuno dei parametri standard dell'applicazione. Per ulteriori informazioni sulle dimensioni, consulta Dimensioni.

Vengono raccolte diverse dimensioni per i parametri del servizio e i parametri di dipendenza. All'interno dei servizi scoperti da Application Signals, quando il microservizio A chiama il microservizio B, il microservizio B elabora la richiesta. In questo caso, il microservizio A emette parametri di dipendenza e il microservizio B emette parametri del servizio. Quando un client chiama il microservizio A, il microservizio A elabora la richiesta ed emette i parametri del servizio.

Dimensioni per i parametri del servizio

Le seguenti dimensioni vengono utilizzate per i parametri del servizio.

Dimensione Descrizione

Service

Il nome del servizio .

Il valore massimo è 255 caratteri.

Operation

Il nome dell'operazione API o altra attività.

Il valore massimo è 1.024 caratteri. È possibile impostare obiettivi del livello di servizio per le operazioni solo se il nome dell'operazione è composto da un massimo di 194 caratteri.

Environment

Il nome dell'ambiente in cui i servizi sono in esecuzione. Se i servizi non sono in esecuzione su Amazon EKS, puoi specificare un valore personalizzato facoltativo per deployment.environment nel parametro OTEL_ATTRIBUTE_RESOURCES.

Il valore massimo è 259 caratteri.

Quando visualizzi queste metriche nella console CloudWatch, puoi visualizzarle utilizzando le seguenti combinazioni di dimensioni:

  • [Environment, Service, Operation, [Latency, Error, Fault]]

  • [Environment, Service, [Latency, Error, Fault]]

Dimensioni per i parametri di dipendenza

Per le metriche di dipendenza vengono raccolte le dimensioni seguenti:

Dimensione Descrizione

Service

Il nome del servizio .

Il valore massimo è 255 caratteri.

Operation

Il nome dell'operazione API o di un'altra operazione.

Il valore massimo è 1024 caratteri.

RemoteService

Il nome del servizio remoto invocato.

Il valore massimo è 255 caratteri.

RemoteOperation

Il nome dell'operazione API invocata.

Il valore massimo è 1024 caratteri.

Environment

Il nome dell'ambiente in cui i servizi sono in esecuzione. Se i servizi non sono in esecuzione su Amazon EKS, puoi specificare un valore personalizzato facoltativo per deployment.environment nel parametro OTEL_ATTRIBUTE_RESOURCES.

Il valore massimo è 259 caratteri.

RemoteEnvironment

Il nome dell'ambiente in cui i servizi della dipendenza sono in esecuzione. Il parametro RemoteEnvironment viene generato automaticamente quando un servizio chiama una dipendenza ed entrambi sono in esecuzione nello stesso cluster. Altrimenti, RemoteEnvironment non viene né generato né riportato nelle metriche della dipendenza del servizio. Attualmente, questo è disponibile solo su Amazon EKS e sulle piattaforme K8S.

Il valore massimo è 259 caratteri.

RemoteResourceIdentifier

Il nome della risorsa invocata da una chiamata remota. Il parametro RemoteResourceIdentifier viene generato automaticamente se il servizio chiama un servizio AWS remoto. Altrimenti, RemoteResourceIdentifier non viene né generato né riportato nelle metriche della dipendenza del servizio.

Il valore massimo è 1024 caratteri.

RemoteResourceType

Il tipo di risorsa invocata da una chiamata remota. Obbligatorio solo se RemoteResourceIdentifier è definito.

Il valore massimo è 1024 caratteri.

Quando visualizzi queste metriche nella console CloudWatch, puoi visualizzarle utilizzando le seguenti combinazioni di dimensioni:

Esecuzione su cluster Amazon EKS

  • [Environment, Service, Operation, RemoteService, RemoteOperation, RemoteEnvironment, RemoteResourceIdentifier, RemoteResourceType, [Latency, Error, Fault]]

  • [Environment, Service, Operation, RemoteService, RemoteOperation, RemoteEnvironment, [Latency, Error, Fault]]

  • [Environment, Service, Operation, RemoteService, RemoteOperation, RemoteResourceIdentifier, RemoteResourceType, [Latency, Error, Fault]]

  • [Environment, Service, Operation, RemoteService, RemoteOperation, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteEnvironment, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteOperation, RemoteEnvironment, RemoteResourceIdentifier, RemoteResourceType, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteOperation, RemoteEnvironment, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteOperation, RemoteResourceIdentifier, RemoteResourceType, [Latency, Error, Fault]]

  • [Environment, Service, RemoteService, RemoteOperation, [Latency, Error, Fault]]

  • [RemoteService [Latency, Error, Fault]]

  • [RemoteService, RemoteResourceIdentifier, RemoteResourceType [Latency, Error, Fault]]

Metriche di runtime

Application Signals utilizza l'SDK AWS Distro per OpenTelemetry per raccogliere automaticamente metriche compatibili con OpenTelemetry dalle applicazioni Java e Python. Affinché le metriche di runtime possano essere raccolte, è necessario soddisfare i seguenti prerequisiti:

  • La versione dell'agente CloudWatch deve essere 1.300049.1 o successiva.

  • Se utilizzi il componente aggiuntivo Amazon CloudWatch Observability EKS, la versione deve essere 2.30-eksbuild.1 o successiva. Se aggiorni il componente aggiuntivo, devi riavviare le applicazioni.

  • Per le applicazioni Java, è necessario che sia in esecuzione 1.32.5 o una versione successiva dell'SDK AWS Distro per OpenTelemetry per Java.

  • Per le applicazioni Python, è necessario che sia in esecuzione 0.7.0 o una versione successiva dell'SDK AWS Distro per OpenTelemetry per Python.

  • Per le applicazioni .Net, è necessario che sia in esecuzione 1.6.0 o una versione successiva dell'SDK AWS Distro per OpenTelemetry per .Net.

Le metriche di runtime non vengono raccolte per le applicazioni Node.js.

Le metriche di runtime vengono addebitate come parte dei costi di Application Signals. Per ulteriori informazioni sui prezzi di CloudWatch, consulta Prezzi di Amazon CloudWatch.

Nota

Problemi noti

È noto che la raccolta delle metriche di runtime nella versione dell'SDK Java v1.32.5 non funziona con le applicazioni che utilizzano JBoss Wildfly. Questo problema si estende al componente aggiuntivo Amazon CloudWatch Observability EKS e riguarda le versioni da 2.3.0-eksbuild.1 a 2.6.0-eksbuild.1. Questo problema è risolto nell'SDK per Java versione v1.32.6 e nel componente aggiuntivo Amazon CloudWatch Observability EKS versione v3.0.0-eksbuild.1.

Se riscontri problemi, esegui l'upgrade della versione dell'SDK per Java o disabilita la raccolta delle metriche di runtime aggiungendo la variabile di ambiente OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false all'applicazione.

Metriche di runtime di Java

Application Signals raccoglie le seguenti metriche JVM dalle applicazioni Java abilitate per Application Signals. Tutte le metriche di runtime vengono inviate a CloudWatch nel namespace ApplicationSignals e raccolte con l'insieme di dimensioni Service e Environment.

Nome parametro Descrizione Statistiche significative

JVMGCDuration

Metrica aggregata per la durata delle operazioni di rimozione di oggetti inutili di JVM.

Unità: millisecondi

Somma, Media, Minimo, Massimo

JVMGCOldGenDuration

Metrica aggregata per la durata delle operazioni di rimozione di oggetti inutili di JVM di vecchia generazione. Disponibile solo in G1.

Unità: millisecondi

Somma, Media, Minimo, Massimo

JVMGCYoungGenDuration

Metrica aggregata per la durata delle operazioni di rimozione di oggetti inutili di JVM di nuova generazione. Disponibile solo in G1.

Unità: millisecondi

Somma, Media, Minimo, Massimo

JVMGCCount

Metrica aggregata per il numero delle operazioni di rimozione di oggetti inutili di JVM.

Unità: nessuna

Somma, Media, Minimo, Massimo

JVMGCOldGenCount

Metrica aggregata per il numero delle operazioni di rimozione di oggetti inutili di JVM di vecchia generazione. Disponibile solo in G1.

Unità: nessuna

Somma, Media, Minimo, Massimo

JVMGCYoungGenCount

Metrica aggregata per il numero delle operazioni di rimozione di oggetti inutili di JVM di nuova generazione. Disponibile solo in G1.

Unità: nessuna

Somma, Media, Minimo, Massimo

JVMMemoryHeapUsed

La quantità di heap di memoria utilizzata.

Unità: byte

Media, Minimo, Massimo

JVMMemoryUsedAfterLastGC

Quantità di memoria utilizzata, misurata dopo l'evento di rimozione di oggetti inutili più recente su questo pool.

Unità: byte

Media, Minimo, Massimo

JVMMemoryOldGenUsed

La quantità di memoria utilizzata dalla vecchia generazione.

Unità: byte

Media, Minimo, Massimo

JVMMemorySurvivorSpaceUsed

La quantità di memoria heap utilizzata dal survivor space.

Unità: byte

Media, Minimo, Massimo

JVMMemoryEdenSpaceUsed

La quantità di memoria utilizzata dall'eden space.

Unità: byte

Media, Minimo, Massimo

JVMMemoryNonHeapUsed

La quantità di memoria non heap utilizzata.

Unità: byte

Media, Minimo, Massimo

JVMThreadCount

Il numero di thread in esecuzione, inclusi i thread daemon e non daemon.

Unità: nessuna

Somma, Media, Minimo, Massimo

JVMClassLoaded

Il numero di classi caricate.

Unità: nessuna

Somma, Media, Minimo, Massimo

JVMCpuTime

Il tempo di CPU utilizzato dal processo, come riportato dalla JVM.

Unità: nessuna (nanosecondi)

Somma, Media, Minimo, Massimo

JVMCpuRecentUtilization

La CPU recente utilizzata dal processo, come riportato dalla JVM.

Unità: nessuna

Media, Minimo, Massimo

Metriche di runtime di Python

Application Signals raccoglie le seguenti metriche dalle applicazioni Python abilitate per Application Signals. Tutte le metriche di runtime vengono inviate a CloudWatch nel namespace ApplicationSignals e raccolte con l'insieme di dimensioni Service e Environment.

Nome parametro Descrizione Statistiche significative

PythonProcessGCCount

Il numero totale di oggetti attualmente tracciati.

Unità: nessuna

Somma, Media, Minimo, Massimo

PythonProcessGCGen0Count

Il numero di oggetti attualmente tracciati nella Generazione 0.

Unità: nessuna

Somma, Media, Minimo, Massimo

PythonProcessGCGen1Count

Il numero di oggetti attualmente tracciati nella Generazione 1.

Unità: nessuna

Somma, Media, Minimo, Massimo

PythonProcessGCGen2Count

Il numero di oggetti attualmente tracciati nella Generazione 2.

Unità: nessuna

Somma, Media, Minimo, Massimo

PythonProcessVMSMemoryUsed

La quantità totale di memoria virtuale utilizzata dal processo.

Unità: byte

Media, Minimo, Massimo

PythonProcessRSSMemoryUsed

La quantità totale di memoria fisica non-swap utilizzata dal processo.

Unità: byte

Media, Minimo, Massimo

PythonProcessThreadCount

Il numero di thread attualmente utilizzati dal proccesso.

Unità: nessuna

Somma, Media, Minimo, Massimo

PythonProcessCpuTime

Il tempo di CPU utilizzato dal processo.

Unità: secondi

Somma, Media, Minimo, Massimo

PythonProcessCpuUtilization

L'utilizzo della CPU del processo.

Unità: nessuna

Media, Minimo, Massimo

Metriche di runtime di .Net

Application Signals raccoglie le seguenti metriche dalle applicazioni .Net abilitate per Application Signals. Tutte le metriche di runtime vengono inviate a CloudWatch nel namespace ApplicationSignals e raccolte con l'insieme di dimensioni Service e Environment.

Nome parametro Descrizione Statistiche significative

DotNetGCGen0Count

Il numero totale di metriche di rimozione di oggetti inutili tracciate nella Generazione 0 dall'inizio del processo.

Unità: nessuna

Somma, Media, Minimo, Massimo

DotNetGCGen1Count

Il numero totale di metriche di rimozione di oggetti inutili tracciate nella Generazione 1 dall'inizio del processo.

Unità: nessuna

Somma, Media, Minimo, Massimo

DotNetGCGen2Count

Il numero totale di metriche di rimozione di oggetti inutili tracciate nella Generazione 2 dall'inizio del processo.

Unità: nessuna

Somma, Media, Minimo, Massimo

DotNetGCDuration

Il tempo totale di pausa nella rimozione di oggetti inutili dall'inizio del processo.

Unità: nessuna

Somma, Media, Minimo, Massimo

DotNetGCGen0HeapSize

La dimensione dell'heap (inclusa la frammentazione) della Generazione 0 osservata durante l'ultima rimozione di oggetti inutili.

Nota

Questa metrica è disponibile solo al termine della rimozione di oggetti inutili.

Unità: byte

Media, Minimo, Massimo

DotNetGCGen1HeapSize

La dimensione dell'heap (inclusa la frammentazione) della Generazione 1 osservata durante l'ultima rimozione di oggetti inutili.

Nota

Questa metrica è disponibile solo al termine della rimozione di oggetti inutili.

Unità: byte

Media, Minimo, Massimo

DotNetGCGen2HeapSize

La dimensione dell'heap (inclusa la frammentazione) della Generazione 2 osservata durante l'ultima rimozione di oggetti inutili.

Nota

Questa metrica è disponibile solo al termine della rimozione di oggetti inutili.

Unità: byte

Media, Minimo, Massimo

DotNetGCLOHHeapSize

La dimensione dell'heap di oggetti di grandi dimensioni (inclusa la frammentazione) osservata durante l'ultima rimozione di oggetti inutili.

Nota

Questa metrica è disponibile solo al termine della rimozione di oggetti inutili.

Unità: byte

Media, Minimo, Massimo

DotNetGCPOHHeapSize

La dimensione dell'heap di oggetti fissati (inclusa la frammentazione) osservata durante l'ultima rimozione di oggetti inutili.

Nota

Questa metrica è disponibile solo al termine della rimozione di oggetti inutili.

Unità: byte

Media, Minimo, Massimo

DotNetThreadCount

Il numero di thread del pool di thread attualmente esistenti.

Unità: nessuna

Media, Minimo, Massimo

DotNetThreadQueueLength

Il numero di elementi di lavoro attualmente in coda per essere elaborati dal pool di thread.

Unità: nessuna

Media, Minimo, Massimo

Disabilitazione della raccolta di metriche di runtime

Le metriche di runtime vengono raccolte per impostazione predefinita per le applicazioni Java e Python abilitate per Application Signals. Se desideri disabilitare la raccolta di queste metriche, segui le istruzioni relative al tuo ambiente riportate in questa sezione.

Amazon EKS

Per disabilitare le metriche di runtime nelle applicazioni Amazon EKS a livello di applicazione, aggiungi la seguente variabile di ambiente alla specifica del tuo carico di lavoro.

env: - name: OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED value: "false"

Per disabilitare le metriche di runtime nelle applicazioni Amazon EKS a livello di cluster, applica la configurazione alla configurazione avanzata del componente aggiuntivo Amazon CloudWatch Observability EKS.

{ "agent": { "config": { "traces": { "traces_collected": { "application_signals": { } } }, "logs": { "metrics_collected": { "application_signals": { } } } }, "manager": { "autoInstrumentationConfiguration": { "java": { "runtime_metrics": { "enabled": false } }, "python": { "runtime_metrics": { "enabled": false } }, "dotnet": { "runtime_metrics": { "enabled": false } } } } } }

Amazon ECS

Per disabilitare le metriche di runtime nelle applicazioni Amazon ECS, aggiungi la variabile di ambiente OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false nella nuova revisione della definizione delle attività e implementa nuovamente l'applicazione.

EC2

Per disabilitare le metriche di runtime nelle applicazioni Amazon EC2, aggiungi la variabile di ambiente OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED=false prima dell'avvio dell'applicazione.

Kubernetes

Per disabilitare le metriche di runtime nelle applicazioni Kubernetes a livello di applicazione, aggiungi la seguente variabile di ambiente alla specifica del tuo carico di lavoro.

env: - name: OTEL_AWS_APPLICATION_SIGNALS_RUNTIME_ENABLED value: "false"

Per disabilitare le metriche di runtime nelle applicazioni Kubernetes a livello di cluster, utilizza quanto segue:

helm upgrade ... \ --set-string manager.autoInstrumentationConfiguration.java.runtime_metrics.enabled=false \ --set-string manager.autoInstrumentationConfiguration.python.runtime_metrics.enabled=false \ -\-set-string manager.autoInstrumentationConfiguration.dotnet.runtime_metrics.enabled=false