Configure o SDK
O SDK é a implementação de referência integrada da API, processando e exportando telemetrias produzidas pelas chamadas de instrumentação. Configurar o SDK para processar e exportar apropriadamente é um passo essencial para integrar o OpenTelemetry na sua aplicação.
Todos os componentes do SDK possuem APIs de configurações via código (configuração programática). É o caminho mais flexível e expressivo para configurar o SDK. No entanto, alterar as configurações requer ajustes no código e recompilar a aplicação, e não possui interoperabilidade na linguagem desde que a API seja escrita em Java.
O módulo de auto configuração sem código configura os componentes do SDK através de propriedades do sistema ou variáveis de ambiente, com vários pontos de extensão para instâncias onde as propriedades são insuficientes.
Nós recomendamos usar o módulo de auto configuração sem código pois ele reduz o código repetitivo, permite reconfigurar sem reescrever códigos ou recompilar a aplicação, e evita a interoperabilidade na linguagem.
O Java agent e Spring starter configuram automaticamente o SDK usando o módulo de auto configuração sem código, e instala instrumentação com ele. Todo o conteúdo de autoconfiguração é aplicação ao Java agent e aos usuários de Spring starter.
configuração programática
A interface de configuração via código (configuração programática) é um conjunto de APIs para construir componentes do SDK. Todos os componentes do SDK possuem APIs de configurações via código, e todos os outros mecanismos de configurações são implementados no inicio da API. Por exemplo, a interface de configuração auto configuração de variáveis de ambiente e propriedades do sistema interpreta as variáveis de ambiente e propriedades do sistema conhecidas em uma série de chamadas para a API.
Enquanto outros mecânicos de configurações oferecem mais conveniência, nenhum oferece a flexibilidade de escrever código que expresse com precisão as configurações necessárias. Quando uma capacidade especifica não é suportada por mecanismos de configuração de alto nível, pode ser necessário recorrer à configuração via código.
As seções de componentes do SDK demonstram exemplos simples de configuração via código para as principais áreas do SDK voltadas ao usuário. Consulte o código para uma referência completa da API.
auto configuração sem código
O módulo de auto configuração (artifact
io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.51.0
)
é uma interface de configuração construída sobre a,
interface de configuração via código, que
configura os componentes do SDK sem código. Eles
possuem dois fluxos de auto configuração distintos:
- Variáveis de ambiente e propriedades do sistema interpreta variáveis de ambiente e propriedades do sistema para criar componentes do SDK, incluindo diversos pontos de customizações para sobrescrever configurações via código (configuração programática).
- Configurações declarativas (atualmente está em desenvolvimento) interpreta um modelo de configuração para criar os componentes do SDK, que normalmente é codificado em um arquivo de configuração YAML.
Automaticamente configura os componentes do SDK usando auto configurações descritas abaixo:
package otel;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
public class AutoConfiguredSdk {
public static OpenTelemetrySdk autoconfiguredSdk() {
return AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
}
}
O Java agent e o Spring starter automaticamente configuram o SDK usando o módulo de auto configuração sem código, e instala a instrumentação com eles. Todo o conteúdo de auto configuração é aplicado ao Java agent e aos usuários de Spring starter.
O módulo de auto configuração registra hooks de
desligamento do Java para encerrar o SDK quando apropriado. Como o OpenTelemetry
Java
usa java.util.logging
para registros internos,
alguns registros podem ser suprimidos durante os hooks de desligamento. Esse é
um bug do próprio SDK, e não algo sob controle do OpenTelemetry Java. Se você
precisar de registros durante os hooks de desligamento, considere usar
System.out
em vez de um framework de registros que pode ser encerrado durante
o hook e, assim suprimir suas mensagens de registros. Para mais detalhes, veja
este bug do JDK.
variáveis de ambiente e propriedades do sistema
O módulo de auto configuração suporta propriedades listadas em especificação de configuração por variável de ambiente, com algumas adições experimentais e específicas para Java.
As propriedades a seguir são listadas como propriedades do sistema, mas também podem ser definidas usando variáveis de ambiente. Aplique os passos a seguir para converter propriedades do sistema em variáveis de ambiente:
- Converta os nomes para maiúsculo.
- Substitua todos os
.
e-
com_
.
Por exemplo, a propriedade do sistema otel.sdk.enabled
é equivalente à
variável de ambiente OTEL_SDK_ENABLED
.
Se a propriedade é definida como uma propriedade do sistema e variável de ambiente, a propriedade do sistema irá ser prioritaria.
Propriedades: geral
Propriedades para desativar o SDK:
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.sdk.disabled | Se true , desativa o SDK do OpenTelemetry. [1] | false |
[1]: Se desativado, AutoConfiguredOpenTelemetrySdk#getOpenTelemetrySdk()
retorna uma configuração minima da instância (por exemplo,
OpenTelemetrySdk.builder().build()
).
Propriedades para limites de atributos (Veja limites de trechos, limites de logs):
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.attribute.value.length.limit | O comprimento máximo dos valores de atributos. Aplica-se a trechos e logs. Sobrescrito por otel.span.attribute.value.length.limit , otel.span.attribute.count.limit . | Sem limite |
otel.attribute.count.limit | O número máximo de atributos. Aplica-se a trechos, eventos de trechos, links de trechos, e logs. | 128 |
Propriedades para propagação de contexto:
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.propagators | Lista de propagadores separados por vírgulas. Valores conhecidos incluem tracecontext , baggage , b3 , b3multi , jaeger , ottrace , xray , xray-lambda . [1] | tracecontext,baggage (W3C) |
[1]: Propagadores conhecidos e artefatos (Veja propagador de mapa de texto para coordenadas de artefato):
tracecontext
configuraW3CTraceContextPropagator
.baggage
configuraW3CBaggagePropagator
.b3
,b3multi
configuraB3Propagator
.jaeger
configuraJaegerPropagator
.ottrace
configuraOtTracePropagator
.xray
configuraAwsXrayPropagator
.xray-lambda
configuraAwsXrayLambdaPropagator
.
Propriedades: recursos
Propriedades para configurar recursos:
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.service.name | Especifica o nome do serviço lógico. Vem antes de service.name definido com otel.resource.attributes . | unknown_service:java |
otel.resource.attributes | Especifica os atributos de recursos nos seguintes formatos: key1=val1,key2=val2,key3=val3 . | |
otel.resource.disabled.keys | Especifica as chaves dos atributos de recursos para filtrar. | |
otel.java.enabled.resource.providers | Lista separada por vírgulas de nomes de classe totalmente qualificados de ResourceProvider para habilitar. [1] Se não for definido, todos os provedores de recursos serão ativados. | |
otel.java.disabled.resource.providers | Lista separada por vírgulas de nomes de classe totalmente qualificados de ResourceProvider para desativar. [1] |
[1]: Por exemplo, para desabilitar o
OS resource provider,
defina
-Dotel.java.disabled.resource.providers=io.opentelemetry.instrumentation.resources.OsResourceProvider
.
NOTE: As propriedades do sistema / variáveis de ambiente otel.service.name
e otel.resource.attributes
pelo provedor de recurso
io.opentelemetry.sdk.autoconfigure.EnvironmentResourceProvider
. Se optar por
especificar o provedor de recursos via otel.java.enabled.resource-providers
,
provavelmente você vai querer incluí-lo para evitar surpresas. Veja
Provedor de Recursospara coordenadas de artefato do
provedor de recurso.
Propriedades: traços
Propriedades para processadores em lote de trechos em
conjunto com exportadores especificados via otel.traces.exporter
:
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.bsp.schedule.delay | O intervalo, em milissegundos, entre duas exportações consecutivas. | 5000 |
otel.bsp.max.queue.size | O número máximo de trechos que podem ser enfileirados antes de serem processados em lote. | 2048 |
otel.bsp.max.export.batch.size | O número máximo de trechos para exportar em um lote único. | 512 |
otel.bsp.export.timeout | O tempo máximo permitido, em milissegundos, para exportar os dados. | 30000 |
Propriedades para Amostras:
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.traces.sampler | Uma amostra para usar. Valores conhecidos incluídos always_on , always_off , traceidratio , parentbased_always_on , parentbased_always_off , parentbased_traceidratio , jaeger_remote . [1] | parentbased_always_on |
otel.traces.sampler.arg | Um argumento para configurar o traço se suportados, Por exemplo a proporção de amostragem. |
[1]: Amostragens conhecidas e artefatos (veja sampler para artifact coordinates):
always_on
configuraAlwaysOnSampler
.always_off
configuraAlwaysOffSampler
.traceidratio
configuraTraceIdRatioBased
.otel.traces.sampler.arg
define a taxa.parentbased_always_on
configuraParentBased(root=AlwaysOnSampler)
.parentbased_always_off
configuraParentBased(root=AlwaysOffSampler)
.parentbased_traceidratio
configuraParentBased(root=TraceIdRatioBased)
.otel.traces.sampler.arg
define a taxa.jaeger_remote
configuraJaegerRemoteSampler
.otel.traces.sampler.arg
é uma lista separada por vírgulas de argumentos como os descritos em especificações.
Propriedades para span limits:
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.span.attribute.value.length.limit | O comprimento máximo dos valores dos atributos de trechos. Tem precedência sobre otel.attribute.value.length.limit . | Sem limite |
otel.span.attribute.count.limit | O número máximo de atributos por trechos. Tem precedência sobre otel.attribute.count.limit . | 128 |
otel.span.event.count.limit | O número máximo de eventos por trechos. | 128 |
otel.span.link.count.limit | O número máximo de links por trechos. | 128 |
Propriedades: métricas
Propriedades para periodic metric reader:
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.metric.export.interval | O intervalo, em milissegundos, between the start of two export attempts. | 60000 |
Propriedades para exemplars:
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.metrics.exemplar.filter | O filtro para um exemplo de amostra. Pode ser ALWAYS_OFF , ALWAYS_ON ou TRACE_BASED . | TRACE_BASED |
Propriedades para limites de cardinalidade:
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.experimental.metrics.cardinality.limit | Se definido, configura o limite de cardinalidade. O valor define o número máximo de pontos distintos por métrica. Essa opção é experimental e está sujeita a ser alterada ou removida. | 2000 |
Propriedades: logs
Propriedades para log record processor(s) pared
with exporters via otel.logs.exporter
:
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.blrp.schedule.delay | O intervalo, em milissegundos, entre duas exportações consecutivas. | 1000 |
otel.blrp.max.queue.size | O número máximo de registros de logs que podem ser enfileiradas antes do agrupamento em lote. | 2048 |
otel.blrp.max.export.batch.size | O número máximo de registros de logs para exportar em um lote único. | 512 |
otel.blrp.export.timeout | O tempo máximo permitido, em milissegundos, para exportar os dados. | 30000 |
Propriedades: exportadores
Propriedades para configurar exportadores:
Propriedades do sistema | Purpose | Padrão |
---|---|---|
otel.traces.exporter | Lista separada por vírgulas de exportadores de trechos. Valores conhecidos incluem otlp , zipkin , console , logging-otlp , none . [1] | otlp |
otel.metrics.exporter | Lista separada por vírgulas de exportadores de métricas. Valores conhecidos incluem otlp , prometheus , none . [1] | otlp |
otel.logs.exporter | Lista separada por vírgulas de exportadores de registros de logs. Valores conhecidos incluem otlp , console , logging-otlp , none . [1] | otlp |
otel.java.exporter.memory_mode | If reusable_data , enable reusable memory mode (on exporters which support it) para reduzir alocações. Valores conhecidos incluem reusable_data , immutable_data . [2] | reusable_data |
[1]: Known exporters and artifacts (veja exportadores de trechos, exportadores de métricas, exportadores de registros for exporter artifact coordinates):
otlp
configuraOtlpHttp{Signal}Exporter
/OtlpGrpc{Signal}Exporter
.zipkin
configuraZipkinSpanExporter
.console
configuraLoggingSpanExporter
,LoggingMetricExporter
,SystemOutLogRecordExporter
.logging-otlp
configuraOtlpJsonLogging{Signal}Exporter
.experimental-otlp/stdout
configuraOtlpStdout{Signal}Exporter
(essa opção é experimental e está sujeita a ser alterada ou removida).
[2]: exportadores que estão em conformidade com
otel.java.exporter.memory_mode=reusable_data
são OtlpGrpc{Signal}Exporter
,
OtlpHttp{Signal}Exporter
, OtlpStdout{Signal}Exporter
, e
PrometheusHttpServer
.
Propriedades para otlp
trecho, métrica, e exportadores de registros:
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.{signal}.exporter=otlp | Selecione o exportador OpenTelemetry para {signal}. | |
otel.exporter.otlp.protocol | O protocolo de transporte para usar no traço OTLP, métrica e requisições de registros. Opções incluem grpc e http/protobuf . | grpc [1] |
otel.exporter.otlp.{signal}.protocol | O protocolo de transporte para usar on OTLP {signal} requests. Opções incluem grpc e http/protobuf . | grpc [1] |
otel.exporter.otlp.endpoint | O endpoint para enviar todos os traços OTLP, métricas, e registros to. Often the address of an OpenTelemetry Collector. Must be a URL with a scheme of either http or https based on the use of TLS. | http://localhost:4317 quando o protocolo é grpc , and http://localhost:4318 quando o protocolo é http/protobuf . |
otel.exporter.otlp.{signal}.endpoint | O endpoint para enviar OTLP {signal} to. Often the address of an OpenTelemetry Collector. Must be a URL with a scheme of either http or https based on the use of TLS. If protocol is http/protobuf the version and signal must be appended to the path (e.g. v1/traces , v1/metrics , or v1/logs ) | http://localhost:4317 quando o protocolo é grpc , and http://localhost:4318/v1/{signal} quando o protocolo é http/protobuf . |
otel.exporter.otlp.certificate | O caminho para o arquivo que contém certificados confiáveis para usar quando estiver verificando um traço OTLP, métrica, or log server’s TLS credentials. The file should contain one or more X.509 certificates in PEM format. | The host platform’s trusted root certificates are used. |
otel.exporter.otlp.{signal}.certificate | O caminho para o arquivo que contém certificados confiáveis para usar quando estiver verificando um OTLP {signal} server’s TLS credentials. The file should contain one or more X.509 certificates in PEM format. | The host platform’s trusted root certificates are used |
otel.exporter.otlp.client.key | O caminho para o arquivo que contém private client key to use when verifying an traço OTLP, métrica, or log client’s TLS credentials. The file should contain one private key PKCS8 PEM format. | No client key file is used. |
otel.exporter.otlp.{signal}.client.key | O caminho para o arquivo que contém private client key to use when verifying an OTLP {signal} client’s TLS credentials. The file should contain one private key PKCS8 PEM format. | No client key file is used. |
otel.exporter.otlp.client.certificate | O caminho para o arquivo que contém certificados confiáveis para usar quando estiver verificando um traço OTLP, métrica, or log client’s TLS credentials. The file should contain one or more X.509 certificates in PEM format. | No chain file is used. |
otel.exporter.otlp.{signal}.client.certificate | O caminho para o arquivo que contém certificados confiáveis para usar quando estiver verificando um OTLP {signal} server’s TLS credentials. The file should contain one or more X.509 certificates in PEM format. | No chain file is used. |
otel.exporter.otlp.headers | Pares de chave-valor separados por vírgulas para passar os headers de requisições em um traço OTLP, métrica, e requisições de registros. | |
otel.exporter.otlp.{signal}.headers | Pares de chave-valor separados por vírgulas para passar os headers de requisições em um {signal} OTLP requests. | |
otel.exporter.otlp.compression | O tipo de compressão para ser usado em um traço OTLP, métrica, e requisições de registros. Opções incluem gzip . | Nenhuma compressão será utilizada. |
otel.exporter.otlp.{signal}.compression | O tipo de compressão para ser usado em um requisição de {signal} OTLP. Opções incluem gzip . | Nenhuma compressão será utilizada. |
otel.exporter.otlp.timeout | O tempo máximo de espera, em milissegundos, permitidos para enviar cada traço OTLP, métrica, e registros em lotes . | 10000 |
otel.exporter.otlp.{signal}.timeout | O tempo máximo de espera, em milissegundos, permitidos para enviar cada lote OTLP de {signal}. | 10000 |
otel.exporter.otlp.metrics.temporality.preference | The preferred output aggregation temporality. Opções incluem DELTA , LOWMEMORY , and CUMULATIVE . If CUMULATIVE , all instruments will have cumulative temporality. If DELTA , counter (sync and async) and histograms will be delta, up down counters (sync and async) will be cumulative. If LOWMEMORY , sync counter and histograms will be delta, async counter and up down counters (sync and async) will be cumulative. | CUMULATIVE |
otel.exporter.otlp.metrics.default.histogram.aggregation | The preferred default histogram aggregation. Opções incluem BASE2_EXPONENTIAL_BUCKET_HISTOGRAM and EXPLICIT_BUCKET_HISTOGRAM . | EXPLICIT_BUCKET_HISTOGRAM |
otel.java.exporter.otlp.retry.enabled | Se true , novas tentativas serão feitas quando erros transientes ocorrerem. [2] | true |
NOTE: The text placeholder {signal}
refers to the supported
OpenTelemetry Signal. Valid values include traces
,
metrics
, and logs
. Signal specific configurations take priority over the
generic versions. Por exemplo, if you set both otel.exporter.otlp.endpoint
and
otel.exporter.otlp.traces.endpoint
, the latter will take precedence.
[1]: OpenTelemetry Java agent 2.x and the OpenTelemetry Spring Boot starter
use http/protobuf
by default.
[2]: OTLP requer que erros
transientes sejam tratados com uma
estratégia de nova tentativa. Quando a opção de retry (nova tentativa) está
habilitada, os códigos de status gRPC que permitem repetição serão novamente
tentados usando um algoritmo de backoff exponencial com jitter. Essa opção
específica do RetryPolicy
só pode ser customizada via
customizações programáticas.
Propriedades para zipkin
exportadores de trechos:
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.traces.exporter=zipkin | Seleciona o exportador Zipkin | |
otel.exporter.zipkin.endpoint | O endereço do Zipkin para conecta-los. Somente HTTP é suportado. | http://localhost:9411/api/v2/spans |
Propriedades para prometheus
exportadores de métricas.
Propriedades do sistema | Descrição | Padrão |
---|---|---|
otel.metrics.exporter=prometheus | Seleciona o exportador do Prometheus | |
otel.exporter.prometheus.port | A porta local usada para ligar o servidor de métricas do Prometheus. | 9464 |
otel.exporter.prometheus.host | O endereço local usado para ligar o servidor de métricas do Prometheus. | 0.0.0.0 |
Customizações programáticas
Customizações programáticas provê hooks para suplementar as propriedades suportadas com configurações programática.
Se estiver usando Spring starter, veja também spring starter configuração programática.
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()
// Optionally customize TextMapPropagator.
.addPropagatorCustomizer((textMapPropagator, configProperties) -> textMapPropagator)
// Optionally customize Resource.
.addResourceCustomizer((resource, configProperties) -> resource)
// Optionally customize Sampler.
.addSamplerCustomizer((sampler, configProperties) -> sampler)
// Optionally customize SpanExporter.
.addSpanExporterCustomizer((spanExporter, configProperties) -> spanExporter)
// Optionally customize SpanProcessor.
.addSpanProcessorCustomizer((spanProcessor, configProperties) -> spanProcessor)
// Optionally supply additional properties.
.addPropertiesSupplier(Collections::emptyMap)
// Optionally customize ConfigProperties.
.addPropertiesCustomizer(configProperties -> Collections.emptyMap())
// Optionally customize SdkTracerProviderBuilder.
.addTracerProviderCustomizer((builder, configProperties) -> builder)
// Optionally customize SdkMeterProviderBuilder.
.addMeterProviderCustomizer((builder, configProperties) -> builder)
// Optionally customize MetricExporter.
.addMetricExporterCustomizer((metricExporter, configProperties) -> metricExporter)
// Optionally customize MetricReader.
.addMetricReaderCustomizer((metricReader, configProperties) -> metricReader)
// Optionally customize SdkLoggerProviderBuilder.
.addLoggerProviderCustomizer((builder, configProperties) -> builder)
// Optionally customize LogRecordExporter.
.addLogRecordExporterCustomizer((logRecordExporter, configProperties) -> logRecordExporter)
// Optionally customize LogRecordProcessor.
.addLogRecordProcessorCustomizer((processor, configProperties) -> processor)
.build()
.getOpenTelemetrySdk();
}
}
SPI (Service provider interface)
SPIs (artefato
io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.51.0
)
estendem a autoconfiguração do SDK além dos componentes já incluídos no SDK.
As seções a seguir descrevem os SPIs disponíveis. Cada seção de SPI inclui:
- Uma breve descrição, incluindo link para a referência do tipo Javadoc.
- Uma tabela com as implementações já incluídas e as do
opentelemetry-java-contrib
. - Uma demonstração simples de uma implementação personalizada.
Provedor de Recursos
ResourceProviders contribute to the autoconfigured resource.
ResourceProvider
s built-in to the SDK and maintained by the community in
opentelemetry-java-contrib
:
Class | Artifact | Descrição |
---|---|---|
io.opentelemetry.sdk.autoconfigure.internal.EnvironmentResourceProvider | io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.51.0 | Provides resource attributes based on OTEL_SERVICE_NAME and OTEL_RESOURCE_ATTRIBUTES env vars. |
io.opentelemetry.instrumentation.resources.ContainerResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | Provides container resource attributes. |
io.opentelemetry.instrumentation.resources.HostResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | Provides host resource attributes. |
io.opentelemetry.instrumentation.resources.HostIdResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | Provides host ID resource attribute. |
io.opentelemetry.instrumentation.resources.ManifestResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | Provides service resource attributes based on jar manifest. |
io.opentelemetry.instrumentation.resources.OsResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | Provides OS resource attributes. |
io.opentelemetry.instrumentation.resources.ProcessResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | Provides process resource attributes. |
io.opentelemetry.instrumentation.resources.ProcessRuntimeProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | Provides process runtime resource attributes. |
io.opentelemetry.contrib.gcp.resource.GCPResourceProvider | io.opentelemetry.contrib:opentelemetry-gcp-resources:1.46.0-alpha | Provides GCP runtime environment resource attributes. |
io.opentelemetry.contrib.aws.resource.BeanstalkResourceProvider | io.opentelemetry.contrib:opentelemetry-aws-resources:1.46.0-alpha | Provides AWS beanstalk runtime environment resource attributes. |
io.opentelemetry.contrib.aws.resource.Ec2ResourceProvider | io.opentelemetry.contrib:opentelemetry-aws-resources:1.46.0-alpha | Provides AWS ec2 runtime environment resource attributes. |
io.opentelemetry.contrib.aws.resource.EcsResourceProvider | io.opentelemetry.contrib:opentelemetry-aws-resources:1.46.0-alpha | Provides AWS ecs runtime environment resource attributes. |
io.opentelemetry.contrib.aws.resource.EksResourceProvider | io.opentelemetry.contrib:opentelemetry-aws-resources:1.46.0-alpha | Provides AWS eks runtime environment resource attributes. |
io.opentelemetry.contrib.aws.resource.LambdaResourceProvider | io.opentelemetry.contrib:opentelemetry-aws-resources:1.46.0-alpha | Provides AWS lambda runtime environment resource attributes. |
Implementa a interface do ResourceProvider
para participar no recurso de auto
configuração. Por exemplo:
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) {
// Callback invoked to contribute to the resource.
return Resource.builder().put("my.custom.resource.attribute", "abc123").build();
}
@Override
public int order() {
// Optionally influence the order of invocation.
return 0;
}
}
AutoConfigurationCustomizerProvider
Implementa a interface AutoConfigurationCustomizerProvider para customizar uma variedade de componentes do SDK auto configurados. Por exemplo:
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) {
// Optionally customize TextMapPropagator.
customizer.addPropagatorCustomizer((textMapPropagator, configProperties) -> textMapPropagator);
// Optionally customize Resource.
customizer.addResourceCustomizer((resource, configProperties) -> resource);
// Optionally customize Sampler.
customizer.addSamplerCustomizer((sampler, configProperties) -> sampler);
// Optionally customize SpanExporter.
customizer.addSpanExporterCustomizer((spanExporter, configProperties) -> spanExporter);
// Optionally customize SpanProcessor.
customizer.addSpanProcessorCustomizer((spanProcessor, configProperties) -> spanProcessor);
// Optionally supply additional properties.
customizer.addPropertiesSupplier(Collections::emptyMap);
// Optionally customize ConfigProperties.
customizer.addPropertiesCustomizer(configProperties -> Collections.emptyMap());
// Optionally customize SdkTracerProviderBuilder.
customizer.addTracerProviderCustomizer((builder, configProperties) -> builder);
// Optionally customize SdkMeterProviderBuilder.
customizer.addMeterProviderCustomizer((builder, configProperties) -> builder);
// Optionally customize MetricExporter.
customizer.addMetricExporterCustomizer((metricExporter, configProperties) -> metricExporter);
// Optionally customize MetricReader.
customizer.addMetricReaderCustomizer((metricReader, configProperties) -> metricReader);
// Optionally customize SdkLoggerProviderBuilder.
customizer.addLoggerProviderCustomizer((builder, configProperties) -> builder);
// Optionally customize LogRecordExporter.
customizer.addLogRecordExporterCustomizer((exporter, configProperties) -> exporter);
// Optionally customize LogRecordProcessor.
customizer.addLogRecordProcessorCustomizer((processor, configProperties) -> processor);
}
@Override
public int order() {
// Optionally influence the order of invocation.
return 0;
}
}
ConfigurableSpanExporterProvider
Implement the ConfigurableSpanExporterProvider interface to allow a custom exportadores de trechos to participate in autoconfiguration. Por exemplo:
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) {
// Callback invoked when OTEL_TRACES_EXPORTER includes the value from getName().
return new CustomSpanExporter();
}
@Override
public String getName() {
return "custom-exporter";
}
}
ConfigurableMetricExporterProvider
Implement the ConfigurableMetricExporterProvider interface to allow a custom exportadores de métricas to participate in autoconfiguration. Por exemplo:
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) {
// Callback invoked when OTEL_METRICS_EXPORTER includes the value from getName().
return new CustomMetricExporter();
}
@Override
public String getName() {
return "custom-exporter";
}
}
ConfigurableLogRecordExporterProvider
Implement the ConfigurableLogRecordExporterProvider interface to allow a custom log record exporter to participate in autoconfiguration. Por exemplo:
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) {
// Callback invoked when OTEL_LOGS_EXPORTER includes the value from getName().
return new CustomLogRecordExporter();
}
@Override
public String getName() {
return "custom-exporter";
}
}
ConfigurableSamplerProvider
Implement the ConfigurableSamplerProvider interface to allow a custom sampler to participate in autoconfiguration. For example:
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) {
// Callback invoked when OTEL_TRACES_SAMPLER is set to the value from getName().
return new CustomSampler();
}
@Override
public String getName() {
return "custom-sampler";
}
}
ConfigurablePropagatorProvider
Implement the ConfigurablePropagatorProvider interface to allow a custom propagator to participate in autoconfiguration. For example:
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) {
// Callback invoked when OTEL_PROPAGATORS includes the value from getName().
return new CustomTextMapPropagator();
}
@Override
public String getName() {
return "custom-propagator";
}
}
Configurações declarativas
Configurações declarativas estão em desenvolvimento atualmente. Elas permitem a configuração baseada em arquivos YAML, conforme descrito em configuração do OpenTelemetry e Configurações declarativas.
Para usar, inclua
io.opentelemetry:opentelemetry-sdk-extension-incubator:1.51.0-alpha
e especifique o caminho para o arquivo de configuração descrito na tabela
abaixo.
Propriedades do Sistema | Função | Padrão |
---|---|---|
otel.experimental.config.file | The path to the SDK configuration file. | Unset |
Quando um arquivo de configuração é especificado, variáveis de ambiente e propriedades do sistema são ignorados, customização programáticas e SPIs são ignoradas. E o conteúdo deste arquivo sozinho determina a configuração do SDK.
Para detalhes adicionais, consulte os links abaixo:
Feedback
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!