Skip to content
This repository was archived by the owner on Aug 6, 2024. It is now read-only.

Commit 84a2092

Browse files
committed
Fix review comments. Included specific resources to filter, move our version metric to be part of auto configuration.
1 parent 5f08e04 commit 84a2092

File tree

4 files changed

+56
-12
lines changed

4 files changed

+56
-12
lines changed

wavefront-spring-boot-bom/pom.xml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,11 @@
5252
<directory>src/main/resources</directory>
5353
</resource>
5454
<resource>
55-
<directory>src/main/resources/</directory>
55+
<directory>src/main/resources</directory>
5656
<filtering>true</filtering>
57+
<includes>
58+
<include>META-INF/wavefront-spring-boot/*.properties</include>
59+
</includes>
5760
</resource>
5861
</resources>
5962
<plugins>

wavefront-spring-boot/src/main/java/com/wavefront/spring/autoconfigure/WavefrontMetricsConfiguration.java

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
11
package com.wavefront.spring.autoconfigure;
22

3-
import java.util.HashMap;
4-
import java.util.Map;
5-
import java.util.stream.Collectors;
6-
3+
import com.wavefront.internal.reporter.WavefrontInternalReporter;
4+
import com.wavefront.internal_reporter_java.io.dropwizard.metrics5.MetricName;
75
import com.wavefront.sdk.appagent.jvm.reporter.WavefrontJvmReporter;
6+
import com.wavefront.sdk.common.Utils;
87
import com.wavefront.sdk.common.WavefrontSender;
98
import com.wavefront.sdk.common.application.ApplicationTags;
10-
import io.micrometer.core.instrument.Tag;
11-
import io.micrometer.core.instrument.Tags;
12-
import io.micrometer.wavefront.WavefrontConfig;
13-
import io.micrometer.wavefront.WavefrontMeterRegistry;
149

1510
import org.springframework.beans.factory.ObjectProvider;
1611
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
@@ -22,6 +17,17 @@
2217
import org.springframework.context.annotation.Bean;
2318
import org.springframework.context.annotation.Configuration;
2419

20+
import java.util.Collections;
21+
import java.util.HashMap;
22+
import java.util.Map;
23+
import java.util.concurrent.TimeUnit;
24+
import java.util.stream.Collectors;
25+
26+
import io.micrometer.core.instrument.Tag;
27+
import io.micrometer.core.instrument.Tags;
28+
import io.micrometer.wavefront.WavefrontConfig;
29+
import io.micrometer.wavefront.WavefrontMeterRegistry;
30+
2531
/**
2632
* Configuration for Wavefront metrics.
2733
*
@@ -31,6 +37,7 @@
3137
@Configuration(proxyBeanMethods = false)
3238
@ConditionalOnBean(WavefrontSender.class)
3339
class WavefrontMetricsConfiguration {
40+
public static final String SDK_INTERNAL_METRIC_PREFIX = "~sdk.java.wavefront_spring_boot_starter";
3441

3542
@Bean
3643
@ConditionalOnMissingBean
@@ -43,6 +50,18 @@ WavefrontJvmReporter wavefrontJvmReporter(WavefrontSender wavefrontSender, Appli
4350
return reporter;
4451
}
4552

53+
@Bean
54+
@ConditionalOnMissingBean
55+
WavefrontInternalReporter wavefrontInternalReporter(WavefrontSender wavefrontSender,
56+
WavefrontConfig wavefrontConfig) {
57+
WavefrontInternalReporter reporter = new WavefrontInternalReporter.Builder().
58+
prefixedWith(SDK_INTERNAL_METRIC_PREFIX).withSource(wavefrontConfig.source()).
59+
build(wavefrontSender);
60+
Double sdkVersion = Utils.getSemVerGauge("wavefront-spring-boot");
61+
reporter.newGauge(new MetricName("version", Collections.EMPTY_MAP), () -> (() -> sdkVersion));
62+
reporter.start(1, TimeUnit.MINUTES);
63+
return reporter;
64+
}
4665

4766
@Configuration(proxyBeanMethods = false)
4867
@ConditionalOnClass({ WavefrontMeterRegistry.class, MeterRegistryCustomizer.class })

wavefront-spring-boot/src/main/java/com/wavefront/spring/autoconfigure/WavefrontSleuthSpanHandler.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ final class WavefrontSleuthSpanHandler extends SpanHandler implements Runnable,
7575

7676
private final static String DEFAULT_SOURCE = "wavefront-spring-boot";
7777
private final static String WAVEFRONT_GENERATED_COMPONENT = "wavefront-generated";
78-
public static final String SDK_METRIC_PREFIX = "~sdk.java.wavefront_spring_boot_starter.";
7978

8079
final LinkedBlockingQueue<Pair<TraceContext, MutableSpan>> spanBuffer;
8180
final WavefrontSender wavefrontSender;
@@ -132,8 +131,6 @@ final class WavefrontSleuthSpanHandler extends SpanHandler implements Runnable,
132131
this.spanBuffer = new LinkedBlockingQueue<>(maxQueueSize);
133132

134133
// init internal metrics
135-
double sdkVersion = Utils.getSemVerGauge("wavefront-spring-boot");
136-
meterRegistry.gauge(SDK_METRIC_PREFIX + "version", sdkVersion);
137134
meterRegistry.gauge("reporter.queue.size", spanBuffer, sb -> (double) sb.size());
138135
meterRegistry.gauge("reporter.queue.remaining_capacity", spanBuffer,
139136
sb -> (double) sb.remainingCapacity());

wavefront-spring-boot/src/test/java/com/wavefront/spring/autoconfigure/WavefrontAutoConfigurationTests.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import brave.Tracer;
88
import brave.TracingCustomizer;
99
import brave.handler.SpanHandler;
10+
11+
import com.wavefront.internal.reporter.WavefrontInternalReporter;
1012
import com.wavefront.opentracing.WavefrontTracer;
1113
import com.wavefront.opentracing.reporting.Reporter;
1214
import com.wavefront.sdk.appagent.jvm.reporter.WavefrontJvmReporter;
@@ -136,6 +138,29 @@ void applicationTagsAreNotExportedToNonWavefrontRegistry() {
136138
});
137139
}
138140

141+
@Test
142+
void internalReporterIsConfiguredWhenNoneExists() {
143+
this.contextRunner
144+
.with(wavefrontMetrics(() -> mock(WavefrontSender.class)))
145+
.run((context) -> assertThat(context).hasSingleBean(WavefrontInternalReporter.class));
146+
}
147+
148+
@Test
149+
void internalReporterCanBeCustomized() {
150+
WavefrontInternalReporter reporter = mock(WavefrontInternalReporter.class);
151+
this.contextRunner
152+
.with(wavefrontMetrics(() -> mock(WavefrontSender.class)))
153+
.withBean(WavefrontInternalReporter.class, () -> reporter)
154+
.run((context) -> assertThat(context).getBean(WavefrontInternalReporter.class).isEqualTo(reporter));
155+
}
156+
157+
@Test
158+
void internalReporterNotConfiguredWithoutWavefrontSender() {
159+
this.contextRunner
160+
.with(metrics())
161+
.run(context -> assertThat(context).doesNotHaveBean(WavefrontInternalReporter.class));
162+
}
163+
139164
@Test
140165
void jvmReporterIsConfiguredWhenNoneExists() {
141166
this.contextRunner

0 commit comments

Comments
 (0)