Monitoraggio di una macchina virtuale d Java ( JVM )

È possibile monitorare in modo completo la macchina virtuale Java ( JVM ) tramite Instana per individuare eventuali colli di bottiglia e ottimizzare le prestazioni. Per monitorare JVM, installa l'agente host Instana. Una volta installato l'agente, il sensore Instana Java si attiva automaticamente, raccogliendo metriche in tempo reale e dati di tracciamento che è possibile visualizzare nell'interfaccia utente di Instana.

Il sensore « Java » offre la strumentazione automatizzata del codice per le tecnologie supportate, il monitoraggio dello stato delle istanze di « JVM » senza necessità di configurazione e tracciamenti end-to-end delle richieste su tutti i sistemi.

Informazioni aggiuntive

Il sensore « Java » supporta le seguenti lingue, sistemi operativi e ambienti di esecuzione:

Lingue supportate

Il sensore supporta le seguenti lingue:

  • Clojure
  • Java
  • Kotlin
  • Scala

Sistemi operativi supportati

Il sensore " Java " supporta i sistemi operativi compatibili con i requisiti degli agenti host; tali requisiti possono essere verificati nella sezione "Sistemi operativi supportati" di ciascun agente host, ad esempio " Sistemi operativi supportati per l' Unix ".

Installazione dell'agent Instana

Per monitorare JVM, è necessario installare l'agente host Instana. Per ulteriori informazioni, consultare la sezione Installazione degli agenti host. L'agente esegue automaticamente la distribuzione, la configurazione e l'installazione del sensore « Java ». Per garantire che le applicazioni Java siano strumentate, assicurati che la tua distribuzione JVM sia supportata.

Nota: non tentare di utilizzare agenti di diversi fornitori contemporaneamente. Potresti riscontrare risultati imprevedibili che potrebbero causare il malfunzionamento dell'applicazione. Per ulteriori informazioni, consultare la sezione «Agenti incompatibili ».

Esclusione delle JVM dal monitoraggio

Per impedire che l'agente Instana si colleghi a un JVM, è possibile impostare la variabile INSTANA_IGNORE d'ambiente su true nell'ambiente di JVM.

Opzionale: configurazione del sensore

Una volta installato l'agente di monitoraggio della sicurezza ( Instana ), il sensore di monitoraggio della sicurezza ( Java ) viene installato e configurato automaticamente. Sebbene non sia necessaria alcuna configurazione per le metriche pronte all'uso e la traccia distribuita, è possibile configurare singoli componenti del sensore.

Per ulteriori informazioni sulla configurazione del sensore, consultare la sezione "Configurazione di un sensore d Java ".

Una volta configurato il sensore Java, questo inizia automaticamente a raccogliere le metriche da JVM. È possibile visualizzare questi indicatori nell'interfaccia utente di Instana. Il sensore " Java " supporta anche altre funzionalità di " Instana ", quali il tracciamento automatico, il tracciamento personalizzato e la profilatura automatica.

Raccolta di metriche

Il sensore « Java » monitora l'istanza « JVM » e raccoglie da essa le seguenti metriche:

Per visualizzare queste metriche, completare la seguente procedura:

  1. Nella barra laterale dell'interfaccia utente di Instana, seleziona "Infrastruttura".
  2. Fare clic sull'host monitorato specifico.

La dashboard di JVM mostra tutte le metriche raccolte per l'istanza di JVM.

Dati di configurazione

La tabella seguente elenca i dati di configurazione raccolti dall'istanza di JVM :

Configurazione Descrizione
Versione Java La versione di Java utilizzata da JVM
Runtime Java L'implementazione dell'ambiente di esecuzione (JRE) di Java
Heap massimo Dimensione massima dell'heap disponibile per l' JVM
Percorso classi Il parametro del percorso delle classi impostato nel file ` JVM `
Argomenti JVM Le opzioni di avvio e i parametri di configurazione passati all' JVM
Servizi Nomi dei servizi logici identificati e monitorati da Instana

Metriche di prestazioni

Dall'istanza di JVM vengono raccolti i seguenti indicatori di prestazione:

Metriche della memoria

La tabella seguente riassume i parametri di memoria utilizzati per misurare l'utilizzo della memoria nell' JVM :

Metrica di prestazioni Descrizione Origine dati Unità
Memoria utilizzata Memoria totale attualmente utilizzata dall' JVM java.lang.Runtime#totalMemory Byte
Memoria heap Dimensione massima dell'heap disponibile per l' JVM - Memoria heap utilizzata: differenza tra java.lang.Runtime#totalMemory e java.lang.Runtime#freeMemory. - Dimensione massima dell'heap: determinata dall'analisi del parametro -Xmx della riga di comando o ricavata da java.lang.Runtime#maxMemory. - Percentuale di memoria heap utilizzata: (Memoria heap utilizzata/Memoria heap totale) * 100 java.lang.Runtime Metodi Byte o percentuale (%)
Lotto di memoria Utilizzo della memoria dei pool heap e non-heap, visualizzato sotto forma di grafico per un periodo di tempo selezionato ManagementFactory#getMemoryPoolMXBeans Byte
In uso Dimensione della memoria heap attualmente utilizzata dall' JVM e (utilizzo e occupazione) java.lang.management.MemoryUsage Utilizzo: MiB Utilizzo: Percentuale (%)
Piscina Nome dell'area di memoria gestita dall' JVM ManagementFactory#getMemoryPoolMXBeans
I primi anni Dimensione iniziale della memoria allocata all'avvio di JVM getInit Byte
Massimo Dimensione massima della memoria che l' JVM e può allocare a quel pool getMax Byte
Valore Dimensione della memoria attualmente in uso getUsage Byte

Metriche dei thread

La tabella seguente riassume le informazioni relative alle metriche dei thread:

Metrica di prestazioni Descrizione Origine dati Unità
Thread Numero di thread che si trovano in stati diversi, come mostrato in un grafico relativo a un periodo di tempo selezionato: new, runnable, timed-waiting, waiting, oppure blocked java.lang.management.ThreadMXBean#getAllThreadIds Conteggio
Nuovo Numero di thread creati ma non ancora avviati ThreadMXBean#getThreadInfo Conteggio
Attuabile / Realizzabile Numero di thread eseguibili e idonei all'esecuzione da parte della CPU ThreadMXBean#getThreadInfo Conteggio
Temporizzato-In attesa Numero di thread in attesa per un determinato periodo di tempo ThreadMXBean#getThreadInfo Conteggio
In attesa Numero di thread in attesa per un determinato periodo di tempo ThreadMXBean#getThreadInfo Conteggio
Bloccato Numero di thread bloccati in attesa di acquisire un blocco ThreadMXBean#getThreadInfo Conteggio

Metriche relative alla raccolta dei rifiuti (GC)

La tabella seguente riassume le informazioni relative alle metriche della raccolta dei rifiuti:

Metrica di prestazioni Descrizione Origine dati Unità
Raccolta dati inutilizzati Attivazione della raccolta dei rifiuti e valori di runtime visualizzati in un grafico relativo a un periodo di tempo selezionato - Informazioni sulla raccolta dei rifiuti: ManagementFactory#getGarbageCollectorMXBeans - Valori del grafico: java.lang.management.GarbageCollectorMXBean
PS: Tempo di recupero Tempo totale dedicato alla GC nella regione di Young (Eden + Survivor) (GC minore) getCollectionTime Millisecondi
PS: Ora di MarkSweep Tempo totale impiegato per la GC nella regione Old (GC principale) getCollectionTime Millisecondi
PS: Richieste di recupero Numero di esecuzioni GC minori getCollectionCount Conteggio
PS: Chiamate da MarkSweep Numero di cicli GC principali getCollectionCount Conteggio
Nota:
  • `getCollectionTime` e i valori di `getCollectionCount` sono il differenziale calcolato su un intervallo 1‑second.
  • `getCollectionTime` è il tempo approssimativo trascorso, espresso in millisecondi, per la raccolta dei rifiuti accumulati.
  • `getCollectionCount` è il numero di invocazioni.

Metriche applicazione

La tabella seguente riassume le informazioni relative agli indicatori di prestazione dell'applicazione:

Metrica di prestazioni Descrizione Origine dati Unità
Sospensione / Interruzione Ritardo nell'esecuzione dell'applicazione dovuto a un' JVM e, al sistema operativo o alla gestione dei processi da parte della CPU nell'ultimo secondo. Calcolato in base al thread di misurazione " Instana " dell'app. Millisecondi

Metriche derivate

La tabella seguente elenca le metriche disponibili derivate dalle metriche di prestazione, calcolate da un'istanza di JVM :

Metriche di prestazioni Descrizione Origine dati Nome metrica
Memoria dopo il GC La quantità di memoria utilizzata da un'applicazione dopo il verificarsi di un evento di Garbage Collection (GC). Quando il sensore « JVM » segnala un'attivazione globale della garbage collection, il valore della memoria in quel momento viene utilizzato per riportare il valore «Memory After GC». Statistiche sull'utilizzo della memoria ed eventi di garbage collection memory.gc.after
Memoria prima del GC La quantità di memoria utilizzata da un'applicazione prima che si verifichi un evento di Garbage Collection (GC). Quando il sensore " JVM " segnala un'attivazione globale della garbage collection, il valore della memoria precedente a tale attivazione viene utilizzato per riportare il valore "Memory Before GC". Statistiche sull'utilizzo della memoria ed eventi di garbage collection memory.gc.before
Percentuale di memoria dopo il GC La percentuale della memoria totale disponibile utilizzata da un'applicazione dopo un evento di Garbage Collection (GC). È la percentuale di memoria utilizzata dopo una raccolta globale dei rifiuti, rispetto alla memoria massima utilizzata dall' JVM. Statistiche sulle prestazioni relative alla memoria utilizzata, memoria massima utilizzata e statistiche sulla raccolta dei rifiuti memory.gc.afterPercentage
Percentuale di memoria prima del GC La percentuale della memoria totale disponibile utilizzata da un'applicazione prima che si verifichi un evento di Garbage Collection (GC). È la percentuale di memoria utilizzata prima di una raccolta globale dei rifiuti, rispetto alla quantità massima di memoria utilizzata dall' JVM. Statistiche sulle prestazioni relative alla memoria utilizzata, memoria massima utilizzata e statistiche sulla raccolta dei rifiuti memory.gc.beforePercentage

Indicatori sanitari

Ogni sensore ha una knowledge base curata delle firme di integrità che vengono valutate continuamente rispetto alle metriche in arrivo. Queste firme di integrità vengono utilizzate per generare problemi o incidenti che dipendono dall'impatto dell'utente.

Gli eventi predefiniti generano problemi o incidenti in base al superamento dei limiti di integrità delle entità, mentre gli eventi personalizzati generano problemi o incidenti in base alle soglie di una singola metrica di qualsiasi entità.

Per ulteriori informazioni sugli eventi integrati del sensore " Java ", consultare la guida di riferimento sugli eventi integrati.

Metriche personalizzate

Instana supporta alcune librerie comuni per la misurazione dell' Java. Se utilizzi le seguenti librerie, puoi integrare manualmente il codice della tua applicazione per raccogliere metriche personalizzate:

Per ulteriori informazioni, consultare la sezione "Tracciamento personalizzato".

Utilizzo delle metriche di " Dropwizard " per il monitoraggio personalizzato di " JVM "

Se l' JVM a carica la libreria delle metriche Dropwizard, le metriche personalizzate vengono raccolte e visualizzate nella dashboard JVM. Per evitare il sovraccarico del backend, è previsto un limite predefinito di 200 metriche.

Per disattivare o modificare il limite delle metriche raccolte, utilizzare la seguente configurazione:

com.instana.plugin.java:
  dropwizardMetricCollection:
    enabled: false
    limit: 200
 

Se utilizzi le metriche di " Dropwizard " nell'ambito del framework " Dropwizard ", consulta la sezione "Monitoraggio" all'indirizzo Dropwizard.

Altre metriche

Oltre alle metriche relative alla configurazione, alle prestazioni e a quelle personalizzate, il sensore Java raccoglie anche altre metriche, come i dump dei thread in tempo reale e i dump dell'heap.

Dump del thread in tempo reale

Per visualizzare un dump dei thread in tempo reale per l' JVM, clicca su "Ottieni dump dei thread".

Dump heap

Per generare un dump dell'heap per l' JVM, fare clic su "Ottieni dump dell'heap ". Per salvare il dump dell'heap, specificare una posizione locale nell' JVM.

Monitoraggio delle applicazioni dell' Java

Il sensore " Java " in Instana utilizza i seguenti metodi per tracciare le applicazioni Java :

  • Instana AutoTrace : tracciamento automatico delle applicazioni Java senza necessità di configurazioni manuali o modifiche al codice.
  • Monitoraggio personalizzato : strumentazione manuale di parti specifiche del codice dell'applicazione Java per acquisire metriche personalizzate e ottenere informazioni più approfondite.
  • Instana AutoProfile : la profilatura automatica delle applicazioni Java fornisce informazioni dettagliate sulle prestazioni, sull'utilizzo della CPU, sull'allocazione della memoria e su altre risorse di sistema.

Instana AutoTrace

Per impostazione predefinita, il sensore « Java » monitora tutte le richieste e crea automaticamente una traccia distribuita per ciascuna di esse. Questa traccia distribuita include il tracciamento tra host e tra linguaggi. Per ulteriori informazioni, consultare Instana AutoTrace™.

È possibile visualizzare queste tracce nell'interfaccia utente di Instana. Per ulteriori informazioni, consultare la sezione "Analisi delle tracce e delle chiamate ".

Registrazione

È possibile visualizzare solo i log di livello WARN e successivi.

Quando si utilizza Log4j, Log4j2 o Logback per consentire una correlazione più precisa tra la registrazione e la tracciatura, Instana inserisce automaticamente l'ID della tracciatura nel contesto diagnostico mappato (MDC). Il nome della variabile MDC è instana.trace.id. Per ulteriori informazioni sull'utilizzo dei framework di registrazione nelle stringhe di formato, consultare la documentazione per il framework di registrazione.

Tracciamento personalizzato

Il sensore « Java » offre uno strumento di tracciamento completamente automatizzato e pronto all'uso. In alcuni casi, però, potresti preferire inviare tracciati personalizzati alla tua dashboard di Instana. È possibile utilizzare i metodi riportati di seguito per implementare la funzione di traccia personalizzata:

Java SDK Trace

Se desideri implementare la strumentazione in un framework non ancora supportato da Instana o monitorare le richieste di un'applicazione personalizzata, utilizza l 'SDK di tracciamento Java e consulta il repository GitHub.

Prima di implementare il tracciamento personalizzato tramite l'SDK, consulta le migliori pratiche relative al tracciamento.

SDK di tracciamento basato sulla configurazione di Java

Potresti trovarti in situazioni in cui l'uso dell'SDK di tracciamento di Java, che richiede la modifica del codice sorgente o il ricorso a qualcuno in grado di farlo, non è fattibile o auspicabile. In questi casi, utilizzare l 'SDK di tracciamento Java basato sulla configurazione. Sebbene sia meno ricco di funzionalità rispetto all 'SDK Trace programmatico Java, l'SDK Trace basato sulla configurazione Java consente una configurazione dichiarativa di span e tag in grado di coprire molti casi d'uso comuni.

Prima di implementare il tracciamento personalizzato utilizzando l 'SDK di tracciamento Java basato sulla configurazione, consultare le migliori pratiche di tracciamento.

OpenCensus Instana Esportatore di tracce

Instana fornisce un Trace Exporter per l' OpenCensus, destinato alle applicazioni scritte in linguaggio di programmazione " Java ". Utilizzando i processi dell'agente Instana come proxy, Instana inoltra al proprio backend le tracce esportate dalle applicazioni strumentate con Census.

Per ulteriori informazioni, consultare la sezione « OpenCensus : Esportatori ».

Importante: disattivare il tracciamento automatico ( Instana AutoTrace™ ) se l'agente viene utilizzato sullo stesso host di Census. Per ulteriori informazioni, consultare la sezione "Disattivazione della strumentazione di tracciamento dell' Java ".

Instana AutoProfile

I profili sono essenziali per individuare i punti critici delle prestazioni e i colli di bottiglia a livello di codice. Sono fondamentali per ridurre il consumo di risorse e migliorare le prestazioni.

Instana AutoProfile™ genera e invia i profili dei processi a Instana. A differenza dei profiler utilizzati in fase di sviluppo e su richiesta, in cui è necessario avviare manualmente la profilatura, AutoProfile™ pianifica automaticamente ed esegue in modo continuo la profilatura, rendendolo ideale per gli ambienti di produzione critici.

Per ulteriori informazioni, consultare Instana AutoProfile™.

Escluse le JVM

È possibile impostare la variabile INSTANA_IGNORE d'ambiente su true nell'ambiente di JVM, per evitare che l'agente di Instana venga associato a JVM.