|
19 | 19 | import java.util.Collections; |
20 | 20 |
|
21 | 21 | import io.micrometer.core.instrument.MeterRegistry; |
| 22 | +import io.micrometer.core.instrument.Tags; |
22 | 23 | import io.micrometer.core.instrument.binder.MeterBinder; |
23 | 24 | import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics; |
24 | 25 | import io.micrometer.core.instrument.binder.jvm.JvmCompilationMetrics; |
|
30 | 31 | import io.micrometer.core.instrument.binder.jvm.convention.JvmClassLoadingMeterConventions; |
31 | 32 | import io.micrometer.core.instrument.binder.jvm.convention.JvmMemoryMeterConventions; |
32 | 33 | import io.micrometer.core.instrument.binder.jvm.convention.JvmThreadMeterConventions; |
| 34 | +import io.micrometer.core.instrument.binder.jvm.convention.micrometer.MicrometerJvmClassLoadingMeterConventions; |
| 35 | +import io.micrometer.core.instrument.binder.jvm.convention.micrometer.MicrometerJvmMemoryMeterConventions; |
| 36 | +import io.micrometer.core.instrument.binder.jvm.convention.micrometer.MicrometerJvmThreadMeterConventions; |
| 37 | +import io.micrometer.core.instrument.binder.jvm.convention.otel.OpenTelemetryJvmClassLoadingMeterConventions; |
| 38 | +import io.micrometer.core.instrument.binder.jvm.convention.otel.OpenTelemetryJvmMemoryMeterConventions; |
| 39 | +import io.micrometer.core.instrument.binder.jvm.convention.otel.OpenTelemetryJvmThreadMeterConventions; |
33 | 40 | import org.jspecify.annotations.Nullable; |
34 | 41 |
|
35 | 42 | import org.springframework.aot.hint.MemberCategory; |
|
44 | 51 | import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; |
45 | 52 | import org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration; |
46 | 53 | import org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration; |
| 54 | +import org.springframework.boot.micrometer.observation.autoconfigure.condition.ConditionalOnSemanticConventions; |
| 55 | +import org.springframework.boot.micrometer.observation.autoconfigure.condition.SemanticConventions; |
47 | 56 | import org.springframework.context.annotation.Bean; |
48 | 57 | import org.springframework.context.annotation.Configuration; |
49 | 58 | import org.springframework.context.annotation.ImportRuntimeHints; |
@@ -111,6 +120,54 @@ JvmCompilationMetrics jvmCompilationMetrics() { |
111 | 120 | return new JvmCompilationMetrics(); |
112 | 121 | } |
113 | 122 |
|
| 123 | + @Configuration(proxyBeanMethods = false) |
| 124 | + @ConditionalOnSemanticConventions(SemanticConventions.MICROMETER) |
| 125 | + static class MicrometerJvmConventionsConfiguration { |
| 126 | + |
| 127 | + @Bean |
| 128 | + @ConditionalOnMissingBean(JvmMemoryMeterConventions.class) |
| 129 | + MicrometerJvmMemoryMeterConventions micrometerJvmMemoryMeterConventions() { |
| 130 | + return new MicrometerJvmMemoryMeterConventions(); |
| 131 | + } |
| 132 | + |
| 133 | + @Bean |
| 134 | + @ConditionalOnMissingBean(JvmClassLoadingMeterConventions.class) |
| 135 | + MicrometerJvmClassLoadingMeterConventions micrometerJvmClassLoadingMeterConventions() { |
| 136 | + return new MicrometerJvmClassLoadingMeterConventions(); |
| 137 | + } |
| 138 | + |
| 139 | + @Bean |
| 140 | + @ConditionalOnMissingBean(JvmThreadMeterConventions.class) |
| 141 | + MicrometerJvmThreadMeterConventions micrometerJvmThreadMeterConventions() { |
| 142 | + return new MicrometerJvmThreadMeterConventions(Tags.empty()); |
| 143 | + } |
| 144 | + |
| 145 | + } |
| 146 | + |
| 147 | + @Configuration(proxyBeanMethods = false) |
| 148 | + @ConditionalOnSemanticConventions(SemanticConventions.OPEN_TELEMETRY) |
| 149 | + static class OpenTelemetryJvmConventionsConfiguration { |
| 150 | + |
| 151 | + @Bean |
| 152 | + @ConditionalOnMissingBean(JvmMemoryMeterConventions.class) |
| 153 | + OpenTelemetryJvmMemoryMeterConventions openTelemetryJvmMemoryMeterConventions() { |
| 154 | + return new OpenTelemetryJvmMemoryMeterConventions(Tags.empty()); |
| 155 | + } |
| 156 | + |
| 157 | + @Bean |
| 158 | + @ConditionalOnMissingBean(JvmClassLoadingMeterConventions.class) |
| 159 | + OpenTelemetryJvmClassLoadingMeterConventions openTelemetryJvmClassLoadingMeterConventions() { |
| 160 | + return new OpenTelemetryJvmClassLoadingMeterConventions(); |
| 161 | + } |
| 162 | + |
| 163 | + @Bean |
| 164 | + @ConditionalOnMissingBean(JvmThreadMeterConventions.class) |
| 165 | + OpenTelemetryJvmThreadMeterConventions openTelemetryJvmThreadMeterConventions() { |
| 166 | + return new OpenTelemetryJvmThreadMeterConventions(Tags.empty()); |
| 167 | + } |
| 168 | + |
| 169 | + } |
| 170 | + |
114 | 171 | @Configuration(proxyBeanMethods = false) |
115 | 172 | @ConditionalOnClass(name = VIRTUAL_THREAD_METRICS_CLASS) |
116 | 173 | static class VirtualThreadMetricsConfiguration { |
|
0 commit comments