【问题标题】:How to configure opentelemetry using depedencies in spring boot microservices?如何在 Spring Boot 微服务中使用依赖项配置 Opentelemetry?
【发布时间】:2022-10-13 13:35:31
【问题描述】:

在所有 docker 文件中添加 opentelemetry jar 的依赖项 为所有 Spring 微服务启用 promethue 启用/禁用开放遥测

我想在每个微服务的 Spring Boot 云项目中实现 opentelemetry-javaagent 依赖项。 here they have used jar files and show the metrics on SigNoz 但我想将依赖项用于 opentelemetry。

问题是我越来越依赖,但他们没有工作。 SigNoz 仪表板中没有预测任何指标。

【问题讨论】:

  • 这是 opentelemetry 的 Maven 存储库链接:mvnrepository.com/search?q=opentelemetry+javaagent
  • 请提供足够的代码,以便其他人可以更好地理解或重现该问题。
  • 这需要更多细节。您是否想直接使用 java 代理依赖项,而不是作为代理,而是作为 gradle/maven 项目中的依赖项?如果是这样的话,你不能那样做。 otel 代理是代理,而不是常规意义上的依赖项。如果您想要一些直接的依赖关系,我会检查 java 库检测,它来自与 java 代理相同的存储库并记录在那里。
  • 我想使用直接依赖项而不是使用 java 代理,或者我希望您使用 docker 映像进行 opentelemetry。不;使用哪一个link`

标签: spring-boot microservices prometheus open-telemetry apm


【解决方案1】:

如果您不想使用代理,您可以在应用程序代码中使用直接依赖项。
https://mvnrepository.com/artifact/io.opentelemetry/opentelemetry-api

<dependency>
    <groupId>io.opentelemetry</groupId>
    <artifactId>opentelemetry-api</artifactId>
</dependency>

并配置 SDK -

Resource resource = Resource.getDefault()
  .merge(Resource.create(Attributes.of(ResourceAttributes.SERVICE_NAME, "logical-service-name")));

SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
  .addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder().build()).build())
  .setResource(resource)
  .build();

SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
  .registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder().build()).build())
  .setResource(resource)
  .build();

OpenTelemetry openTelemetry = OpenTelemetrySdk.builder()
  .setTracerProvider(sdkTracerProvider)
  .setMeterProvider(sdkMeterProvider)
  .setPropagators(ContextPropagators.create(W3CTraceContextPropagator.getInstance()))
  .buildAndRegisterGlobal();

然后获取跟踪器的实例 -

import io.opentelemetry.api;

//...

Tracer tracer =
    openTelemetry.getTracer("instrumentation-library-name", "1.0.0");

并创建跨度 -

Span span = tracer.spanBuilder("my span").startSpan();

// Make the span the current span
try (Scope ss = span.makeCurrent()) {
  // In this scope, the span is the current/active span
} finally {
    span.end();
}

取自这里——
https://opentelemetry.io/docs/instrumentation/java/manual/

【讨论】:

    猜你喜欢
    • 2022-01-08
    • 2020-12-09
    • 2017-10-04
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 2020-01-07
    • 2017-09-29
    • 1970-01-01
    相关资源
    最近更新 更多