Aan de slag met de diagnostische Java-agent

In dit artikel wordt beschreven hoe u aan de slag gaat met de diagnostische Java-agent. Het beschrijft ook het diagnostisch hulpprogramma voor Java in AKS voor IntelliJ IDEA.

De Diagnostische Java-agent is een Java-agent voor het oplossen van problemen met een Java-proces. Het is niet nodig om een toepassing opnieuw te bouwen, opnieuw te implementeren of opnieuw te starten. Op dit moment biedt het ondersteuning voor het toevoegen van logboeken rond een functie in een Java-klasse. Wanneer de functie wordt aangeroepen, wordt het logboek samen met een berekening van de totale tijd die door de functie wordt verbruikt, afgedrukt.

Voorwaarden

Port Forwarding instellen

Gebruik de volgende opdracht om poort doorsturen tot stand te brengen naar de agent service:

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

Het diagnostisch hulpprogramma voor Java gebruiken in de AKS-invoegtoepassing voor IntelliJ IDEA

Gebruik de Java Diagnostic Tool in de AKS-invoegtoepassing om de Java Diagnostische agent te koppelen aan de Java-toepassing die wordt uitgevoerd in een podcontainer op een Azure Kubernetes Service (AKS)-cluster.

Nadat u de agent hebt gekoppeld, kunt u problemen oplossen door logboeken toe te voegen rond een klassefunctie. Gebruik dit logboek om te testen of de functie wordt uitgevoerd en om de totale tijd te berekenen die in de functie is besteed. Deze analyse kan u helpen bij het vinden van prestatieknelpunten in uw toepassing.

Op het tabblad Diagnostisch ziet u de configuratie van de invoegtoepassing. Hier kunt u het volgende doen:

  • Configureer de lokale poort die wordt doorgestuurd naar de agentservice.
  • Bekijk de pods die worden vermeld met kubeconfig in uw lokale omgeving.
  • Selecteer Vernieuwen om de podtabel bij te werken. Nadat u van clusters bent overgeschakeld, vernieuwt u de tabel om de pods in het nieuwe cluster te laden.

Schermafbeelding van het tabblad Diagnostische gegevens van IntelliJ IDEA.

De agent koppelen

De pod-container moet een /tmp-map hebben en moet schrijfrechten hebben voor de /tmp-map.

Om het koppelen van de agent in de JVM in te schakelen, voegt u -XX:+DisableAttachMechanism niet toe aan de JVM-opties.

De diagnostische back-endserver wordt na 6 uur gesloten.

Als u de agent wilt koppelen, selecteert u de pod waaraan u de agent wilt koppelen en selecteert u vervolgens de container. U kunt de agent alleen koppelen aan één container in de pod. Wacht vervolgens totdat het bijlageproces is voltooid.

Schermopname van IntelliJ IDEA met het tabblad Diagnostisch met het dialoogvenster Containerselectie geopend.

De actieve podcontainer instellen

Nadat u de agent hebt gekoppeld, kunt u deze gebruiken om problemen op te lossen.

Meerdere pods hebben mogelijkerwijs de agent geïnjecteerd, dus u moet een actieve pod selecteren. Klik in IntelliJ IDEA op het tabblad Diagnostische met de rechtermuisknop op een pod en selecteer vervolgens Selecteren als de actieve.

Schermopname van het tabblad IntelliJ IDEA Diagnostic met een pod geselecteerd en de optie Selecteren als het actieve menu-item dat wordt weergegeven.

Logboekregistratie toevoegen rond een klassefunctie

Het geconfigureerde logboek wordt na 30 minuten automatisch verwijderd.

U kunt het hulpprogramma gebruiken om logboekregistratie toe te voegen rond klassefuncties, maar niet interfaces, constructors, enzovoort.

Als u logboekregistratie wilt toevoegen aan een functie, klikt u er met de rechtermuisknop op in de editor en selecteert u Java Diagnostic>Add AroundLog, zoals wordt weergegeven in de volgende schermopname.

Schermopname van IntelliJ IDEA waarin het contextmenu wordt weergegeven dat is geopend voor een functie met de menuoptie Rondlog toevoegen gemarkeerd.

In dit voorbeeld kunt u, nadat u de logboekregistratie hebt toegevoegd, <host>/infor aanroepen om uitvoer te zien die vergelijkbaar is met het volgende voorbeeld voor en nadat de functie is aangeroepen:

===== 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

Alle geconfigureerde logboeken verwijderen

Als u alle logboeken wilt verwijderen die door de agent worden toegevoegd, selecteert u All AroundLogs verwijderen.

Notitie

Een tijdelijke container in de pod maakt gebruik van de back-end-Java-agent. Nadat de pod opnieuw is opgestart, wordt de agent verwijderd.

Probleemoplossing

Er kan een time-out optreden wanneer u probeert de agent te koppelen aan een pod die draait op een knooppunt waarop deze functie nog niet is ingeschakeld. De time-out treedt op omdat het knooppunt eerst de agentimage moet ophalen, waardoor vertraging ontstaat. Wanneer deze vertraging optreedt, selecteert u Vernieuwen om te controleren of de agent is gekoppeld of probeert u de agent opnieuw te koppelen.

Als de bijlage mislukt, controleert u het logboek met de naam diagnostic-container-<hashcode> in de tijdelijke container.

U vindt informatie over de bewerkingen van de invoegtoepassing in de logboeken onder de podcontainer met de naam diag4j-agent-service-<hashcode>.

Volgende stap

Aan de slag met het Spring Boot-beheeronderdeel van het Diagnostisch hulpprogramma voor Java (diag4j) op AKS-