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

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 kubeconfig in 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.

Screenshot der Registerkarte IntelliJ IDEA-Diagnose.

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.

Screenshot von IntelliJ IDEA, der die Registerkarte

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.

Screenshot der Registerkarte

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.

Screenshot von IntelliJ IDEA, der das Kontextmenü zeigt, das für eine Funktion geöffnet wurde, wobei die Menüoption

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