Декларативна конфігурація Java-агента
Декларативна конфігурація використовує файл YAML замість змінних середовища або системних властивостей.
Цей підхід корисний, коли:
- У вас є багато параметрів конфігурації для налаштування
- Ви хочете використовувати параметри конфігурації, які недоступні як змінні середовища або системні властивості
Так само, як і змінні середовища, синтаксис конфігурації є незалежним від мови і працює для всіх OpenTelemetry Java SDK, які підтримують декларативну конфігурацію, включаючи OpenTelemetry Java agent.
Декларативна конфігурація є експериментальною.
Підтримувані версії
Декларативна конфігурація підтримується в OpenTelemetry Java agent версії 2.20.0 і пізніших.
Початок роботи
- Збережіть файл конфігурації нижче як
otel-config.yaml. - Додайте наступне до аргументів запуску JVM:
-Dotel.experimental.config.file=/path/to/otel-config.yaml
file_format: '1.0-rc.1'
resource:
attributes_list: ${OTEL_RESOURCE_ATTRIBUTES}
detection/development:
detectors:
- service: # додасть "service.instance.id" та "service.name" з OTEL_SERVICE_NAME
propagator:
composite:
- tracecontext:
- baggage:
tracer_provider:
processors:
- batch:
exporter:
otlp_http:
endpoint: ${OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:-http://localhost:4318/v1/traces}
meter_provider:
readers:
- periodic:
exporter:
otlp_http:
endpoint: ${OTEL_EXPORTER_OTLP_METRICS_ENDPOINT:-http://localhost:4318/v1/metrics}
logger_provider:
processors:
- batch:
exporter:
otlp_http:
endpoint: ${OTEL_EXPORTER_OTLP_LOGS_ENDPOINT:-http://localhost:4318/v1/logs}
Більш загальний посібник з початку роботи з декларативною конфігурацією дивись в документації Декларативне конфігурування SDK.
Ця сторінка присвячена особливостям роботи Java-агента OpenTelemetry.
Зіставлення параметрів конфігурації
Якщо ви хочете перетворити наявні змінні середовища або конфігурацію властивостей системи на декларативну конфігурацію, використовуйте такі правила:
- Якщо параметр конфігурації починається з
otel.javaagent.(наприклад,otel.javaagent.logging), то, найімовірніше, це властивість, яку можна встановити лише за допомогою змінної середовища або системної властивості (докладнішу інформацію дивіться у розділі Параметри, доступні лише для змінних середовища та системних властивостей нижче). В іншому випадку видаліть префіксotel.javaagent.і розмістіть його в розділіagentнижче. - Якщо опція конфігурації починається з
otel.instrumentation.(наприклад,otel.instrumentation.spring-batch.experimental.chunk.new-trace), видаліть префіксotel.instrumentation.і розмістіть її в розділіinstrumentationнижче. - В іншому випадку опція, швидше за все, належить до конфігурації SDK. Знайдіть відповідний розділ у конфігурації міграції. Якщо у вас є системна властивість, така як
otel.bsp.schedule.delay, знайдіть відповідну змінну середовищаOTEL_BSP_SCHEDULE_DELAYу конфігурації міграції. - Використовуйте
.для створення рівня відступу. - Перетворіть
-на_. - Використовуйте типи YAML boolean та integer, де це доречно (наприклад,
trueзамість"true",5000замість"5000"). - Опції, що мають спеціальне зіставлення, наведене нижче.
instrumentation/development:
general:
peer:
service_mapping: # було "otel.instrumentation.common.peer-service-mapping"
- peer: 1.2.3.4
service: FooService
- peer: 2.3.4.5
service: BarService
http:
client:
request_captured_headers: # було otel.instrumentation.http.client.capture-request-headers
- Content-Type
- Accept
response_captured_headers: # було otel.instrumentation.http.client.capture-response-headers
- Content-Type
- Content-Encoding
server:
request_captured_headers: # було otel.instrumentation.http.server.capture-request-headers
- Content-Type
- Accept
response_captured_headers: # було otel.instrumentation.http.server.capture-response-headers
- Content-Type
- Content-Encoding
java:
agent:
# було otel.instrumentation.common.default-enabled
# instrumentation_mode: none # було false
instrumentation_mode: default # було true
spring_batch:
experimental:
chunk:
new_trace: true
Тільки параметри змінних середовища та властивостей системи
Наступні параметри конфігурації підтримуються декларативною конфігурацією, але доступні тільки через змінні середовища або властивості системи:
otel.javaagent.configuration-file(але це не повинно бути необхідним при декларативній конфігурації)otel.javaagent.debugotel.javaagent.enabledotel.javaagent.experimental.field-injection.enabledotel.javaagent.experimental.security-manager-support.enabledotel.javaagent.extensionsotel.javaagent.logging.application.logs-buffer-max-recordsotel.javaagent.logging
Ці опції потрібні під час запуску агента, перед читанням файлу декларативної конфігурації.
Формат тривалості
- Декларативна конфігурація підтримує тільки тривалість у мілісекундах (наприклад,
5000для 5 секунд). - Ви отримаєте помилку, якщо використаєте
OTEL_BSP_SCHEDULE_DELAY=5s(дійсне для змінних середовища, але не для декларативної конфігурації).
Приклад:
tracer_provider:
processors:
- batch:
schedule_delay: ${OTEL_BSP_SCHEDULE_DELAY:-5000}
Відмінності в поведінці
- Атрибут ресурсу
telemetry.distro.name(який стандартно додається агентом Java) має значенняopentelemetry-javaagentзамістьopentelemetry-java-instrumentation(буде знову узгоджено з версією 3.0).
Функції, які ще не підтримуються
Функції, які все ще потребують змінних середовища або властивостей системи
Деякі функції, що підтримуються змінними середовища та властивостями системи, ще не підтримуються декларативною конфігурацією:
Наступні налаштування все ще потрібно встановлювати за допомогою змінних середовища або властивостей системи:
otel.experimental.javascript-snippetotel.instrumentation.aws-sdk.experimental-record-individual-http-errorotel.instrumentation.aws-sdk.experimental-span-attributesotel.instrumentation.aws-sdk.experimental-use-propagator-for-messagingotel.instrumentation.common.db-statement-sanitizer.enabledotel.instrumentation.common.logging.span-idotel.instrumentation.common.logging.trace-flagsotel.instrumentation.common.logging.trace-idotel.instrumentation.experimental.span-suppression-strategyotel.instrumentation.genai.capture-message-contentotel.instrumentation.jdbc.experimental.capture-query-parametersotel.instrumentation.jdbc.experimental.transaction.enabledotel.instrumentation.log4j-context-data.add-baggageotel.instrumentation.messaging.experimental.capture-headersotel.instrumentation.messaging.experimental.receive-telemetry.enabledotel.javaagent.experimental.thread-propagation-debugger.enabledotel.semconv-stability.opt-in
Функції, які ще не підтримуються
Функції Java-агента, які ще не підтримуються декларативною конфігурацією:
otel.instrumentation.common.mdc.resource-attributesotel.javaagent.add-thread-details
Функції Contrib, які ще не підтримуються декларативною конфігурацією:
Обмеження Spring Boot Starter
Нарешті, Spring Boot starter ще не підтримує декларативну конфігурацію:
- проте ви вже можете використовувати
application.yamlдля конфігурації OpenTelemetry Spring Boot starter.
Розширення API
Розширення використовують новий декларативний API конфігурації.
- Розширення, що використовують
AutoConfigurationCustomizerProvider, повинні бути перенесені на новий APIDeclarativeConfigurationCustomizerProvider. Перевірте, як старий AgentTracerProviderConfigurer відповідає новому SpanLoggingCustomizerProvider. - Компоненти, такі як експортери відрізків, тепер повинні використовувати API
ComponentProvider. Як приклад, ознайомтеся з Baggage Processor, який підтримує як старий, так і новий API.
Відгук
Чи це було корисним?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!