Freigeben über


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

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.

Screenshot der Registerkarte IntelliJ IDEA-Diagnose.

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.

Screenshot von IntelliJ IDEA, der die Registerkarte

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.

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.

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.

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