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

Użyj wtyczki Java Diagnostic Tool on AKS, aby podłączyć agenta Java Diagnostic Agent do aplikacji Java uruchomionej w kontenerze poda w klastrze Azure Kubernetes Service (AKS).

Po podłączeniu agenta możesz diagnozować problemy, dodając logi w kodzie otaczającym funkcję klasy. Użyj tego dziennika, aby sprawdzić, czy funkcja jest wykonywana, i obliczać całkowity czas spędzony w funkcji. Ta analiza może pomóc w zlokalizowaniu wąskich gardeł wydajności w aplikacji.

Karta Diagnostyka zawiera konfigurację wtyczki. W tym miejscu możesz:

  • 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 klastra odśwież tabelę, aby załadować pody w nowym klastrze.

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

Dołącz agenta

Kontener poda musi mieć folder /tmp i musi mieć uprawnienia do zapisu w folderze /tmp.

Aby umożliwić dołączanie agenta do JVM, nie dodawaj -XX:+DisableAttachMechanism do opcji JVM.

Serwer diagnostyczny zaplecza jest zamykany po 6 godzinach.

Aby dołączyć agenta, wybierz 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 użyj go 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 ją prawym przyciskiem myszy w edytorze, a następnie wybierz pozycję Java Diagnostic>Add AroundLog, jak 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 dzienniki dodane przez agenta, wybierz pozycję Usuń wszystkie dzienniki AroundLogs.

Notatka

Kontener efemeryczny w podzie używa agenta Java backendu. Po ponownym uruchomieniu zasobnika agent zostanie usunięty.

Rozwiązywanie problemów

Podczas próby dołączenia agenta do zasobnika uruchomionego w węźle, który nie jest jeszcze włączony dla tej funkcji, może wystąpić przekroczenie limitu czasu. Przekroczenie limitu czasu występuje, ponieważ węzeł najpierw musi pobrać obraz agenta, co powoduje opóźnienie. Gdy wystąpi to opóźnienie, wybierz pozycję Odśwież , aby sprawdzić, czy agent jest dołączony, lub spróbuj ponownie dołączyć agenta.

Jeśli załącznik zakończy się niepowodzeniem, sprawdź 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