Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
Verwenden Sie das Java Diagnosetool auf dem AKS-Plug-In, um den Java Diagnose-Agent an die Java Anwendung anzufügen, die in einem Podcontainer in einem Azure Kubernetes Service (AKS) Cluster ausgeführt wird.
Nachdem Sie den Agent angefügt haben, können Sie Probleme beheben, indem Sie Protokolle zu einer Klassenfunktion hinzufügen. Verwenden Sie dieses Protokoll, 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.
Auf der Registerkarte " Diagnose " wird die Plug-In-Konfiguration angezeigt. Hier haben Sie folgende Möglichkeiten:
- Konfigurieren Sie den lokalen Port, der an den Agentdienst weiterleitet.
- Zeigen Sie die mit
kubeconfigin Ihrer lokalen Umgebung gelisteten Pods an. - Wählen Sie Aktualisieren aus, um die Pod-Tabelle zu aktualisieren. Aktualisieren Sie nach dem Wechseln von Clustern die Tabelle, um die Pods in einem neuen Cluster zu laden.
Fügen Sie den Agenten an
Der Podcontainer muss über einen /tmp-Ordner verfügen und über Schreibberechtigungen für den Ordner "/tmp " verfügen.
Um das Anhängen des Agenten in der JVM zu aktivieren, fügen Sie -XX:+DisableAttachMechanism nicht zu den JVM-Optionen hinzu.
Der Back-End-Diagnoseserver wird nach 6 Stunden geschlossen.
Um den Agent anzufügen, wählen Sie den Pod aus, 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 verbunden haben, verwenden Sie ihn zur Fehlerbehebung.
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.
Klicken Sie zum Hinzufügen der Protokollierung zu einer Funktion im Editor mit der rechten Maustaste darauf, und wählen Sie dann Java Diagnostic>Add AroundLog aus, 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 Agent hinzugefügten Protokolle zu entfernen, wählen Sie "Alle AroundLogs entfernen" aus.
Anmerkung
Ein kurzlebiger Container im Pod verwendet den Back-End-Java-Agent. Nach dem Neustart des Pods wird der Agent entfernt.
Fehlerbehebung
Ein Timeout kann auftreten, wenn Sie versuchen, den Agent einem Pod zuzuordnen, der auf einem Knoten läuft, der noch nicht für diese Funktion aktiviert wurde. Das Timeout erfolgt, da der Knoten zuerst das Agentimage abrufen muss, was zu einer Verzögerung führt. Wenn diese Verzögerung auftritt, wählen Sie "Aktualisieren" aus, um zu überprüfen, ob der Agent angefügt ist, oder versuchen Sie erneut, den Agent anzufügen.
Wenn die Anbindung fehlschlägt, überprüfen Sie das Protokoll namens diagnostic-container-<hashcode> im ephemeren Container.
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