Поделиться через


Начало работы с агентом диагностики Java

В этой статье описывается, как приступить к работе с агентом диагностики Java. Он также описывает инструмент диагностики Java в плагине AKS для IntelliJ IDEA.

Агент диагностики Java — это агент Java для устранения неполадок процесса Java. Не требуется пересоздавать, повторно развертывать или перезапускать приложение. В настоящее время она поддерживает добавление журналов вокруг функции в классе Java. При вызове функции журнал печатается вместе с вычислением общего времени, потребляемого функцией.

Необходимые условия

  • diag4j установлен в вашем кластере.

  • IntelliJ IDEA.

  • Java LTS версии 11, 17 или 21.

  • Подключаемый модуль IntelliJ IDEA , установленный локально с помощью параметров>подключаемых модулей>установить подключаемый модуль из диска.

    Снимок экрана страницы настроек IntelliJ IDEA с выбранным плагином Azure Toolkit для IntelliJ и выделенным пунктом меню

  • Приложения Java для устранения неполадок. Дополнительные сведения см. в статье Deploy Spring Boot Application to the Azure Kubernetes Service.

Настроить перенаправление портов

Используйте следующую команду, чтобы установить перенаправление портов в службу агента:

kubectl port-forward svc/diag4j-agent-service -n <namespace> <port>:8080

Использование средства диагностики Java в подключаемом модуле AKS для IntelliJ IDEA

Вы можете использовать средство диагностики Java в подключаемом модуле AKS для подключения агента диагностики Java к приложению Java, работающему в контейнере pod в кластере Службы Azure Kubernetes (AKS).

После подключения агента он позволяет выполнять задачи по устранению неполадок, например добавление журналов вокруг функции класса. Этот журнал можно использовать для проверки того, выполняется ли функция и вычисляется общее время, затраченное на функцию. Этот анализ поможет вам найти узкие места производительности в приложении.

Конфигурация плагина показана на вкладке диагностики . Здесь вы можете выполнить следующие задачи:

  • Настройте локальный порт для перенаправления на службу агента.
  • Просмотрите pod, перечисленные с kubeconfig в вашей локальной среде.
  • Выберите Обновить, чтобы обновить таблицу pod. После переключения кластеров необходимо обновить таблицу, чтобы загрузить поды в новом кластере.

снимок экрана вкладки

Присоедините агента

Контейнер pod должен иметь папку /tmp и иметь разрешение на запись в папку /tmp.

Чтобы включить подключение агента в JVM, убедитесь, что не добавляете -XX:+DisableAttachMechanism в параметры JVM.

Сервер диагностики бэкэнда закрывается спустя 6 часов.

Чтобы подключить агент, щелкните модуль pod, к которому нужно подключить агент, а затем выберите контейнер. Агент можно подключить только к одному контейнеру в модуле pod. Затем дождитесь завершения процесса вложения.

снимок экрана IntelliJ IDEA, на котором показана вкладка

Установите активный контейнер Pod

После успешного подключения агента его можно использовать для устранения неполадок.

Возможно, несколько модулей pod ввели агент, поэтому необходимо задать активный модуль pod. В IntelliJ IDEA на вкладке Диагностика щелкните правой кнопкой мыши pod и выберите Установить как активный.

снимок экрана: вкладка

Добавление логирования в функцию класса

Настроенный журнал автоматически удаляется через 30 минут.

С помощью средства можно добавить логирование в функциях класса, но не в интерфейсах, конструкторах и т. д.

Чтобы добавить ведение журнала в функцию, щелкните ее правой кнопкой мыши в редакторе, а затем выберите Java Diagnostic>Add AroundLog, как показано на следующем снимке экрана.

снимок экрана IntelliJ IDEA, показывающий контекстное меню, открытое для функции с выделенной опцией

В этом примере после добавления ведения журнала можно вызвать <host>/infor, чтобы увидеть выходные данные, аналогичные следующему примеру до и после вызова функции:

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

Удаление всех настроенных журналов

Чтобы удалить все логи, добавленные агентом, выберите Удалить все AroundLogs.

Заметка

Серверный агент Java используется временным контейнером в модуле pod. После перезапуска pod, агент будет удален.

Устранение неполадок

Время ожидания может возникать при попытке подключить агент к модулу pod, работающему на узле, который еще не включил эту функцию. Время ожидания может произойти, так как узел должен сначала получить образ агента, что приводит к задержке. Когда это происходит, выберите Обновить, чтобы проверить, подключен ли агент, или повторите попытку подключить агент еще раз.

Если вложение завершается ошибкой, можно проверить журнал с именем diagnostic-container-<hashcode> в эфемерном контейнере.

Сведения об операциях плагина можно найти в журналах контейнера pod с именем diag4j-agent-service-<hashcode>.

Следующий шаг

Начало работы с компонентом администратора Spring Boot средства диагностики Java (diag4j) в AKS