Отладка прикладного решения#

Предупреждение

Работает только на Java 21.

Иногда программную ошибку не получается воспроизвести на тестовых стендах. В таких случаях, gs-ctk позволяет создать среду для отладки прикладного решения в условиях, максимально приближенных к тем, в которых работает основной кластер.

Для этого создается под, в котором стартует тот же сервер приложений, что и обычно, но с включенной подсистемой отладки Java. В поде также есть дополнительный сопровождающий контейнер со средой OpenVSCode Server, подключенной к данной подсистеме. Обычные пользователи не могут подключиться к данному поду без особой ссылки.

Требования#

  • gs-ctk версии >=5.1.4 (проверить командой: cat ~/nscli/version.txt)

  • Минимальные ресурсы: 12 ГБ ОЗУ, 4 ядра CPU

  • Настроенная работающая группа ресурсов с включенными книгами ресурсов global_server_share и haproxy

  • Наличие в комплекте приложений архива appsrc.zip, содержащего исходные файлы проекта

Инструкция по отладке#

Запуск отладчика#

  1. Администратор включает отладку при помощи команды nscli:

    ~/nscli $ ./cloud_debugger.sh --namespace gs-ctk start
    
    Укажите группу ресурсов:gs-cluster-1
    Выберите книгу ресурсов, которую необходимо взять за основу облачного отладчика:global-server-share
    Укажите название для отладчика:debugger-5edafd63
    Точка во времени в формате эпохи Unix, до которой будет доступен отладчик (или укажите от текущего момента указав в качестве значения
    "+N", где N - время в секундах):+3600
    Облачный отладчик будет доступен до 03:14:08 19.01.2038
    Ожидаем готовности облачного отладчика...
    Ожидаем готовности облачного отладчика...
    Ожидаем готовности облачного отладчика...
    Облачный отладчик готов к использованию!
    
    Для доступа к отладчику перейдите по ссылке:
    (http://example.ru)/debugger/open/gs-cluster-1-debugger-1b0e4084?debugger%2Fvscode%2F%3Ftkn%3Dba0211cf-cd8a-4ba5-b2a2-a5d1791e587b%26folder%3D%2Fuser%2Fapplication
    
    Чтобы подключиться к серверу приложений, связанному с отладчиком, перейдите по ссылке:
    (http://example.ru)/debugger/open/gs-cluster-1-debugger-1b0e4084?login%2Flogin.html
    

    Подстроку (https://example.ru) надо подменить на имя хоста, к которому обращается пользователь для подключения к HAProxy. Например:

    https://globalerp.mycompany.ru/debugger/open/gs-cluster-1-debugger-1b0e4084?debugger%2Fvscode%2F%3Ftkn%3Dba0211cf-cd8a-4ba5-b2a2-a5d1791e587b%26folder%3D%2Fuser%2Fapplication
    

Управление отладчиками#

Для просмотра списка активных отладчиков:

./cloud_debugger.sh --namespace gs-ctk list

Для удаления отладчика:

./cloud_debugger.sh delete --namespace gs-ctk --group my-group --book debugger-mydebugger

Подключение к отладчику#

  1. Администратор передает ссылки разработчикам (или другим лицам, проводящим отладку).

  2. Разработчик переходит в отладчик и на сервер приложений по ссылкам.

    Важно: Используйте HTTPS для подключения. При проблемах с аутентификацией (циклическая переадресация) очистите cookies браузера.

    Внешний вид облачного отладчика

  3. Разработчик подтверждает, что он находится в доверенном каталоге /user/application, и переходит во вкладку Metals на боковой панеле.

  4. В течении 30 секунд должна начаться индексация проекта. Дождитесь завершения. После этого в верхней части вкладки Metals появится список используемых модулей и библиотек.

    Дождитесь завершения индексации

    Если индексация не началась, или после ее завершения модули не появились, нажмите «Import build» в секции «Build Commands» вкладки Metals.

    Библиотеки и модули успешно подгрузились

  5. Разработчик открывает нужные модули или библиотеки, устанавливает точки остановы, кликая слева от номера нужной строки.

  6. Разработчик переходит на вкладку Run and Debug боковой панели, нажимает кнопку «Start Debugging».

    Кнопка запуска отладки

Отладчик включен и подключен к серверу приложений, интерфейс которого доступен через вторую ссылку. Лог сервера приложений доступен по адресу /user/application/globalserver.log.

Устранение проблем#

Проблема с аутентификацией#

Если после успешной авторизации происходит переадресация на страницу входа:

  • Очистите cookies браузера для домена отладчика

  • Используйте для подключения только протокол HTTPS

Безопасность#

В ссылку для отладчика вписан токен для подключения, который используется для авторизации в OpenVSCode Server. Следовательно, без этой ссылки подключиться к отладчику невозможно.

В будущих версиях, способ авторизации может измениться.

OpenVSCode Server работает в отдельном контейнере от имени непривилегированного пользователя, не имеет прямого доступа к секретам и файловым системам других контейнеров.

Доступ к логам и подсистеме отладки предоставляет пользователю OpenVSCode Server широкие возможности по взаимодействию с системой. В будущем они будут ограничены специальным прокси-сервером протокола отладки.