Udostępnij za pośrednictwem


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

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.

zrzut ekranu przedstawiający kartę Diagnostyka w IntelliJ IDEA.

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.

Zrzut ekranu środowiska IntelliJ IDEA przedstawiający kartę Diagnostyka z otwartym oknom dialogowym Wybór kontenera.

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.

Zrzut ekranu przedstawiający kartę Diagnostyka Środowiska IntelliJ IDEA z wybranym zasobnikiem i pozycją Wybierz jako aktywny element menu.

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.

Zrzut ekranu środowiska IntelliJ IDEA przedstawiający menu kontekstowe otwarte dla funkcji z wyróżnioną opcją menu Add AroundLog.

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

Następny krok

Rozpocznij pracę ze składnikiem Spring Boot Admin narzędzia diagnostycznego Java (diag4j) w usłudze AKS