如何为所有传出Span添加属性(Java)

tzcvj98z  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(112)

如果我理解正确的话,我应该能够使用一个opentelemetry Resource来将自定义属性附加到传出Span。

Resource resource = Resource.create(Attributes.builder().put("key", "value").build());
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder().setResource(resource).build;

问题:
如何将该TracerProvider设置为应用程序的默认提供程序?
如果我这样做,它会将该属性添加到附加到Spans的默认属性集,还是替换它们?
另外,如果我这样做,我是否仍然能够使用Span.current()语法来访问当前Span,或者我是否需要通过Tracer访问当前Span?

bvjveswy

bvjveswy1#

如何将该TracerProvider设置为应用程序的默认提供程序?
这取决于您的应用程序如何访问TracerProvider,以及您是否使用otel java代理:

  • 如果使用otel java代理,则需要使用agent extension来自定义代理安装的SDK。
  • 另外,如果您使用autoconfigure来安装SDK,您可以使用各种自定义方法或implement one of the SPIs
  • 如果你直接配置SDK,你可以做你所描述的。

配置SDK后,您需要确保工具正在访问它。otel java代理安装的SDK由它安装的所有安装使用。如果不使用代理,您可以手动将SDK传递到相关工具。如果手动传递SDK不可行,您可以使用GlobalOpenTelemetry,它具有用于设置/获取OpenTelemetry示例的静态访问器,但不建议这样做。
您还应该考虑资源是否是属性的适当位置。资源附加到SDK导出的所有记录,但通常保留用于描述遥测源的属性。如果属性描述记录本身,请考虑添加自定义SpanProcessor以将属性添加到各个span。

相关问题