Безвредная интеграция трассировки в Java-приложения

INFO

Автоматически внедряемый OpenTelemetry Java Agent поддерживает версии Java 8+.

Содержание

Обзор функции

Трассировка — это ключевая возможность наблюдаемости в распределённых системах, которая позволяет полностью записывать пути вызовов и данные о производительности запросов внутри системы. В этой статье описывается, как добиться безвредной интеграции трассировки в Java-приложения с помощью автоматического внедрения OpenTelemetry Java Agent.

Сценарии использования

Java-приложения могут быть интегрированы для следующих сценариев:

  • Быстрое добавление возможностей трассировки в Java-приложения
  • Избежание изменений исходного кода приложения
  • Развёртывание сервисов с помощью Kubernetes
  • Визуализация взаимосвязей вызовов между сервисами и анализ узких мест производительности

Предварительные требования

Перед использованием данной функции убедитесь, что:

  • Целевой сервис развернут на Alauda Container Platform
  • Сервис использует JDK версии Java 8 или выше
  • У вас есть права на редактирование Deployment в целевом namespace
  • Платформа завершила развёртывание трассировки

Шаги по эксплуатации

Для Java-приложения, которое необходимо интегрировать в трассировку Alauda Container Platform, требуются следующие адаптации:

  • Настроить аннотации автоматического внедрения для Java Deployment.
  • Установить переменную окружения SERVICE_NAME.
  • Установить переменную окружения SERVICE_NAMESPACE.

Пример адаптации Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-java-deploy
spec:
  template:
    metadata:
      annotations:
        instrumentation.opentelemetry.io/inject-java: cpaas-system/acp-common-java
      labels:
        app.kubernetes.io/name: my-java-app
    spec:
      containers:
      - env:
        - name: SERVICE_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.labels['app.kubernetes.io/name']
        - name: SERVICE_NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
  1. Выберите cpaas-system/acp-common-java Instrumentation в качестве конфигурации для внедрения Java Agent.
  2. Настройте переменную окружения SERVICE_NAME, которая может быть связана через метки или иметь фиксированное значение.
  3. Настройте переменную окружения SERVICE_NAMESPACE, значение которой — metadata.namespace.

Результаты эксплуатации

После адаптации Java-приложения:

  • Если в новом запущенном pod Java-приложения присутствует init-контейнер opentelemetry-auto-instrumentation-java, это означает, что внедрение прошло успешно.
  • Отправьте тестовые запросы в Java-приложение.
  • В представлении Container Platform выберите проект, кластер и namespace, в котором находится Java-приложение.
  • Перейдите на страницу Observability -> Tracing, чтобы просмотреть данные трассировки и диаграмму водопада временной шкалы Java-приложения.