Налаштування SDK

SDK є вбудованою референсною реалізацією API, яка обробляє та експортує телеметрію, створену викликами API інструментування. Налаштування SDK для належної обробки та експорту є важливим кроком для інтеграції OpenTelemetry в застосунок.

Усі компоненти SDK мають програмні інтерфейси налаштування. Це найгнучкіший і найвиразніший спосіб налаштування SDK. Однак зміна налаштувань вимагає коригування коду та перекомпіляції застосунку, і немає міжмовної сумісності, оскільки API написано на Java.

Модуль автоконфігурації SDK без коду налаштовує компоненти SDK через системні властивості або змінні середовища з різними точками розширення для випадків, коли властивостей недостатньо.

Програмне налаштування

Інтерфейс програмного налаштування — це набір API для створення компонентів SDK. Усі компоненти SDK мають програмний інтерфейс налаштування, і всі інші механізми налаштування побудовані на основі цього API. Наприклад, інтерфейс налаштування змінних середовища та системних властивостей інтерпретує відомі змінні середовища та системні властивості в серію викликів до програмного інтерфейсу налаштування.

Хоча інші механізми налаштування пропонують більше зручності, жоден з них не пропонує такої гнучкості, як написання коду, що виражає точні налаштування. Коли певна можливість не підтримується механізмом налаштування вищого рівня, у вас може не залишитися іншого вибору, окрім як використовувати програмне налаштування.

Розділи компонентів SDK демонструють простий програмний інтерфейс налаштування для ключових областей SDK, з якими стикаються користувачі. Зверніться до коду для повної довідки по API.

Автоконфігурація SDK без коду

Модуль автоконфігурації (артефакт io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.59.0) є інтерфейсом налаштування, побудованим на основі інтерфейсу програмного налаштування, який налаштовує компоненти SDK без коду. Існує два різних робочих процеси автоконфігурації:

  • Змінні середовища та системні властивості інтерпретують змінні середовища та системні властивості для створення компонентів SDK, включаючи різні точки налаштування для накладання програмного налаштування.
  • Декларативне налаштування (наразі в розробці) інтерпретує модель налаштування для створення компонентів SDK, яка зазвичай кодується у YAML файлі налаштування.

Автоматично налаштуйте компоненти SDK за допомогою автоконфігурації наступним чином:

package otel;

import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;

public class AutoConfiguredSdk {
  public static OpenTelemetrySdk autoconfiguredSdk() {
    return AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
  }
}

Змінні середовища та системні властивості

Модуль автоконфігурації підтримує властивості, перелічені в специфікації налаштування змінних середовища, з періодичними експериментальними та специфічними для Java доповненнями.

Наступні властивості перелічені як системні властивості, але також можуть бути встановлені за допомогою змінних середовища. Виконайте наступні кроки, щоб перетворити системну властивість на змінну середовища:

  • Перетворіть імʼя на великі літери.
  • Замініть усі символи . та - на _.

Наприклад, системна властивість otel.sdk.disabled еквівалентна змінній середовища OTEL_SDK_DISABLED.

Якщо властивість визначена як системна властивість і змінна середовища, пріоритет має системна властивість.

Властивості: загальні

Властивості для відключення SDK:

Системна властивістьОписСтандартно
otel.sdk.disabledЯкщо true, відключити OpenTelemetry SDK. [1]false

[1]: Якщо відключено, AutoConfiguredOpenTelemetrySdk#getOpenTelemetrySdk() повертає мінімально налаштований екземпляр (наприклад, OpenTelemetrySdk.builder().build()).

Властивості для обмежень атрибутів (див. обмеження відрізків, обмеження логів):

Системна властивістьОписСтандартно
otel.attribute.value.length.limitМаксимальна довжина значень атрибутів. Застосовується до відрізків та логів. Перевизначається otel.span.attribute.value.length.limit, otel.span.attribute.count.limit.Без обмежень
otel.attribute.count.limitМаксимальна кількість атрибутів. Застосовується до відрізків, подій відрізків, посилань відрізків та логів.128

Властивості для поширення контексту:

Системна властивістьОписСтандартно
otel.propagatorsСписок поширювачів через кому. Відомі значення включають tracecontext, baggage, b3, b3multi, jaeger, ottrace, xray, xray-lambda. [1]tracecontext,baggage (W3C)

[1]: Відомі поширювачі та артефакти (див. text map propagator для координат артефакту):

  • tracecontext налаштовує W3CTraceContextPropagator.
  • baggage налаштовує W3CBaggagePropagator.
  • b3, b3multi налаштовує B3Propagator.
  • jaeger налаштовує JaegerPropagator.
  • ottrace налаштовує OtTracePropagator.
  • xray налаштовує AwsXrayPropagator.
  • xray-lambda налаштовує AwsXrayLambdaPropagator.

Властивості: ресурс

Властивості для налаштування ресурсу:

Системна властивістьОписСтандартно
otel.service.nameВкажіть логічне імʼя сервісу. Має пріоритет над service.name, визначеним за допомогою otel.resource.attributes.unknown_service:java
otel.resource.attributesВкажіть атрибути ресурсу у наступному форматі: key1=val1,key2=val2,key3=val3.
otel.resource.disabled-keysВкажіть ключі атрибутів ресурсу для фільтрації.
otel.java.enabled.resource.providersСписок класів ResourceProvider через кому, які потрібно увімкнути. [1] Якщо не встановлено, увімкнено всі провайдери ресурсів.
otel.java.disabled.resource.providersСписок класів ResourceProvider через кому, які потрібно відключити. [1]

[1]: Наприклад, щоб відключити провайдера ресурсу ОС, встановіть -Dotel.java.disabled.resource.providers=io.opentelemetry.instrumentation.resources.OsResourceProvider. Дивіться ResourceProvider для координат артефакту провайдера ресурсів.

ПРИМІТКА: Системні властивості/змінні оточення otel.service.name та otel.resource.attributes інтерпретуються у постачальнику ресурсів io.opentelemetry.sdk.autoconfigure.EnvironmentResourceProvider. Якщо ви вирішили вказати постачальників ресурсів за допомогою otel.java.enabled.resource-providers, ви, ймовірно, захочете включити цей параметр, щоб уникнути несподіванок. Координати артефакту постачальника ресурсів наведено у ResourceProvider.

Властивості: трейсинг

Властивості для пакетного процесора відрізків, повʼязаного з експортерами, зазначеними через otel.traces.exporter:

Системна властивістьОписСтандартно
otel.bsp.schedule.delayІнтервал, у мілісекундах, між двома послідовними експортами.5000
otel.bsp.max.queue.sizeМаксимальна кількість відрізків, які можна поставити в чергу перед надсиланням пакетів.2048
otel.bsp.max.export.batch.sizeМаксимальна кількість відрізків для експорту в одній партії.512
otel.bsp.export.timeoutМаксимальний дозволений час, у мілісекундах, для експорту даних.30000

Властивості для семплера:

Системна властивістьОписСтандартно
otel.traces.samplerСемплер, який потрібно використовувати. Відомі значення включають always_on, always_off, traceidratio, parentbased_always_on, parentbased_always_off, parentbased_traceidratio, jaeger_remote. [1]parentbased_always_on
otel.traces.sampler.argАргумент для налаштованого трейсера, якщо підтримується, наприклад, коефіцієнт.

[1]: Відомі семплери та артефакти (див. sampler для координат артефакту):

  • always_on налаштовує AlwaysOnSampler.
  • always_off налаштовує AlwaysOffSampler.
  • traceidratio налаштовує TraceIdRatioBased. otel.traces.sampler.arg встановлює коефіцієнт.
  • parentbased_always_on налаштовує ParentBased(root=AlwaysOnSampler).
  • parentbased_always_off налаштовує ParentBased(root=AlwaysOffSampler).
  • parentbased_traceidratio налаштовує ParentBased(root=TraceIdRatioBased). otel.traces.sampler.arg встановлює коефіцієнт.
  • jaeger_remote налаштовує JaegerRemoteSampler. otel.traces.sampler.arg є списком аргументів через кому, як описано в специфікації.

Властивості для обмежень відрізків:

Системна властивістьОписСтандартно
otel.span.attribute.value.length.limitМаксимальна довжина значень атрибутів відрізків. Має пріоритет над otel.attribute.value.length.limit.Без обмежень
otel.span.attribute.count.limitМаксимальна кількість атрибутів на відрізок. Має пріоритет над otel.attribute.count.limit.128
otel.span.event.count.limitМаксимальна кількість подій на відрізок.128
otel.span.link.count.limitМаксимальна кількість посилань на відрізок.128

Властивості: метрики

Властивості для періодичного читача метрик:

Системна властивістьОписСтандартно
otel.metric.export.intervalІнтервал, у мілісекундах, між початком двох спроб експорту.60000

Властивості для екземплярів:

Системна властивістьОписСтандартно
otel.metrics.exemplar.filterФільтр для вибірки екземплярів. Може бути ALWAYS_OFF, ALWAYS_ON або TRACE_BASED.TRACE_BASED

Властивості для обмежень кардинальності:

Системна властивістьОписСтандартно
otel.java.metrics.cardinality.limitЯкщо встановлено, налаштуйте обмеження кардинальності. Значення визначає максимальну кількість різних точок на метрику.2000

Властивості: логи

Властивості для процесора записів логів, повʼязаного з експортерами через otel.logs.exporter:

Системна властивістьОписСтандартно
otel.blrp.schedule.delayІнтервал, у мілісекундах, між двома послідовними експортами.1000
otel.blrp.max.queue.sizeМаксимальна кількість записів журналу, яка може бути поставлена в чергу перед надсиланням.2048
otel.blrp.max.export.batch.sizeМаксимальна кількість записів журналу для експорту в одному пакеті.512
otel.blrp.export.timeoutМаксимальний дозволений час, у мілісекундах, для експорту даних.30000

Властивості: експортери

Властивості для налаштування експортерів:

Системна властивістьПризначенняСтандартно
otel.traces.exporterСписок експортерів відрізків через кому. Відомі значення включають otlp, zipkin, console, logging-otlp, none. [1]otlp
otel.metrics.exporterСписок експортерів метрик через кому. Відомі значення включають otlp, prometheus, none. [1]otlp
otel.logs.exporterСписок експортерів записів логів через кому. Відомі значення включають otlp, console, logging-otlp, none. [1]otlp
otel.java.exporter.memory_modeЯкщо reusable_data, увімкніть режим повторного використання памʼяті (на експортерах, які його підтримують) для зменшення виділень. Відомі значення включають reusable_data, immutable_data. [2]reusable_data

[1]: Відомі експортери та артефакти (див. span exporter, metric exporter, log exporter для координат артефакту експортера):

  • otlp налаштовує OtlpHttp{Signal}Exporter / OtlpGrpc{Signal}Exporter.
  • zipkin налаштовує ZipkinSpanExporter.
  • console налаштовує LoggingSpanExporter, LoggingMetricExporter, SystemOutLogRecordExporter.
  • logging-otlp налаштовує OtlpJsonLogging{Signal}Exporter.
  • experimental-otlp/stdout налаштовує OtlpStdout{Signal}Exporter (ця опція є експериментальною і може бути змінена або видалена).

[2]: Експортери, які дотримуються otel.java.exporter.memory_mode=reusable_data включають OtlpGrpc{Signal}Exporter, OtlpHttp{Signal}Exporter, OtlpStdout{Signal}Exporter, та PrometheusHttpServer.

Властивості для otlp експортерів відрізків, метрик та логів:

Системна властивістьОписСтандартно
otel.{signal}.exporter=otlpВиберіть експортер OpenTelemetry для {signal}.
otel.exporter.otlp.protocolТранспортний протокол для використання в запитах OTLP трасування, метрик та логів. Опції включають grpc та http/protobuf.grpc [1]
otel.exporter.otlp.{signal}.protocolТранспортний протокол для використання в запитах OTLP {signal}. Опції включають grpc та http/protobuf.grpc [1]
otel.exporter.otlp.endpointТочка доступу для надсилання всіх OTLP трасувань, метрик та логів. Часто це адреса OpenTelemetry Collector. Повинна бути URL з схемою http або https в залежності від використання TLS.http://localhost:4317 коли протокол grpc, та http://localhost:4318 коли протокол http/protobuf.
otel.exporter.otlp.{signal}.endpointТочка доступу для надсилання OTLP {signal}. Часто це адреса OpenTelemetry Collector. Повинна бути URL з схемою http або https в залежності від використання TLS. Якщо протокол http/protobuf, версія та сигнал повинні бути додані до шляху (наприклад, v1/traces, v1/metrics, або v1/logs)http://localhost:4317 коли протокол grpc, та http://localhost:4318/v1/{signal} коли протокол http/protobuf.
otel.exporter.otlp.certificateШлях до файлу, що містить довірені сертифікати для використання при перевірці TLS сертифікатів сервера OTLP трасування, метрик або логів. Файл повинен містити один або більше X.509 сертифікатів у форматі PEM.Використовуються довірені кореневі сертифікати хост-платформи.
otel.exporter.otlp.{signal}.certificateШлях до файлу, що містить довірені сертифікати для використання при перевірці TLS сертифікатів сервера OTLP {signal}. Файл повинен містити один або більше X.509 сертифікатів у форматі PEM.Використовуються довірені кореневі сертифікати хост-платформи.
otel.exporter.otlp.client.keyШлях до файлу, що містить приватний клієнтський ключ для використання при перевірці TLS сертифікатів клієнта OTLP трасування, метрик або логів. Файл повинен містити один приватний ключ у форматі PKCS8 PEM.Не використовується жоден файл клієнтського ключа.
otel.exporter.otlp.{signal}.client.keyШлях до файлу, що містить приватний клієнтський ключ для використання при перевірці TLS сертифікатів клієнта OTLP {signal}. Файл повинен містити один приватний ключ у форматі PKCS8 PEM.Не використовується жоден файл клієнтського ключа.
otel.exporter.otlp.client.certificateШлях до файлу, що містить довірені сертифікати для використання при перевірці TLS сертифікатів клієнта OTLP трасування, метрик або логів. Файл повинен містити один або більше X.509 сертифікатів у форматі PEM.Не використовується жоден файл ланцюга.
otel.exporter.otlp.{signal}.client.certificateШлях до файлу, що містить довірені сертифікати для використання при перевірці TLS сертифікатів клієнта OTLP {signal}. Файл повинен містити один або більше X.509 сертифікатів у форматі PEM.Не використовується жоден файл ланцюга.
otel.exporter.otlp.headersПари ключ-значення, розділені комами, для передачі як заголовки запитів на запити OTLP трасування, метрик та логів.
otel.exporter.otlp.{signal}.headersПари ключ-значення, розділені комами, для передачі як заголовки запитів на запити OTLP {signal}.
otel.exporter.otlp.compressionТип стиснення для використання в запитах OTLP трасування, метрик та логів. Опції включають gzip.Стиснення не буде використовуватися.
otel.exporter.otlp.{signal}.compressionТип стиснення для використання в запитах OTLP {signal}. Опції включають gzip.Стиснення не буде використовуватися.
otel.exporter.otlp.timeoutМаксимальний час очікування, у мілісекундах, дозволений для надсилання кожного пакету OTLP трасування, метрик та логів.10000
otel.exporter.otlp.{signal}.timeoutМаксимальний час очікування, у мілісекундах, дозволений для надсилання кожного пакету OTLP {signal}.10000
otel.exporter.otlp.metrics.temporality.preferenceБажана вихідна агрегаційна темпоральність. Опції включають DELTA, LOWMEMORY, та CUMULATIVE. Якщо CUMULATIVE, всі інструменти матимуть кумулятивну темпоральність. Якщо DELTA, лічильники (синхронні та асинхронні) та гістограми будуть дельтовими, лічильники вгору-вниз (синхронні та асинхронні) будуть кумулятивними. Якщо LOWMEMORY, синхронні лічильники та гістограми будуть дельтовими, асинхронні лічильники та лічильники вгору-вниз (синхронні та асинхронні) будуть кумулятивними.CUMULATIVE
otel.exporter.otlp.metrics.default.histogram.aggregationБажана стандартна агрегація гістограм. Опції включають BASE2_EXPONENTIAL_BUCKET_HISTOGRAM та EXPLICIT_BUCKET_HISTOGRAM.EXPLICIT_BUCKET_HISTOGRAM
otel.java.exporter.otlp.retry.disabledЯкщо false, повторіть спробу при виникненні тимчасових помилок. [2]false

ПРИМІТКА: Текстовий заповнювач {signal} відноситься до підтримуваного OpenTelemetry Signal. Дійсні значення включають traces, metrics, та logs. Конфігурації, специфічні для сигналу, мають пріоритет над загальними версіями. Наприклад, якщо ви встановите як otel.exporter.otlp.endpoint, так і otel.exporter.otlp.traces.endpoint, останній матиме пріоритет.

[1]: OpenTelemetry Java агент 2.x та OpenTelemetry Spring Boot starter використовують стандартно http/protobuf.

[2]: OTLP вимагає щоб тимчасові помилки оброблялись зі стратегією повторної спроби. Коли повторна спроба увімкнена, повторювані коди стану gRPC повторюються використовуючи алгоритм експоненційного зворотного відліку з джитером. Конкретні опції RetryPolicy можна налаштувати лише через програмну налаштування.

Властивості для zipkin експортера відрізків:

Системна властивістьОписСтандартно
otel.traces.exporter=zipkinВиберіть експортер Zipkin
otel.exporter.zipkin.endpointТочка доступу Zipkin для підключення. Підтримується лише HTTP.http://localhost:9411/api/v2/spans

Властивості для prometheus експортера метрик.

Системна властивістьОписСтандартно
otel.metrics.exporter=prometheusВиберіть експортер Prometheus
otel.exporter.prometheus.portЛокальний порт, що використовується для привʼязки сервера метрик Prometheus.9464
otel.exporter.prometheus.hostЛокальна адреса, що використовується для привʼязки сервера метрик Prometheus.0.0.0.0

Програмне налаштування

Програмне налаштування надає хуки для доповнення підтримуваних властивостей з програмним налаштуванням.

Якщо ви використовуєте Spring starter, дивіться також spring starter програмне налаштування.

package otel;

import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
import java.util.Collections;

public class CustomizedAutoConfiguredSdk {
  public static OpenTelemetrySdk autoconfiguredSdk() {
    return AutoConfiguredOpenTelemetrySdk.builder()
        // Опціонально налаштуйте TextMapPropagator.
        .addPropagatorCustomizer((textMapPropagator, configProperties) -> textMapPropagator)
        // Опціонально налаштуйте Resource.
        .addResourceCustomizer((resource, configProperties) -> resource)
        // Опціонально налаштуйте Sampler.
        .addSamplerCustomizer((sampler, configProperties) -> sampler)
        // Опціонально налаштуйте SpanExporter.
        .addSpanExporterCustomizer((spanExporter, configProperties) -> spanExporter)
        // Опціонально налаштуйте SpanProcessor.
        .addSpanProcessorCustomizer((spanProcessor, configProperties) -> spanProcessor)
        // Опціонально надайте додаткові властивості.
        .addPropertiesSupplier(Collections::emptyMap)
        // Опціонально налаштуйте ConfigProperties.
        .addPropertiesCustomizer(configProperties -> Collections.emptyMap())
        // Опціонально налаштуйте SdkTracerProviderBuilder.
        .addTracerProviderCustomizer((builder, configProperties) -> builder)
        // Опціонально налаштуйте SdkMeterProviderBuilder.
        .addMeterProviderCustomizer((builder, configProperties) -> builder)
        // Опціонально налаштуйте MetricExporter.
        .addMetricExporterCustomizer((metricExporter, configProperties) -> metricExporter)
        // Опціонально налаштуйте MetricReader.
        .addMetricReaderCustomizer((metricReader, configProperties) -> metricReader)
        // Опціонально налаштуйте SdkLoggerProviderBuilder.
        .addLoggerProviderCustomizer((builder, configProperties) -> builder)
        // Опціонально налаштуйте LogRecordExporter.
        .addLogRecordExporterCustomizer((logRecordExporter, configProperties) -> logRecordExporter)
        // Опціонально налаштуйте LogRecordProcessor.
        .addLogRecordProcessorCustomizer((processor, configProperties) -> processor)
        .build()
        .getOpenTelemetrySdk();
  }
}

SPI (Service provider interface)

SPIs (артефакт io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.59.0) розширюють автоконфігурацію SDK за межі компонентів, вбудованих у SDK.

Наступні розділи описують доступні SPIs. Кожен розділ SPI включає:

  • Короткий опис, включаючи посилання на тип довідки Javadoc.
  • Таблицю доступних вбудованих та opentelemetry-java-contrib реалізацій.
  • Просту демонстрацію користувацької реалізації.
ResourceProvider

ResourceProvider додають до автоконфігурованого ресурсу.

ResourceProvider, вбудовані в SDK та підтримувані спільнотою в opentelemetry-java-contrib:

КласАртефактОпис
io.opentelemetry.sdk.autoconfigure.internal.EnvironmentResourceProviderio.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.59.0Надає атрибути ресурсу на основі змінних OTEL_SERVICE_NAME та OTEL_RESOURCE_ATTRIBUTES env.
io.opentelemetry.instrumentation.resources.ContainerResourceProviderio.opentelemetry.instrumentation:opentelemetry-resources:2.25.0-alphaНадає атрибути ресурсу контейнера.
io.opentelemetry.instrumentation.resources.HostResourceProviderio.opentelemetry.instrumentation:opentelemetry-resources:2.25.0-alphaНадає атрибути ресурсу хосту.
io.opentelemetry.instrumentation.resources.HostIdResourceProviderio.opentelemetry.instrumentation:opentelemetry-resources:2.25.0-alphaНадає атрибут ідентифікатора хосту.
io.opentelemetry.instrumentation.resources.ManifestResourceProviderio.opentelemetry.instrumentation:opentelemetry-resources:2.25.0-alphaНадає атрибути ресурсу сервісу на основі маніфесту jar.
io.opentelemetry.instrumentation.resources.OsResourceProviderio.opentelemetry.instrumentation:opentelemetry-resources:2.25.0-alphaНадає атрибути ресурсу ОС.
io.opentelemetry.instrumentation.resources.ProcessResourceProviderio.opentelemetry.instrumentation:opentelemetry-resources:2.25.0-alphaНадає атрибути ресурсу процесу.
io.opentelemetry.instrumentation.resources.ProcessRuntimeResourceProviderio.opentelemetry.instrumentation:opentelemetry-resources:2.25.0-alphaНадає атрибути ресурсу середовища виконання процесу.
io.opentelemetry.contrib.gcp.resource.GCPResourceProviderio.opentelemetry.contrib:opentelemetry-gcp-resources:1.54.0-alphaНадає атрибути ресурсу середовища виконання GCP.
io.opentelemetry.contrib.aws.resource.BeanstalkResourceProviderio.opentelemetry.contrib:opentelemetry-aws-resources:1.54.0-alphaНадає атрибути ресурсу середовища виконання AWS beanstalk.
io.opentelemetry.contrib.aws.resource.Ec2ResourceProviderio.opentelemetry.contrib:opentelemetry-aws-resources:1.54.0-alphaНадає атрибути ресурсу середовища виконання AWS ec2.
io.opentelemetry.contrib.aws.resource.EcsResourceProviderio.opentelemetry.contrib:opentelemetry-aws-resources:1.54.0-alphaНадає атрибути ресурсу середовища виконання AWS ecs.
io.opentelemetry.contrib.aws.resource.EksResourceProviderio.opentelemetry.contrib:opentelemetry-aws-resources:1.54.0-alphaНадає атрибути ресурсу середовища виконання AWS eks.
io.opentelemetry.contrib.aws.resource.LambdaResourceProviderio.opentelemetry.contrib:opentelemetry-aws-resources:1.54.0-alphaНадає атрибути ресурсу середовища виконання AWS lambda.

Реалізуйте інтерфейс ResourceProvider, щоб брати участь у автоконфігурації ресурсів. Наприклад:

package otel;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
import io.opentelemetry.sdk.resources.Resource;

public class CustomResourceProvider implements ResourceProvider {

  @Override
  public Resource createResource(ConfigProperties config) {
    // Виклик зворотного виклику для додавання до ресурсу.
    return Resource.builder().put("my.custom.resource.attribute", "abc123").build();
  }

  @Override
  public int order() {
    // Опціонально впливайте на порядок викликів.
    return 0;
  }
}
AutoConfigurationCustomizerProvider

Реалізуйте інтерфейс AutoConfigurationCustomizerProvider для налаштування різних автоконфігурованих компонентів SDK. Наприклад:

package otel;

import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
import java.util.Collections;

public class CustomizerProvider implements AutoConfigurationCustomizerProvider {

  @Override
  public void customize(AutoConfigurationCustomizer customizer) {
    // Опціонально налаштуйте TextMapPropagator.
    customizer.addPropagatorCustomizer((textMapPropagator, configProperties) -> textMapPropagator);
    // Опціонально налаштуйте Resource.
    customizer.addResourceCustomizer((resource, configProperties) -> resource);
    // Опціонально налаштуйте Sampler.
    customizer.addSamplerCustomizer((sampler, configProperties) -> sampler);
    // Опціонально налаштуйте SpanExporter.
    customizer.addSpanExporterCustomizer((spanExporter, configProperties) -> spanExporter);
    // Опціонально налаштуйте SpanProcessor.
    customizer.addSpanProcessorCustomizer((spanProcessor, configProperties) -> spanProcessor);
    // Опціонально надайте додаткові властивості.
    customizer.addPropertiesSupplier(Collections::emptyMap);
    // Опціонально налаштуйте ConfigProperties.
    customizer.addPropertiesCustomizer(configProperties -> Collections.emptyMap());
    // Опціонально налаштуйте SdkTracerProviderBuilder.
    customizer.addTracerProviderCustomizer((builder, configProperties) -> builder);
    // Опціонально налаштуйте SdkMeterProviderBuilder.
    customizer.addMeterProviderCustomizer((builder, configProperties) -> builder);
    // Опціонально налаштуйте MetricExporter.
    customizer.addMetricExporterCustomizer((metricExporter, configProperties) -> metricExporter);
    // Опціонально налаштуйте MetricReader.
    customizer.addMetricReaderCustomizer((metricReader, configProperties) -> metricReader);
    // Опціонально налаштуйте SdkLoggerProviderBuilder.
    customizer.addLoggerProviderCustomizer((builder, configProperties) -> builder);
    // Опціонально налаштуйте LogRecordExporter.
    customizer.addLogRecordExporterCustomizer((exporter, configProperties) -> exporter);
    // Опціонально налаштуйте LogRecordProcessor.
    customizer.addLogRecordProcessorCustomizer((processor, configProperties) -> processor);
  }

  @Override
  public int order() {
    // Опціонально впливайте на порядок викликів.
    return 0;
  }
}
ConfigurableSpanExporterProvider

Реалізуйте інтерфейс ConfigurableSpanExporterProvider для дозволу користувацького експортера відрізків брати участь у автоконфігурації. Наприклад:

package otel;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSpanExporterProvider;
import io.opentelemetry.sdk.trace.export.SpanExporter;

public class CustomSpanExporterProvider implements ConfigurableSpanExporterProvider {

  @Override
  public SpanExporter createExporter(ConfigProperties config) {
    // Виклик зворотного виклику, коли OTEL_TRACES_EXPORTER включає значення з getName().
    return new CustomSpanExporter();
  }

  @Override
  public String getName() {
    return "custom-exporter";
  }
}
ConfigurableMetricExporterProvider

Реалізуйте інтерфейс ConfigurableMetricExporterProvider для дозволу користувацького експортера метрик брати участь у автоконфігурації. Наприклад:

package otel;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.metrics.ConfigurableMetricExporterProvider;
import io.opentelemetry.sdk.metrics.export.MetricExporter;

public class CustomMetricExporterProvider implements ConfigurableMetricExporterProvider {

  @Override
  public MetricExporter createExporter(ConfigProperties config) {
    // Виклик зворотного виклику, коли OTEL_METRICS_EXPORTER включає значення з getName().
    return new CustomMetricExporter();
  }

  @Override
  public String getName() {
    return "custom-exporter";
  }
}
ConfigurableLogRecordExporterProvider

Реалізуйте інтерфейс ConfigurableLogRecordExporterProvider для дозволу користувацького експортера записів логів брати участь у автоконфігурації. Наприклад:

package otel;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.logs.ConfigurableLogRecordExporterProvider;
import io.opentelemetry.sdk.logs.export.LogRecordExporter;

public class CustomLogRecordExporterProvider implements ConfigurableLogRecordExporterProvider {

  @Override
  public LogRecordExporter createExporter(ConfigProperties config) {
    // Виклик зворотного виклику, коли OTEL_LOGS_EXPORTER включає значення з getName().
    return new CustomLogRecordExporter();
  }

  @Override
  public String getName() {
    return "custom-exporter";
  }
}
ConfigurableSamplerProvider

Реалізуйте інтерфейс ConfigurableSamplerProvider для дозволу користувацького семплера брати участь у автоконфігурації. Наприклад:

package otel;

import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSamplerProvider;
import io.opentelemetry.sdk.trace.samplers.Sampler;

public class CustomSamplerProvider implements ConfigurableSamplerProvider {

  @Override
  public Sampler createSampler(ConfigProperties config) {
    // Виклик зворотного виклику, коли OTEL_TRACES_SAMPLER встановлено на значення з getName().
    return new CustomSampler();
  }

  @Override
  public String getName() {
    return "custom-sampler";
  }
}
ConfigurablePropagatorProvider

Реалізуйте інтерфейс ConfigurablePropagatorProvider для дозволу користувацького поширювача брати участь у автоконфігурації. Наприклад:

package otel;

import io.opentelemetry.context.propagation.TextMapPropagator;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurablePropagatorProvider;

public class CustomTextMapPropagatorProvider implements ConfigurablePropagatorProvider {
  @Override
  public TextMapPropagator getPropagator(ConfigProperties config) {
    // Виклик зворотного виклику, коли OTEL_PROPAGATORS включає значення з getName().
    return new CustomTextMapPropagator();
  }

  @Override
  public String getName() {
    return "custom-propagator";
  }
}

Декларативне налаштування

Декларативне налаштування наразі в розробці. Воно дозволяє налаштування на основі YAML файлу, як описано в opentelemetry-configuration та декларативне налаштування.

Для використання, включіть io.opentelemetry:opentelemetry-sdk-extension-incubator:1.59.0-alpha та вкажіть шлях до файлу налаштувань, як описано в таблиці нижче.

Системна властивістьПризначенняСтандартно
otel.experimental.config.fileШлях до файлу налаштувань SDK.Не встановлено

Для отримання додаткової інформації зверніться до наступних ресурсів:


Востаннє змінено December 26, 2024: [uk] Ukrainian documentation for OpenTelemetry (2a3c5648)