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

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

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

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

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

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

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

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

Используйте средство диагностики Java в подключаемом модуле AKS для подключения агента диагностики Java к приложению Java, работающему в контейнере pod в кластере Azure Kubernetes Service (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

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

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

Заметка

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

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

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

Если не удаётся выполнить подключение, проверьте журнал с именем diagnostic-container-<hashcode> в эфемерном контейнере.

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

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

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