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 ".
Distribuzioni e runtime di Java supportati
Per informazioni sulle distribuzioni e sui runtime di Java supportati, consultare la pagina Distribuzioni di JVM supportate.
Framework e librerie supportati per il tracciamento
Java integra diversi framework e librerie per il tracciamento. Per ulteriori informazioni, consultare la sezione "Framework e librerie strumentate". Per il runtime deprecato di Java 6, consultare Framework e librerie strumentate per il runtime deprecato Java 6
Requisiti di sistema
Prima di installare l'agente Instana, assicurati che siano soddisfatti i requisiti di sistema necessari. Per ulteriori informazioni, consultare la sezione "Requisiti di sistema".
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.
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:
- Dati di configurazione
- Metriche di prestazioni
- Firme di integrità
- Metriche personalizzate
- Altre metriche
Per visualizzare queste metriche, completare la seguente procedura:
- Nella barra laterale dell'interfaccia utente di Instana, seleziona "Infrastruttura".
- 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 |
- `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.
Java OpenTracing API
Per raccogliere le tracce descritte all'indirizzo OpenTracing API, è necessario utilizzare Java OpenTracing. Per ulteriori informazioni, consultare il sito OpenTracing.
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 ».
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.
Risoluzione dei problemi
Potresti riscontrare alcuni problemi di monitoraggio con Instana. Per ulteriori informazioni, consultare la sezione "Risoluzione dei problemi".