Начало работы с агентом диагностики Java
В этой статье описывается, как приступить к работе с агентом диагностики Java. Он также описывает инструмент диагностики Java в плагине AKS для IntelliJ IDEA.
Агент диагностики Java — это агент Java для устранения неполадок процесса Java. Не требуется пересоздавать, повторно развертывать или перезапускать приложение. В настоящее время она поддерживает добавление журналов вокруг функции в классе Java. При вызове функции журнал печатается вместе с вычислением общего времени, потребляемого функцией.
Необходимые условия
diag4j установлен в вашем кластере.
Java LTS версии 11, 17 или 21.
Подключаемый модуль IntelliJ IDEA , установленный локально с помощью параметров>подключаемых модулей>установить подключаемый модуль из диска.
Приложения 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. Затем дождитесь завершения процесса вложения.
Установите активный контейнер Pod
После успешного подключения агента его можно использовать для устранения неполадок.
Возможно, несколько модулей pod ввели агент, поэтому необходимо задать активный модуль pod. В IntelliJ IDEA на вкладке Диагностика щелкните правой кнопкой мыши pod и выберите Установить как активный.
Добавление логирования в функцию класса
Настроенный журнал автоматически удаляется через 30 минут.
С помощью средства можно добавить логирование в функциях класса, но не в интерфейсах, конструкторах и т. д.
Чтобы добавить ведение журнала в функцию, щелкните ее правой кнопкой мыши в редакторе, а затем выберите Java Diagnostic>Add AroundLog, как показано на следующем снимке экрана.
В этом примере после добавления ведения журнала можно вызвать <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