Перейти к содержанию

Трейсы

Интеграции отправляют трейсы в Elastic APM по протоколу OTLP. Трейсинг встроен через camel-opentelemetry2 и SDK OpenTelemetry, Java-агент не нужен.

Настройка в чарте

apm:
  enabled: true
  url: "http://<APM Server>:8200/"
  apiKey: "<API key из Kibana>"
  environment: neomsa-esb
  namespace: neomsa_esb

Чарт создаёт секрет neomsa-esb-apm с адресом, ключом и атрибутами. Интеграции читают его через deployment.jkube.yaml.

Параметр Назначение
environment Значение deployment.environment. По нему трейсы фильтруются в Kibana APM (Environment)
namespace Значение data_stream.namespace. Трейсы пишутся в отдельный data stream traces-apm-<namespace>. Нужен APM Server 8.13 или новее. Допустимы строчные буквы, цифры и _

Эти параметры отделяют трейсы NEOMSA ESB от других систем, если APM Server общий.

Настройка интеграции

В шаблоне проекта уже есть всё нужное:

camel.jbang.dependencies=...,camel-opentelemetry2,camel-mdc,mvn:io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.64.0,mvn:io.opentelemetry:opentelemetry-exporter-otlp:1.64.0
camel.opentelemetry2.enabled=true
camel.opentelemetry2.traceHeadersInclusion=true
camel.mdc.enabled=true
camel.mdc.customHeaders=CAMEL_TRACE_ID,CAMEL_SPAN_ID

Версия SDK OpenTelemetry должна соответствовать API OpenTelemetry, который приходит с Camel 4.22.2. Для 4.22.2 это 1.64.0. Со старой версией SDK трейсы не отправляются, а в логе интеграции появляется NoClassDefFoundError: io/opentelemetry/api/internal/InstrumentationUtil.

Имя сервиса в APM совпадает с именем проекта. traceHeadersInclusion переносит trace id и span id в заголовки обмена, оттуда MDC печатает их в лог. По trace id из строки лога можно открыть трассу в APM.