• Русский
  • Беспрепятственная интеграция трассировки в 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 для внедрения Java Agent.
    2. Настройте переменную окружения SERVICE_NAME, которая может быть связана через метки или иметь фиксированное значение.
    3. Настройте переменную окружения SERVICE_NAMESPACE, значение которой берётся из metadata.namespace.

    Результаты работы

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

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