Erste Schritte mit dem Java-Diagnose-Agent
In diesem Artikel wird beschrieben, wie Sie mit dem Java Diagnostic Agent beginnen. Außerdem wird das Java-Diagnosetool für das AKS-Plug-In für IntelliJ IDEA beschrieben.
Der Java-Diagnose-Agent ist ein Java-Agent für die Problembehandlung eines Java-Prozesses. Es muss keine Anwendung neu erstellt, erneut bereitgestellt oder neu gestartet werden. Derzeit unterstützt es das Hinzufügen von Protokollen zu einer Funktion in einer Java-Klasse. Wenn die Funktion aufgerufen wird, wird das Protokoll zusammen mit einer Berechnung der Gesamtzeit gedruckt, die von der Funktion verbraucht wird.
Voraussetzungen
diag4j in Ihrem Cluster installiert.
Java LTS Version 11, 17 oder 21.
Das IntelliJ IDEA Plug-In ist lokal über Einstellungen>Plug-Ins>Plug-In vom Datenträger installieren zu installieren.
Java-Anwendungen zur Problembehandlung. Weitere Informationen finden Sie unter Deploy Spring Boot Application to the Azure Kubernetes Service.
Portweiterleitung einrichten
Verwenden Sie den folgenden Befehl, um die Portweiterleitung an den Agent-Dienst einzurichten:
kubectl port-forward svc/diag4j-agent-service -n <namespace> <port>:8080
Verwenden des Java-Diagnosetools im AKS-Plug-In für IntelliJ IDEA
Sie können das Java-Diagnosetool auf dem AKS-Plug-In verwenden, um den Java-Diagnose-Agent an die Java-Anwendung anzufügen, die in einem Pod-Container auf einem Azure Kubernetes Service (AKS)-Cluster ausgeführt wird.
Nachdem Sie den Agent angefügt haben, können Sie Problembehandlungsaufgaben ausführen, z. B. das Hinzufügen von Protokollen zu einer Klassenfunktion. Sie können dieses Protokoll verwenden, um zu testen, ob die Funktion ausgeführt wird, und um die Gesamtzeit für die Funktion zu berechnen. Diese Analyse kann Ihnen helfen, Leistungsengpässe in Ihrer Anwendung zu finden.
Die Plug-In-Konfiguration wird auf der Registerkarte Diagnose angezeigt. Hier können Sie die folgenden Aufgaben ausführen:
- Konfigurieren Sie den lokalen Port, der an den Agentdienst weiterleitet.
- Zeigen Sie die mit
kubeconfig
in Ihrer lokalen Umgebung gelisteten Pods an. - Wählen Sie Aktualisieren aus, um die Pod-Tabelle zu aktualisieren. Nachdem Sie Cluster gewechselt haben, sollten Sie die Tabelle aktualisieren, um die Pods in einem neuen Cluster zu laden.
Fügen Sie den Agenten an
Der Podcontainer sollte über einen /tmp--Ordner verfügen und über Schreibberechtigungen für den ordner /tmp verfügen.
Um das Anfügen des Agents in der JVM zu aktivieren, achten Sie darauf, -XX:+DisableAttachMechanism
nicht zu den JVM-Optionen hinzuzufügen.
Der Back-End-Diagnoseserver wird nach 6 Stunden geschlossen.
Um den Agent anzufügen, klicken Sie auf den Pod, an den Sie den Agent anfügen möchten, und wählen Sie dann den Container aus. Sie können den Agent nur an einen Container im Pod anfügen. Warten Sie dann, bis der Anhangsvorgang abgeschlossen ist.
Legen Sie den aktiven Pod-Container fest
Nachdem Sie den Agent erfolgreich angefügt haben, können Sie ihn zur Problembehandlung verwenden.
Es könnte sein, dass der Agent in mehreren Pods eingefügt ist, deshalb müssen Sie einen aktiven Pod auswählen. Klicken Sie in IntelliJ IDEA auf der Registerkarte Diagnose mit der rechten Maustaste auf einen Pod und wählen Sie dann Als aktiv festlegen aus.
Fügen Sie eine Protokollierung für eine Klassenfunktion hinzu
Das konfigurierte Protokoll wird nach 30 Minuten automatisch entfernt.
Sie können das Tool verwenden, um eine Protokollierung für Klassenfunktionen hinzuzufügen, nicht jedoch Schnittstellen, Konstruktoren usw.
Wenn Sie einer Funktion die Protokollierung hinzufügen möchten, klicken Sie im Editor mit der rechten Maustaste darauf, und wählen Sie dann Java Diagnostic>Add AroundLogaus, wie im folgenden Screenshot gezeigt.
In diesem Beispiel können Sie nach dem Hinzufügen der Protokollierung <host>/infor
aufrufen, um die Ausgabe ähnlich wie im folgenden Beispiel vor und nach dem Aufruf der Funktion anzuzeigen:
===== 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
Entfernen aller konfigurierten Protokolle
Um alle vom Agenten hinzugefügten Protokolle zu entfernen, wählen Sie Alle AroundLogs entfernen aus.
Anmerkung
Der Back-End-Java-Agent wird von einem kurzlebigen Container im Pod verwendet. Nach dem Neustart des Pods wird der Agent entfernt.
Fehlerbehebung
Ein Timeout kann auftreten, wenn Sie versuchen, einen Agenten mit einem Pod zu verbinden, der auf einem Knoten läuft, auf dem das Feature noch nicht aktiviert wurde. Das Timeout kann auftreten, da der Knoten zuerst das Agentimage abrufen muss, was zu einer Verzögerung führt. In diesem Fall können Sie Aktualisieren auswählen, um zu überprüfen, ob der Agent angefügt wurde, oder Sie können versuchen, den Agent erneut anzufügen.
Wenn das Anfügen fehlschlägt, können Sie im temporären Container das Protokoll mit dem Namen diagnostic-container-<hashcode>
überprüfen.
Informationen zu den Vorgängen des Plug-Ins finden Sie in den Protokollen unter dem Pod-Container mit dem Namen diag4j-agent-service-<hashcode>
.
Nächster Schritt
Erste Schritte mit der Spring Boot Admin-Komponente des Java-Diagnosetools (diag4j) auf AKS