Безвредная интеграция трассировки в Java-приложения
Содержание
Обзор функции
Трассировка — это ключевая возможность наблюдаемости в распределённых системах, которая позволяет полностью записывать пути вызовов и данные о производительности запросов внутри системы. В этой статье описывается, как добиться безвредной интеграции трассировки в 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
- Выберите
cpaas-system/acp-common-java
Instrumentation в качестве конфигурации для внедрения Java Agent.
- Настройте переменную окружения
SERVICE_NAME
, которая может быть связана через метки или иметь фиксированное значение.
- Настройте переменную окружения
SERVICE_NAMESPACE
, значение которой — metadata.namespace
.
Результаты эксплуатации
После адаптации Java-приложения:
- Если в новом запущенном pod Java-приложения присутствует init-контейнер
opentelemetry-auto-instrumentation-java
, это означает, что внедрение прошло успешно.
- Отправьте тестовые запросы в Java-приложение.
- В представлении Container Platform выберите проект, кластер и namespace, в котором находится Java-приложение.
- Перейдите на страницу Observability -> Tracing, чтобы просмотреть данные трассировки и диаграмму водопада временной шкалы Java-приложения.