• Русский
  • Безвредная интеграция трассировки в 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-приложения.