Wprowadzenie do agenta diagnostycznego Java
W tym artykule opisano, jak rozpocząć korzystanie z agenta diagnostycznego Java. Opisano w nim również narzędzie diagnostyczne Java we wtyczce AKS dla środowiska IntelliJ IDEA.
Agent diagnostyczny Java to agent Java do rozwiązywania problemów z procesem Java. Nie wymaga ponownego kompilowania, ponownego wdrażania ani ponownego uruchamiania aplikacji. Obecnie obsługuje dodawanie logów dla funkcji w klasie Java. Po wywołaniu funkcji dziennik jest drukowany wraz z obliczeniem całkowitego czasu zużywanego przez funkcję.
Warunki wstępne
diag4j zainstalowane w klastrze.
Java LTS w wersji 11, 17 lub 21.
Wtyczka środowiska IntelliJ IDEA zainstalowana lokalnie za pośrednictwem Settings>Plugins>Install Plugin from Disk.
Aplikacje Java do rozwiązywania problemów. Aby uzyskać więcej informacji, zobacz Deploy Spring Boot Application to the Azure Kubernetes Service (Wdrażanie aplikacji Spring Boot w usłudze Azure Kubernetes Service).
Konfiguracja przekierowania portów
Użyj następującego polecenia, aby ustanowić przekierowanie portów do usługi agenta.
kubectl port-forward svc/diag4j-agent-service -n <namespace> <port>:8080
Użyj narzędzia diagnostycznego Java w wtyczce AKS w środowisku IntelliJ IDEA
Za pomocą wtyczki "Java Diagnostic Tool na AKS" możesz dołączyć agenta diagnostycznego Java do aplikacji Java działającej w kontenerze pod w klastrze usługi Azure Kubernetes Service (AKS).
Po dołączeniu agenta można wykonywać zadania związane z rozwiązywaniem problemów, takie jak dodawanie logów do funkcji klasy. Możesz użyć tego dziennika, aby sprawdzić, czy funkcja jest wykonywana, i obliczyć całkowity czas spędzony w funkcji. Ta analiza może pomóc w zlokalizowaniu wąskich gardeł wydajności w aplikacji.
Konfiguracja wtyczki jest wyświetlana na karcie diagnostyki. W tym miejscu można wykonać następujące zadania:
- Skonfiguruj port lokalny, który przekierowuje do usługi agenta.
- Wyświetl pody z oznaczeniem
kubeconfig
w swoim środowisku lokalnym. - Wybierz pozycję Odśwież, aby odświeżyć tabelę zasobników. Po przełączeniu klastrów należy odświeżyć tabelę, aby załadować pody w nowym klastrze.
Dołącz agenta
Kontener podu powinien mieć folder /tmp i powinien mieć uprawnienia do zapisu w folderze /tmp.
Aby włączyć dołączanie agenta do maszyny JVM, upewnij się, że nie dodajesz -XX:+DisableAttachMechanism
do opcji JVM.
Serwer diagnostyczny zaplecza jest zamknięty po 6 godzinach.
Aby dołączyć agenta, kliknij zasobnik, do którego chcesz dołączyć agenta, a następnie wybierz kontener. Agenta można dołączyć tylko do jednego kontenera w zasobniku. Następnie poczekaj na ukończenie procesu dołączania.
Ustaw aktywny kontener pod
Po pomyślnym dołączeniu agenta można go użyć do rozwiązywania problemów.
Wiele zasobników mogło wstrzyknąć agenta, więc należy ustawić aktywny zasobnik. W środowisku IntelliJ IDEA na karcie diagnostyki kliknij prawym przyciskiem myszy pod, a następnie wybierz Ustaw jako aktywny.
Dodaj rejestrowanie do funkcji klasy
Skonfigurowany dziennik zostanie automatycznie usunięty po 30 minutach.
Za pomocą narzędzia można dodawać logowanie funkcji klas, ale nie interfejsów, konstruktorów itd.
Aby dodać rejestrowanie do funkcji, kliknij prawym przyciskiem myszy na funkcję w edytorze, a następnie wybierz opcję Java Diagnostic>Add AroundLog, jak to pokazano na poniższym zrzucie ekranu.
W tym przykładzie po dodaniu rejestrowania można wywołać <host>/infor
, aby wyświetlić dane wyjściowe podobne do poniższego przykładu przed i po wywołaniu funkcji:
===== 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
Usuń wszystkie skonfigurowane dzienniki
Aby usunąć wszystkie logi dodane przez agenta, wybierz pozycję Usuń wszystkie AroundLogs.
Notatka
Agent zaplecza Java jest używany przez efemeryczny kontener w podzie. Po ponownym uruchomieniu zasobnika agent zostanie usunięty.
Rozwiązywanie problemów
Przekroczenie limitu czasu może wystąpić podczas próby dołączenia agenta do zasobnika uruchomionego w węźle, który nie włączył jeszcze tej funkcji. Może wystąpić przekroczenie limitu czasu, ponieważ węzeł musi najpierw pobrać obraz agenta, co powoduje opóźnienie. W takim przypadku możesz wybrać Odśwież, aby sprawdzić, czy agent został dołączony, lub możesz spróbować ponownie dołączyć agenta.
Jeśli załącznik zakończy się niepowodzeniem, możesz sprawdzić dziennik o nazwie diagnostic-container-<hashcode>
w kontenerze efemerycznym.
Informacje o operacjach wtyczki można znaleźć w dziennikach w kontenerze pod o nazwie diag4j-agent-service-<hashcode>
.