Это решение проведет вас через процесс модификации неконтейнеризованных Java-сервисов, развернутых на виртуальных или физических машинах, чтобы видеть их цепочки вызовов с контейнеризованными сервисами на платформе. Обратите внимание, что это решение предоставляет только функциональность трассируемости и не поддерживает просмотр логов.
kubectl
.Сначала вам необходимо скопировать jar-файл Java-агента OpenTelemetry в директорию ./agent
на узле управления кластера, где был создан сервисный Mesh.
Выберите и выполните соответствующий скрипт в зависимости от компонентной базы кластера
Компонентная база Containerd
Установите инструмент nerdctl
на узле управления. Скачайте его, извлеките пакет, предоставьте разрешение на выполнение и скопируйте его в директорию /usr/local/bin
:
Войдите в репозиторий образов, используемый кластером, заменив <image_registry_address>
на фактический адрес:
Запустите следующий скрипт, чтобы скопировать jar-файл Java-агента из образа в локальную систему:
Компонентная база Docker
Войдите в репозиторий образов, используемый кластером:
Запустите следующий скрипт, чтобы скопировать jar-файл Java-агента из образа в локальную систему:
Скопируйте opentelemetry-javaagent-ext.jar
, полученный на шаге 1, в директорию ./agent
на всех узлах, где работают Java-сервисы.
Настройте следующие переменные окружения на всех узлах Java-сервиса:
Переменная окружения | Описание |
---|---|
OTEL_PROPAGATORS | Формат распространения для данных трассировки. Доступные значения: b3 , b3multi . Несколько значений можно разделять запятыми. |
OTEL_TRACES_EXPORTER | Экспортер данных трассировки. Значение должно быть otlp . |
OTEL_EXPORTER_OTLP_ENDPOINT | Адрес отправки OTLP-данных в формате http://<ASM_OTEL_COLLECTOR_IP>:4317 , где ASM_OTEL_COLLECTOR_IP - это IP-адрес, доступный компонентам сервисного Mesh. |
OTEL_RESOURCE_ATTRIBUTES | Пользовательские теги. Обязательные поля: service.name , vm.name . Например: service.name=myservice.ns,vm.name=vm-test . vm.name - это имя виртуальной машины, на которой размещен сервис, а service.name обозначает имя, отображаемое в цепочке вызовов. Вы можете добавить другие пользовательские теги, рекомендуется использовать префикс vm для идентификации VM-сервисов. Несколько пар ключ-значение можно разделять запятыми. |
В скрипт запуска Java-сервиса добавьте следующий параметр:
В пространстве имен, где вы хотите включить функциональность трассируемости, создайте ConfigMap для хранения соответствия между адресами и именами неконтейнеризованных Java-сервисов. Пример:
host
, port
и serviceName
должны соответствовать адресу доступа, порту и имени сервиса неконтейнеризованных сервисов. serviceName
должен совпадать с service.name
, определенным в переменной окружения OTEL_RESOURCE_ATTRIBUTES
.После применения вышеуказанных конфигураций перезапустите Java-сервис, чтобы изменения вступили в силу.