Трейсы¶
Интеграции отправляют трейсы в 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.