Monitoraggio di una macchina virtuale Java ( JVM )
È possibile monitorare in modo completo la macchina virtuale Java ( JVM ) con Instana per identificare i colli di bottiglia e ottimizzare le prestazioni. Per monitorare JVM, installare l'agente host Instana. Dopo aver installato l'agente, il sensore Instana Java si attiva automaticamente, raccogliendo metriche in tempo reale e tracciando dati che è possibile visualizzare nell'interfaccia utente Instana.
Il sensore Java fornisce strumentazione automatizzata del codice per le tecnologie supportate, monitoraggio dello stato di integrità senza configurazione delle istanze di JVM e tracciamento end-to-end delle richieste su tutti i sistemi.
Informazioni supportate
Il sensore Java supporta le seguenti lingue, sistemi operativi e runtime:
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, che possono essere verificati nella sezione Sistemi operativi supportati di ciascun agente host, ad esempio Sistemi operativi supportati per Unix.
Distribuzioni e runtime supportati per l' Java
Per informazioni sulle distribuzioni e sui runtime supportati di Java, vedere Distribuzioni supportate di JVM.
Framework e librerie supportati per il tracciamento
Il sensore dell' Java a diversi framework e librerie per il tracciamento. Per ulteriori informazioni, consulta Framework e librerie strumentate. Per il runtime deprecato di Java 6, vedere Framework e librerie strumentati per il runtime deprecato Java 6
Requisiti di sistema
Prima di installare l'agente Instana, assicurarsi che siano soddisfatti i requisiti di sistema necessari. Per ulteriori informazioni, consultare Requisiti di sistema.
Installazione dell'agent Instana
Per monitorare JVM, è necessario installare l'agente host Instana. Per ulteriori informazioni, vedere Installazione degli agenti host. L'agente distribuisce, configura e installa automaticamente il sensore Java. Per garantire che le applicazioni Java siano strumentate, assicurarsi che la distribuzione JVM sia supportata.
Esclusione delle JVM dal monitoraggio
Per evitare l'associazione dell'agente Instana a un JVM, è possibile impostare la variabile INSTANA_IGNORE di ambiente su true nell'ambiente JVM.
Opzionale: Configurazione del sensore
Dopo aver installato l'agente Instana, il sensore Java viene installato e configurato automaticamente. Sebbene non sia necessaria alcuna configurazione per le metriche predefinite e il tracciamento distribuito, è possibile configurare i singoli componenti del sensore.
Per ulteriori informazioni sulla configurazione del sensore, vedere Configurazione di un sensore Java.
Dopo aver configurato il sensore Java, questo inizia automaticamente a raccogliere le metriche dall' JVM. È possibile visualizzare queste metriche nell'interfaccia utente di Instana. Il sensore Java supporta anche altre funzionalità di Instana come il tracciamento automatico, il tracciamento personalizzato e la profilazione automatica.
Raccolta di metriche
Il sensore Java monitora l'istanza JVM e raccoglie le seguenti metriche da essa:
- Dati di configurazione
- Metriche di prestazioni
- Firme sanitarie
- Metriche personalizzate
- Altre metriche
Per visualizzare queste metriche, completa i seguenti passaggi:
- Nella barra laterale dell'interfaccia utente di Instana, seleziona Infrastruttura.
- Fare clic su un host monitorato specifico.
Il dashboard dell' JVM visualizza tutte le metriche raccolte per l'istanza dell' JVM.
Dati di configurazione
La tabella seguente elenca i dati di configurazione raccolti dall'istanza di JVM :
| Configurazione | Descrizione |
|---|---|
| Versione Java | La versione dell' Java. |
| Runtime Java | L'ambiente di runtime Java (JRE) di Java. |
| Heap massimo | Dimensione massima dell'heap disponibile per l' JVM e. |
| Percorso classi | Il parametro del percorso di classe impostato nell' JVM e. |
Metriche di prestazioni
La tabella seguente elenca i dati relativi alle metriche delle prestazioni raccolti dall'istanza di JVM :
| Metriche di prestazioni | Descrizione | Punto di dati |
|---|---|---|
| Memoria utilizzata | Memoria totale utilizzata dall' JVM e. Viene visualizzato il valore KPI misurato attualmente. | Il conteggio dei byte viene raccolto da java.lang.Runtime#totalMemory. |
| Thread | Numero di thread che si trovano in stati diversi: new, runnable, timed-waiting, waiting, o blocked. I valori vengono visualizzati su un grafico relativo al periodo di tempo selezionato. |
- Gli ID dei thread correnti vengono raccolti da java.lang.management.ThreadMXBean#getAllThreadIds. - Gli stati dei thread vengono raccolti da ThreadMXBean#getThreadInfo. |
| Memoria heap | Dimensione massima dell'heap disponibile per l' JVM e. | - Il conteggio dei byte viene calcolato come java.lang.Runtime#totalMemory - java.lang.Runtime#freeMemory. - La dimensione massima dell'heap visualizzata nel grafico viene determinata analizzando il -Xmx parametro della riga di comando oppure viene raccolta da java.lang.Runtime#maxMemory. - La percentuale di memoria heap utilizzata rispetto alla memoria heap totale. |
| Pool di memoria | L'utilizzo della memoria dei pool heap e non heap viene visualizzato su un grafico relativo a un periodo di tempo selezionato. | - Le informazioni sul pool vengono raccolte da ManagementFactory#getMemoryPoolMXBeans. - I valori del grafico vengono raccolti da ciascun pool java.lang.management.MemoryUsage. - Il valore massimo viene raccolto da getMax, il valore iniziale da getInite il valore corrente da getUsage. |
| Raccolta dati inutilizzati | I valori di attivazione e runtime della raccolta dei rifiuti vengono visualizzati su un grafico relativo a un periodo di tempo selezionato. | - Le informazioni sulla raccolta dei rifiuti vengono raccolte da ManagementFactory#getGarbageCollectorMXBeans. - I valori del grafico vengono raccolti da ciascuno dei raccoglitori java.lang.management.GarbageCollectorMXBean. - Il tempo di esecuzione della raccolta dei rifiuti viene raccolto da getCollectionTime, che, secondo Javadoc, è il tempo approssimativo trascorso in millisecondi per la raccolta dei rifiuti accumulati. - Il conteggio delle invocazioni viene raccolto da getCollectionCount. - Entrambi i valori getCollectionTime getCollectionCount e sono il differenziale calcolato durante 1 secondo. |
| Sospensione | Ritardo nell'esecuzione dell'applicazione visualizzato su un grafico relativo a un periodo di tempo selezionato. | Calcolato in base al thread di misurazione dell' Instana e nell'app. |
Metriche derivate
La tabella seguente elenca le metriche disponibili derivate dalle metriche delle prestazioni, calcolate da un'istanza di JVM :
| Metriche di prestazioni | Descrizione | Nome metrica |
|---|---|---|
| Memoria dopo GC | La quantità di memoria utilizzata da un'applicazione dopo un evento di Garbage Collection (GC). Questo valore è determinato dalle statistiche sull'utilizzo della memoria e dagli eventi di garbage collection. Quando il sensore " JVM " (Memoria dopo la raccolta dei rifiuti) segnala un'invocazione globale della raccolta dei rifiuti, il valore della memoria in quel momento viene utilizzato per segnalare il valore "Memory After GC" (Memoria dopo la raccolta dei rifiuti). | 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). Questo valore è determinato dalle statistiche sull'utilizzo della memoria e dagli eventi di garbage collection. Quando il sensore " JVM " (Memoria prima della raccolta dei rifiuti) segnala un'invocazione globale della raccolta dei rifiuti, il valore della memoria precedente a tale invocazione viene utilizzato per segnalare il valore "Memory Before GC" (Memoria prima della raccolta dei rifiuti). | memory.gc.after |
| Memoria dopo GC Percentuale | Una metrica che rappresenta la percentuale di memoria totale disponibile utilizzata da un'applicazione dopo un evento di Garbage Collection (GC). Per ricavare questo valore vengono utilizzate le statistiche sulle prestazioni della memoria utilizzata, la memoria massima utilizzata e le statistiche sulla raccolta dei rifiuti. La percentuale di memoria dopo GC è la percentuale di memoria in uso dopo una raccolta globale dei rifiuti, rispetto alla memoria massima utilizzata dall' JVM. | memory.gc.afterPercentage |
| Memoria prima della GC Percentuale | Una metrica che rappresenta la percentuale di memoria totale disponibile utilizzata da un'applicazione prima di un evento di Garbage Collection (GC). Per ricavare questo valore vengono utilizzate le statistiche sulle prestazioni della memoria utilizzata, la memoria massima utilizzata e le statistiche sulla raccolta dei rifiuti. La percentuale di memoria prima della GC è la percentuale di memoria in uso prima di una raccolta globale dei rifiuti, rispetto alla memoria massima utilizzata dall' JVM. | memory.gc.beforePercentage |
Firme sanitarie
Ogni sensore dispone di una base di conoscenze curata di indicatori di integrità che vengono valutati continuamente rispetto alle metriche in entrata. Queste firme di integrità vengono utilizzate per segnalare problemi o incidenti che dipendono dall'impatto sull'utente.
Gli eventi integrati attivano problemi o incidenti in base a firme di integrità non riuscite sulle entità, mentre gli eventi personalizzati attivano problemi o incidenti in base alle soglie di una singola metrica di qualsiasi entità.
Per ulteriori informazioni sugli eventi integrati per il sensore Java, consultare il riferimento agli eventi integrati.
Metriche personalizzate
Instana supporta alcune librerie di metriche comuni di Java. Se utilizzi le seguenti librerie, puoi strumentare manualmente il codice della tua applicazione per raccogliere metriche personalizzate:
Per ulteriori informazioni, vedere Tracciamento personalizzato.
Utilizzo delle metriche di Dropwizard per il monitoraggio personalizzato di JVM
Se l' JVM e carica la libreria delle metriche Dropwizard, le metriche personalizzate vengono raccolte e visualizzate sulla dashboard JVM. Per evitare il sovraccarico del backend, è previsto un limite predefinito di 200 metriche.
Per disabilitare o modificare il limite delle metriche raccolte, utilizzare la seguente configurazione:
com.instana.plugin.java:
dropwizardMetricCollection:
enabled: false
limit: 200
Se si utilizzano le metriche di Dropwizard come parte del framework Dropwizard, consultare Monitoraggio di Dropwizard.
Altre metriche
Oltre alle metriche relative alla configurazione, alle prestazioni e alle personalizzazioni, il sensore Java raccoglie anche altre metriche, come il thread dump e l'heap dump in tempo reale.
Dump thread live
Per visualizzare un thread dump in tempo reale per l' JVM, fare clic su Ottieni thread dump.
Dump heap
Per creare un dump dell'heap per l' JVM, fare clic su Ottieni dump dell'heap. Per memorizzare il dump dell'heap, indicare una posizione locale all' JVM e.
Tracciamento delle applicazioni Java
Il sensore Java in Instana utilizza i seguenti metodi per tracciare le applicazioni Java :
- Instana AutoTrace : tracciamento automatico delle applicazioni dell' Java senza necessità di configurazioni manuali o modifiche al codice.
- Tracciamento 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 di Java fornisce informazioni dettagliate sulle prestazioni, l'utilizzo della CPU, l'allocazione della memoria e 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 cross-host e cross-language. Per ulteriori informazioni, consultare Instana AutoTrace™.
È possibile visualizzare queste tracce nell'interfaccia utente di Instana. Per ulteriori informazioni, vedere 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 il tracciamento, Instana popola automaticamente il contesto diagnostico mappato (MDC) con l'ID di tracciamento. Il nome della variabile MDC è instana.trace.id. Per ulteriori informazioni sull'utilizzo dei framework di registrazione nelle stringhe di formato, consultare la documentazione relativa al proprio 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 tracce personalizzate alla tua dashboard di Instana. È possibile utilizzare i seguenti metodi per implementare il tracciamento personalizzato:
Java SDK Trace
Se desideri strumentare un framework non ancora supportato da Instana o monitorare le richieste di un'applicazione personalizzata, utilizza l 'SDK Trace di Java e consulta il repository GitHub.
Prima di implementare il tracciamento personalizzato utilizzando l'SDK, consulta le best practice relative al tracciamento.
SDK di tracciamento basato sulla configurazione di Java
Potrebbero verificarsi situazioni in cui l'utilizzo dell'SDK Trace di Java, che richiede la manipolazione del codice sorgente o il contatto con qualcuno in grado di farlo, non è fattibile o auspicabile. In questi casi, utilizzare l 'SDK Trace basato sulla configurazione Java. Sebbene meno ricco di funzionalità rispetto all 'SDK Trace programmatico Java, l'SDK Trace basato su configurazione Java consente una configurazione dichiarativa di span e tag che coprono molti casi d'uso comuni.
Prima di implementare il tracciamento personalizzato utilizzando l 'SDK Trace di Java basato sulla configurazione, consulta le best practice relative al tracciamento.
Java OpenTracing API
Per raccogliere le tracce descritte tramite OpenTracing API, è necessario utilizzare Java OpenTracing. Per ulteriori informazioni, consultare OpenTracing.
Disattiva il tracciamento automatico ( Instana AutoTrace™ ) prima di utilizzare Java OpenTracing API. Per ulteriori informazioni, vedere Disabilitazione della strumentazione di tracciamento dell' Java.
OpenCensus Instana Esportatore di tracce
Instana fornisce un Trace Exporter per l' OpenCensus per le applicazioni scritte in Java. Utilizzando i processi dell'agente Instana come proxy, Instana inoltra le tracce esportate dalle applicazioni strumentate con Census al proprio backend.
Per ulteriori informazioni, consultare il sito OpenCensus Exporters.
Disabilitare il tracciamento automatico ( Instana AutoTrace™ ) se l'agente viene utilizzato sullo stesso host di Census. Per ulteriori informazioni, consultare [Disabilitazione della strumentazione di tracciamento di Java ](../.. /ecosystem/jvm/configuration.html #disabling-java-trace-instrumentation.
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 riporta i profili di processo a Instana. A differenza dei profiler in fase di sviluppo e su richiesta, che richiedono l'avvio manuale della profilatura, AutoProfile™ pianifica automaticamente ed esegue in modo continuo la profilatura appropriata per gli ambienti di produzione critici.
Per ulteriori informazioni, consultare Instana AutoProfile™.
Escludendo le JVM
È possibile impostare la variabile INSTANA_IGNORE di ambiente su true nell'ambiente JVM per evitare l'allegato di Instana Agent a JVM.
Risoluzione dei problemi
Potresti riscontrare alcuni problemi di monitoraggio con Instana. Per ulteriori informazioni, consultare la sezione Risoluzione dei problemi.