99import io .opentelemetry .sdk .autoconfigure .spi .AutoConfigurationCustomizer ;
1010import io .opentelemetry .sdk .autoconfigure .spi .AutoConfigurationCustomizerProvider ;
1111import io .opentelemetry .sdk .autoconfigure .spi .ConfigProperties ;
12+ import io .opentelemetry .api .common .AttributeKey ;
13+ import io .opentelemetry .api .common .Attributes ;
1214import io .opentelemetry .sdk .logs .SdkLoggerProviderBuilder ;
15+ import io .opentelemetry .sdk .metrics .SdkMeterProviderBuilder ;
16+ import io .opentelemetry .sdk .resources .Resource ;
17+ import java .lang .reflect .Field ;
1318import java .util .HashMap ;
1419import java .util .Map ;
1520
@@ -31,9 +36,28 @@ public class DemoAutoConfigurationCustomizerProvider
3136 public void customize (AutoConfigurationCustomizer autoConfiguration ) {
3237 autoConfiguration
3338 .addLoggerProviderCustomizer (this ::configureSdkLoggerProvider )
39+ .addMeterProviderCustomizer (this ::configureSdkMeterProvider )
3440 .addPropertiesSupplier (this ::getDefaultProperties );
3541 }
3642
43+ private SdkMeterProviderBuilder configureSdkMeterProvider (
44+ SdkMeterProviderBuilder meterProvider , ConfigProperties config ) {
45+ try {
46+ Field resourceField = meterProvider .getClass ().getDeclaredField ("resource" );
47+ resourceField .setAccessible (true );
48+ Resource resource = (Resource ) resourceField .get (meterProvider );
49+ meterProvider .setResource (
50+ resource .merge (
51+ Resource .create (
52+ Attributes .of (
53+ AttributeKey .stringKey ("runtime.metrics.java" ), "true" ,
54+ AttributeKey .stringKey ("mw.app.lang" ), "java" ))));
55+ } catch (Exception e ) {
56+ throw new RuntimeException (e );
57+ }
58+ return meterProvider ;
59+ }
60+
3761 private SdkLoggerProviderBuilder configureSdkLoggerProvider (
3862 SdkLoggerProviderBuilder loggerProvider , ConfigProperties config ) {
3963
@@ -47,8 +71,6 @@ private Map<String, String> getDefaultProperties() {
4771 properties .put ("otel.metrics.exporter" , "otlp" );
4872 properties .put ("otel.logs.exporter" , "otlp" );
4973 properties .put ("otel.instrumentation.runtime-telemetry-java17.enable-all" , "true" );
50- properties .put ("runtime.metrics.java" , "true" );
51- properties .put ("mw.app.lang" , "java" );
5274 return properties ;
5375 }
5476}
0 commit comments