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
diag4j geïnstalleerd in uw cluster.
Java LTS versie 11, 17 of 21.
De invoegtoepassing IntelliJ IDEA , lokaal geïnstalleerd via Instellingen>Plugins>Installeer plug-in vanaf schijf.
Java-toepassingen waarmee u problemen kunt oplossen. Zie Spring Boot-toepassing implementeren in de Azure Kubernetes Service-voor meer informatie.
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
U kunt het hulpprogramma Java Diagnostic in AKS gebruiken om de Java Diagnostic Agent te koppelen aan de Java-toepassing die wordt uitgevoerd in een podcontainer op een AKS-cluster (Azure Kubernetes Service).
Nadat u de agent hebt gekoppeld, kunt u hiermee probleemoplossingstaken uitvoeren, zoals het toevoegen van logboeken rond een klassefunctie. U kunt dit logboek gebruiken 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.
De configuratie van de invoegtoepassing wordt weergegeven op het tabblad Diagnostische. Hier kunt u de volgende taken uitvoeren:
- 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, moet u de tabel vernieuwen om de pods in het nieuwe cluster te laden.
De agent koppelen
De podcontainer moet een map met /tmp- hebben en moet schrijfmachtigingen hebben voor de map /tmp.
Als u het koppelen van de agent in de JVM wilt inschakelen, moet u geen -XX:+DisableAttachMechanism
toevoegen aan de JVM-opties.
De diagnostische back-endserver wordt na 6 uur gesloten.
Als u de agent wilt koppelen, klikt u op de pod waaraan u de agent wilt koppelen en selecteert u de container. U kunt de agent alleen koppelen aan één container in de pod. Wacht vervolgens totdat het bijlageproces is voltooid.
De actieve podcontainer instellen
Nadat u de agent hebt gekoppeld, kunt u deze gebruiken voor probleemoplossing.
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.
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>AroundLog-toevoegen, zoals wordt weergegeven in de volgende schermopname.
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 zijn toegevoegd, selecteert u All AroundLogs verwijderen.
Notitie
De Back-end Java-agent wordt gebruikt door een tijdelijke container in de pod. Nadat de pod opnieuw is opgestart, wordt de agent verwijderd.
Probleemoplossing
Er kan een time-out optreden wanneer u de agent probeert te koppelen aan een pod die wordt uitgevoerd op een node die de functie nog niet heeft geactiveerd. De time-out kan optreden omdat het knooppunt eerst de agentafbeelding moet ophalen, wat een vertraging veroorzaakt. Als dit gebeurt, kunt u Vernieuwen selecteren om te controleren of de agent is gekoppeld, of kunt u proberen de agent opnieuw te koppelen.
Als de bijlage mislukt, kunt u het logboek met de naam diagnostic-container-<hashcode>
controleren 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>
.