Condividi tramite


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

È possibile usare lo strumento di diagnostica Java nel plug-in servizio Azure Kubernetes per collegare l'agente di diagnostica Java all'applicazione Java in esecuzione in un contenitore pod in un cluster del servizio Azure Kubernetes.

Dopo aver collegato l'agente, consente di eseguire attività di risoluzione dei problemi, ad esempio l'aggiunta di log per una funzione di classe. È possibile 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 configurazione del plug-in viene visualizzata nella scheda Diagnostica. Qui è possibile eseguire le attività seguenti:

  • 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 cambiato cluster, è necessario aggiornare la tabella per caricare i pod in un 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, assicurarsi di non aggiungere -XX:+DisableAttachMechanism alle opzioni JVM.

Il server di diagnostica back-end viene chiuso dopo 6 ore.

Per collegare l'agente, fare clic sul pod a cui si vuole 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, è possibile 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 fare clic con il pulsante destro del mouse su un pod e quindi selezionare Selezionare come attivo uno.

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, quindi selezionare Diagnostica Java>Aggiungi 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 gli AroundLogs.

Nota

L'agente Java back-end è utilizzato da un contenitore effimero nel pod. Dopo il riavvio del pod, l'agente viene rimosso.

Risoluzione dei problemi

Un timeout può verificarsi quando si tenta di collegare l'agente a un pod in esecuzione in un nodo che non ha ancora abilitato la funzionalità. Il timeout può verificarsi perché il nodo deve prima recuperare l'immagine dell'agente, causando un ritardo. In questo caso, è possibile selezionare Aggiorna per verificare se l'agente è collegato oppure provare a collegare nuovamente l'agente.

Se l'allegato non viene inviato correttamente, è possibile controllare il registro denominato diagnostic-container-<hashcode> nel contenitore temporaneo.

È 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)