Introduzione all'agente di diagnostica Java

Questo articolo descrive come iniziare a usare l'agente di diagnostica Java. Descrive anche lo strumento di diagnostica Java nel plugin AKS per IntelliJ IDEA.

L'agente di diagnostica Java è un agente Java per la risoluzione dei problemi di un processo Java. Non è necessario ricompilare, ridistribuire o riavviare un'applicazione. Attualmente supporta l'aggiunta di log per una funzione in una classe Java. Quando viene chiamata la funzione, il log viene stampato insieme a un calcolo del tempo totale utilizzato dalla funzione.

Prerequisiti

Stabilire il port forwarding

Utilizzare il comando seguente per impostare il port forwarding al servizio agente.

kubectl port-forward svc/diag4j-agent-service -n <namespace> <port>:8080

Usare lo strumento di diagnostica Java nel plug-in AKS per IntelliJ IDEA

Usare il plug-in Java Diagnostic Tool per AKS per connettere l'agente Java Diagnostic Agent all'applicazione Java in esecuzione in un contenitore di pod in un cluster Servizio Azure Kubernetes (AKS).

Dopo aver collegato l'agente, è possibile risolvere i problemi aggiungendo i log relativi a una funzione di classe. Usare questo log per verificare se la funzione viene eseguita e per calcolare il tempo totale impiegato nella funzione. Questa analisi consente di individuare i colli di bottiglia delle prestazioni nell'applicazione.

La scheda Diagnostica mostra la configurazione del plug-in. Qui è possibile:

  • Configurare la porta locale che inoltra il servizio all'agente.
  • Visualizzare i pod elencati con kubeconfig nell'ambiente locale.
  • Selezionare Aggiorna per aggiornare la tabella dei pod. Dopo aver commutato i cluster, aggiornare la tabella per caricare i pod nel nuovo cluster.

Screenshot della scheda Diagnostica IntelliJ IDEA.

Allegare l'agente

Il contenitore pod deve avere una cartella /tmp e deve disporre dell'autorizzazione di scrittura per la cartella /tmp .

Per abilitare il collegamento dell'agente nella JVM, non aggiungere -XX:+DisableAttachMechanism alle opzioni JVM.

Il server di diagnostica back-end si chiude dopo 6 ore.

Per collegare l'agente, selezionare il pod a cui collegare l'agente e quindi selezionare il contenitore. È possibile collegare l'agente solo a un contenitore nel pod. Attendere quindi il completamento del processo di allegazione.

Screenshot di IntelliJ IDEA che mostra la scheda Diagnostica con la finestra di dialogo Selezione contenitore aperta.

Impostare il contenitore pod attivo

Dopo aver collegato correttamente l'agente, usarlo per la risoluzione dei problemi.

È possibile che più pod abbiano inserito l'agente, quindi è necessario impostare un pod attivo. In IntelliJ IDEA, nella scheda Diagnostica, fai clic con il pulsante destro del mouse su un pod e quindi seleziona Seleziona come attivo.

Screenshot della scheda Diagnostica IntelliJ IDEA con un pod selezionato e la voce di menu Seleziona come attiva.

Aggiungere il log a una funzione di classe

Il log configurato viene rimosso automaticamente dopo 30 minuti.

È possibile usare lo strumento per aggiungere la registrazione delle funzioni di classe, ma non interfacce, costruttori e così via.

Per aggiungere la registrazione a una funzione, fare clic con il pulsante destro del mouse nell'editor e quindi selezionare Java Diagnostic>Add AroundLog, come illustrato nello screenshot seguente.

Screenshot di IntelliJ IDEA che mostra il menu di scelta rapida aperto per una funzione con l'opzione di menu Aggiungi AroundLog evidenziata.

In questo esempio, dopo aver aggiunto la registrazione, è possibile chiamare <host>/infor per visualizzare l'output simile all'esempio seguente prima e dopo la chiamata della funzione:

===== START ===== Method: updateInformation Start Time: 2024-12-12T07:37:55.404107848Z
Done with the validation
Done with the DB access
Done with the data filtering
===== END ===== Method: updateInformation End Time: 2024-12-12T07:37:55.404316940Z Total Time: 0 milliseconds

Rimuovere tutti i log configurati

Per rimuovere tutti i log aggiunti dall'agente, selezionare Rimuovi tutti i log.

Nota

Un contenitore temporaneo nel pod usa l'agente di Java back-end. Dopo il riavvio del pod, l'agente viene rimosso.

Risoluzione dei problemi

Può verificarsi un timeout quando si tenta di connettere l'agente a un pod in esecuzione su un nodo che non è già abilitato per la funzionalità. Il timeout si verifica perché il nodo deve prima recuperare l'immagine dell'agente, causando un ritardo. Quando si verifica questo ritardo, selezionare Aggiorna per verificare se l'agente è collegato o provare a collegare nuovamente l'agente.

Se il collegamento non va a buon fine, controllare il log denominato diagnostic-container-<hashcode> nel contenitore effimero.

È possibile trovare informazioni sulle operazioni del plug-in nei log nel contenitore pod denominato diag4j-agent-service-<hashcode>.

Passaggio successivo

Introduzione al componente Spring Boot Admin dello strumento di diagnostica Java (diag4j) su AKS (Azure Kubernetes Service)