用户定义的属性对于服务级别的标签很有用,例如 Jaeger UI 将其视为除了 span 标签之外的流程标签。
我们可以定义一个SdkTracerProviderBuilderCustomizer
自定义属性,但这很繁琐,而且必须ResourceAttributes.SERVICE_NAME
再次包含。
@Bean
SdkTracerProviderBuilderCustomizer sdkTracerProviderBuilderCustomizer(Environment environment) {
return builder -> {
String applicationName = environment.getProperty("spring.application.name", "application");
Attributes attributes = Attributes.of(ResourceAttributes.SERVICE_NAME, applicationName,
AttributeKey.stringKey("java.version"), System.getProperty("java.version"));
builder.setResource(Resource.create(attributes));
};
}
现在你可以这样做
@Bean
Attributes javaAttributes() {
return Attributes.of(AttributeKey.stringKey("java.version"), System.getProperty("java.version"));
}