|
1 | 1 | /* |
2 | | - * Copyright (c) 2023, 2024 Oracle and/or its affiliates. |
| 2 | + * Copyright (c) 2023, 2025 Oracle and/or its affiliates. |
3 | 3 | * |
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | 5 | * you may not use this file except in compliance with the License. |
|
46 | 46 | import io.micrometer.core.instrument.Meter; |
47 | 47 | import io.micrometer.core.instrument.MeterRegistry; |
48 | 48 | import io.micrometer.core.instrument.Timer; |
49 | | -import io.micrometer.core.instrument.composite.CompositeMeterRegistry; |
50 | 49 | import io.micrometer.core.instrument.search.Search; |
51 | | -import io.micrometer.prometheus.PrometheusMeterRegistry; |
52 | 50 |
|
53 | 51 | /** |
54 | 52 | * Implementation of {@link io.helidon.metrics.api.MeterRegistry} for the Micrometer adapter. |
@@ -127,88 +125,6 @@ static Builder builder( |
127 | 125 | return new Builder(delegate, metricsFactory); |
128 | 126 | } |
129 | 127 |
|
130 | | - /** |
131 | | - * Creates a new meter registry which wraps an newly-created Micrometer |
132 | | - * {@link io.micrometer.core.instrument.composite.CompositeMeterRegistry} with a Prometheus meter registry |
133 | | - * automatically added, using the specified clock. |
134 | | - * |
135 | | - * @param metricsFactory metrics factory the new meter registry should use in creating and registering meters |
136 | | - * @param clock default clock to associate with the new meter registry |
137 | | - * @param metersProviders providers of built-in meters to be registered upon creation of the meter registry |
138 | | - * @return new wrapper around a new Micrometer composite meter registry |
139 | | - */ |
140 | | - static MMeterRegistry create(MicrometerMetricsFactory metricsFactory, |
141 | | - Clock clock, |
142 | | - Collection<MetersProvider> metersProviders) { |
143 | | - CompositeMeterRegistry delegate = new CompositeMeterRegistry(ClockWrapper.create(clock)); |
144 | | - // The specified clock is already a Helidon one so pass it directly; no need to wrap it. |
145 | | - return create(delegate, |
146 | | - metricsFactory, |
147 | | - metricsFactory.metricsConfig(), |
148 | | - clock, |
149 | | - metersProviders); |
150 | | - } |
151 | | - |
152 | | - static MMeterRegistry create(io.micrometer.core.instrument.MeterRegistry delegate, |
153 | | - MicrometerMetricsFactory metricsFactory, |
154 | | - MetricsConfig metricsConfig, |
155 | | - Collection<MetersProvider> metersProviders) { |
156 | | - |
157 | | - return create(delegate, metricsFactory, metricsConfig, MClock.create(delegate.config().clock()), metersProviders); |
158 | | - } |
159 | | - |
160 | | - static MMeterRegistry create(io.micrometer.core.instrument.MeterRegistry delegate, |
161 | | - MicrometerMetricsFactory metricsFactory, |
162 | | - MetricsConfig metricsConfig, |
163 | | - Collection<MetersProvider> metersProviders, |
164 | | - Consumer<io.helidon.metrics.api.Meter> onAddListener, |
165 | | - Consumer<io.helidon.metrics.api.Meter> onRemoveListener) { |
166 | | - MMeterRegistry result = create(delegate, metricsFactory, metricsConfig, MClock.create(delegate.config().clock())); |
167 | | - result.onMeterAdded(onAddListener) |
168 | | - .onMeterRemoved(onRemoveListener); |
169 | | - return applyMetersProvidersToRegistry(metricsFactory, result, metersProviders); |
170 | | - } |
171 | | - |
172 | | - static MMeterRegistry create(io.micrometer.core.instrument.MeterRegistry delegate, |
173 | | - MicrometerMetricsFactory metricsFactory, |
174 | | - MetricsConfig metricsConfig, |
175 | | - Clock clock, |
176 | | - Collection<MetersProvider> metersProviders) { |
177 | | - |
178 | | - return applyMetersProvidersToRegistry(metricsFactory, |
179 | | - create(delegate, |
180 | | - metricsFactory, |
181 | | - metricsConfig, |
182 | | - clock), |
183 | | - metersProviders); |
184 | | - } |
185 | | - |
186 | | - static MMeterRegistry create(io.micrometer.core.instrument.MeterRegistry delegate, |
187 | | - MicrometerMetricsFactory metricsFactory, |
188 | | - MetricsConfig metricsConfig, |
189 | | - Clock clock) { |
190 | | - |
191 | | - io.micrometer.core.instrument.MeterRegistry preppedDelegate = |
192 | | - ensurePrometheusRegistryIsPresent(delegate, |
193 | | - metricsFactory.metricsConfig()); |
194 | | - |
195 | | - return new MMeterRegistry(preppedDelegate, |
196 | | - metricsFactory, |
197 | | - metricsConfig, |
198 | | - clock); |
199 | | - } |
200 | | - |
201 | | - static MMeterRegistry create(io.micrometer.core.instrument.MeterRegistry delegate, |
202 | | - MicrometerMetricsFactory metricsFactory, |
203 | | - Collection<MetersProvider> metersProviders) { |
204 | | - |
205 | | - return create(delegate, |
206 | | - metricsFactory, |
207 | | - metricsFactory.metricsConfig(), |
208 | | - MClock.create(delegate.config().clock()), |
209 | | - metersProviders); |
210 | | - } |
211 | | - |
212 | 128 | static MMeterRegistry applyMetersProvidersToRegistry(MetricsFactory factory, |
213 | 129 | MMeterRegistry registry, |
214 | 130 | Collection<MetersProvider> metersProviders) { |
@@ -589,21 +505,6 @@ HM extends MMeter<M>> MMeter<M> meterIfRegistered(MMeter.Builder<?, M, HB, HM> m |
589 | 505 | return null; |
590 | 506 | } |
591 | 507 |
|
592 | | - private static io.micrometer.core.instrument.MeterRegistry ensurePrometheusRegistryIsPresent( |
593 | | - io.micrometer.core.instrument.MeterRegistry meterRegistry, |
594 | | - MetricsConfig metricsConfig) { |
595 | | - |
596 | | - if (meterRegistry instanceof CompositeMeterRegistry compositeMeterRegistry) { |
597 | | - if (compositeMeterRegistry.getRegistries() |
598 | | - .stream() |
599 | | - .noneMatch(r -> r instanceof PrometheusMeterRegistry)) { |
600 | | - compositeMeterRegistry.add( |
601 | | - new PrometheusMeterRegistry(key -> metricsConfig.lookupConfig(key).orElse(null))); |
602 | | - } |
603 | | - } |
604 | | - return meterRegistry; |
605 | | - } |
606 | | - |
607 | 508 | private <M extends Meter, |
608 | 509 | HB extends MMeter.Builder<?, M, HB, HM>, |
609 | 510 | HM extends MMeter<M>> io.helidon.metrics.api.Meter getOrCreate(HB mBuilder, |
@@ -895,29 +796,4 @@ public R build() { |
895 | 796 | } |
896 | 797 | } |
897 | 798 |
|
898 | | - /** |
899 | | - * Micrometer-friendly wrapper around a Helidon clock. |
900 | | - */ |
901 | | - private static class ClockWrapper implements io.micrometer.core.instrument.Clock { |
902 | | - |
903 | | - private final Clock neutralClock; |
904 | | - |
905 | | - private ClockWrapper(Clock neutralClock) { |
906 | | - this.neutralClock = neutralClock; |
907 | | - } |
908 | | - |
909 | | - static ClockWrapper create(Clock clock) { |
910 | | - return new ClockWrapper(clock); |
911 | | - } |
912 | | - |
913 | | - @Override |
914 | | - public long wallTime() { |
915 | | - return neutralClock.wallTime(); |
916 | | - } |
917 | | - |
918 | | - @Override |
919 | | - public long monotonicTime() { |
920 | | - return neutralClock.monotonicTime(); |
921 | | - } |
922 | | - } |
923 | 799 | } |
0 commit comments