Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Для контейнеризированных сервисов есть возможность прокинуть порт для отладки каких-либо проблем, либо снятия heap dump с использованием утилиты visualvm.

Настройка универсальна, и выполняется одинаково для всех контейнеризированных сервисов.

Настройка переменной среды

Для настройки данного функционала необходимо указать в переменных окружения (environment) адрес и порт отладки сервиса в следующем виде:

JDK_JAVA_OPTIONS=-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=<service_port> -Dcom.sun.management.jmxremote.rmi.port=<service_port> -Djava.rmi.server.hostname=<docker_host_ip>
  • service_port - порт отладки сервиса (задается произвольно пользователем, должен отличаться от всех используемых в системе открытых портов)
  • docker_host_ip - адрес хоста с запущенным docker-контейнером

Данную переменную необходимо указывать напрямую в docker-compose.yml файле:

docker-compose.yml
services:
  xxx:
    ports:
      - "9999:9999/tcp" 
    environment:
      - JDK_JAVA_OPTIONS=-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.rmi.port=9999 -Djava.rmi.server.hostname=192.168.1.1

Проброс порта

Также, для работы данный переменной, необходимо открыть порт на хосте, где запущен сервис и пробросить его в контейнер. Настраивается это путем указания выделенного вами порта для отладки в разделе ports. После всех указанных настроек необходимо перезапустить контейнер с помощью команды:

docker-compose down && docker-compose up

Пример

Ниже приведен пример использования данной переменной для сервиса eltex-wifi-cab, запущенного в контейнере:

docker-compose.yml
version: '3'
 
services:
  eltex-wifi-cab:
    container_name: eltex-wifi-cab
    image: ${ELTEX_HUB}/eltex-wifi-cab:${SWLC_VERSION}
    restart: unless-stopped
    ports:
      - "8083:8083/tcp"
      - "9993:9993/tcp"
    hostname: wifi-cab-docker
    env_file: .env
    environment:
      # Настройки таймзоны
      - TZ=${TZ}
      # Настройки логирования
      - LOG_LEVEL=DEBUG
      - CONSOLE_LEVEL=INFO
      - LOGGER_DEFAULT_LEVEL=OFF
      - LOGGER_SCHEDULER_LEVEL=OFF
      - LOGGER_EXPORT_LEVEL=OFF
      - LOGGER_I18N_LEVEL=OFF
      - LOGGER_LICENCE_LEVEL=OFF
      - LOGGER_QUARTZ_LEVEL=OFF
      - LOGGER_MONGODB_DRIVER_LEVEL=INFO
      - LOGGER_NBI_LEVEL=OFF
      - LOGGER_SPRING_LEVEL=OFF
      # Настройки Graylog
      - GELF_LEVEL=${GELF_LEVEL}
      - GELF_HOST=${GELF_HOST}
      - GELF_PORT=${GELF_PORT}
      - JDK_JAVA_OPTIONS=-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.rmi.port=9999 -Djava.rmi.server.hostname=192.168.1.1
    volumes:
      - "/etc/eltex-wifi-cab/system.xml:/etc/eltex-wifi-cab/system.xml:ro"
      - "/etc/eltex-wifi-cab/local_secret:/etc/eltex-wifi-cab/local_secret:ro"
      # Файл лицензии. Закомментируйте строку ниже, если у Вас его нет
      - "./licence.xml:/etc/eltex-wifi-cab/licence.xml:ro"
      # Eltex OUI list
      - /usr/share/oui-base/oui-small.txt:/usr/share/oui-base/oui-small.txt:ro
      # HeapDumpPath
      # execute before: sudo chown -R 100001:100001 ./eltex-wifi-cab/java-heap-dump
      - ./eltex-wifi-cab/java-heap-dump:/var/log/java-heap-dump
      # Logs
#      - ./log4j2-docker.xml:/etc/eltex-wifi-cab/log4j2-docker.xml
      # execute before: sudo mkdir -p /var/log/eltex-wifi-cab && chown -R 100001:100001 /var/log/eltex-wifi-cab
#      - /var/log/eltex-wifi-cab:/var/log/eltex-wifi-cab

Запуск отладки в VisualVM

Процесс установки и первоначальной настройки можно найти на официальном сайте - https://visualvm.github.io/

Для добавления нужного хоста, на котором запущен сервис в контейнере, запустите VisualVM и выберите вкладку Remote. Нажмите ПКМ → Add Remote Host.  Укажите IP-адрес удаленного хоста.

Далее, нажмите на добавленный хост ПКМ → Add JMX Connection, укажите порт для отладки, который установлен на сервисе и нажмите OK.

Для перехода к выбранному сервису необходимо дважды нажать ЛКМ по добавленному JMX Connection



  • Нет меток