Skip to content

Commit a4a9fd5

Browse files
Copilottrask
andcommitted
Remove micrometer dependency and replace with OpenTelemetry metrics
Co-authored-by: trask <218610+trask@users.noreply.github.com>
1 parent b055e7e commit a4a9fd5

File tree

5 files changed

+34
-64
lines changed

5 files changed

+34
-64
lines changed

reference-application/build.gradle.kts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@ dependencies {
2222
implementation("org.springframework.boot:spring-boot-starter-web")
2323
implementation("org.springframework.boot:spring-boot-starter-actuator")
2424

25-
// Micrometer for additional metrics
26-
implementation("io.micrometer:micrometer-registry-prometheus")
27-
2825
// Java agent
2926
agent("io.opentelemetry.javaagent:opentelemetry-javaagent:2.20.1")
3027

reference-application/src/main/java/io/opentelemetry/example/FibonacciController.java

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package io.opentelemetry.example;
22

3-
import io.micrometer.core.instrument.Counter;
4-
import io.micrometer.core.instrument.Timer;
53
import io.opentelemetry.api.OpenTelemetry;
64
import io.opentelemetry.api.common.Attributes;
5+
import io.opentelemetry.api.metrics.LongCounter;
6+
import io.opentelemetry.api.metrics.Meter;
77
import io.opentelemetry.api.trace.Span;
88
import io.opentelemetry.api.trace.SpanKind;
99
import io.opentelemetry.api.trace.StatusCode;
@@ -23,19 +23,22 @@
2323
public class FibonacciController {
2424
private static final Logger logger = LoggerFactory.getLogger(FibonacciController.class);
2525

26-
@Autowired private Counter fibonacciCounter;
27-
28-
@Autowired private Timer fibonacciTimer;
29-
3026
private final Tracer tracer;
27+
private final LongCounter fibonacciCounter;
3128

3229
public FibonacciController(@Autowired OpenTelemetry openTelemetry) {
3330
this.tracer = openTelemetry.getTracer("dice-server", "1.0.0");
31+
Meter meter = openTelemetry.getMeter("dice-server");
32+
this.fibonacciCounter =
33+
meter
34+
.counterBuilder("fibonacci_calculations_total")
35+
.setDescription("Total number of fibonacci calculations")
36+
.build();
3437
}
3538

3639
@GetMapping("/fibonacci")
3740
public Map<String, Object> fibonacci(@RequestParam("n") int n) {
38-
Timer.Sample sample = Timer.start();
41+
long startTime = System.nanoTime();
3942

4043
Span span =
4144
tracer
@@ -55,26 +58,28 @@ public Map<String, Object> fibonacci(@RequestParam("n") int n) {
5558

5659
logger.info("Calculating fibonacci for n={}", n);
5760

58-
long startTime = System.nanoTime();
61+
long computationStartTime = System.nanoTime();
5962
BigInteger result = calculateFibonacci(n);
60-
long duration = System.nanoTime() - startTime;
63+
long computationDuration = System.nanoTime() - computationStartTime;
6164

62-
fibonacciCounter.increment();
63-
sample.stop(fibonacciTimer);
65+
fibonacciCounter.add(1);
66+
long totalDuration = System.nanoTime() - startTime;
6467

6568
span.addEvent(
6669
"fibonacci-calculated",
6770
Attributes.builder()
6871
.put("fibonacci.result_length", result.toString().length())
69-
.put("fibonacci.duration_ns", duration)
72+
.put("fibonacci.computation_duration_ns", computationDuration)
73+
.put("fibonacci.total_duration_ns", totalDuration)
7074
.build());
7175

72-
logger.info("Fibonacci({}) = {} (computed in {}ms)", n, result, duration / 1_000_000);
76+
logger.info(
77+
"Fibonacci({}) = {} (computed in {}ms)", n, result, computationDuration / 1_000_000);
7378

7479
Map<String, Object> response = new HashMap<>();
7580
response.put("n", n);
7681
response.put("result", result.toString());
77-
response.put("duration_ms", duration / 1_000_000);
82+
response.put("duration_ms", computationDuration / 1_000_000);
7883

7984
return response;
8085
} catch (Exception e) {
Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package io.opentelemetry.example;
22

3-
import io.micrometer.core.instrument.Counter;
4-
import io.micrometer.core.instrument.MeterRegistry;
5-
import io.micrometer.core.instrument.Timer;
63
import io.opentelemetry.api.GlobalOpenTelemetry;
74
import io.opentelemetry.api.OpenTelemetry;
85
import org.springframework.boot.SpringApplication;
@@ -20,32 +17,4 @@ public static void main(String[] args) {
2017
public OpenTelemetry openTelemetry() {
2118
return GlobalOpenTelemetry.get();
2219
}
23-
24-
@Bean
25-
public Counter diceRollCounter(MeterRegistry meterRegistry) {
26-
return Counter.builder("dice_rolls_total")
27-
.description("Total number of dice rolls")
28-
.register(meterRegistry);
29-
}
30-
31-
@Bean
32-
public Timer diceRollTimer(MeterRegistry meterRegistry) {
33-
return Timer.builder("dice_roll_duration")
34-
.description("Time taken to roll dice")
35-
.register(meterRegistry);
36-
}
37-
38-
@Bean
39-
public Counter fibonacciCounter(MeterRegistry meterRegistry) {
40-
return Counter.builder("fibonacci_calculations_total")
41-
.description("Total number of fibonacci calculations")
42-
.register(meterRegistry);
43-
}
44-
45-
@Bean
46-
public Timer fibonacciTimer(MeterRegistry meterRegistry) {
47-
return Timer.builder("fibonacci_duration")
48-
.description("Time taken to calculate fibonacci")
49-
.register(meterRegistry);
50-
}
5120
}

reference-application/src/main/java/io/opentelemetry/example/RollController.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package io.opentelemetry.example;
22

3-
import io.micrometer.core.instrument.Counter;
4-
import io.micrometer.core.instrument.Timer;
53
import io.opentelemetry.api.OpenTelemetry;
64
import io.opentelemetry.api.baggage.Baggage;
75
import io.opentelemetry.api.baggage.BaggageBuilder;
86
import io.opentelemetry.api.common.Attributes;
7+
import io.opentelemetry.api.metrics.LongCounter;
8+
import io.opentelemetry.api.metrics.Meter;
99
import io.opentelemetry.api.trace.Span;
1010
import io.opentelemetry.api.trace.SpanKind;
1111
import io.opentelemetry.api.trace.StatusCode;
@@ -28,22 +28,25 @@ public class RollController {
2828

2929
@Autowired private OpenTelemetry openTelemetry;
3030

31-
@Autowired private Counter diceRollCounter;
32-
33-
@Autowired private Timer diceRollTimer;
34-
3531
private final Tracer tracer;
32+
private final LongCounter diceRollCounter;
3633

3734
public RollController(@Autowired OpenTelemetry openTelemetry) {
3835
this.tracer = openTelemetry.getTracer("dice-server", "1.0.0");
36+
Meter meter = openTelemetry.getMeter("dice-server");
37+
this.diceRollCounter =
38+
meter
39+
.counterBuilder("dice_rolls_total")
40+
.setDescription("Total number of dice rolls")
41+
.build();
3942
}
4043

4144
@GetMapping("/rolldice")
4245
public Map<String, Object> rollDice(
4346
@RequestParam("player") Optional<String> player,
4447
@RequestParam("rolls") Optional<Integer> rolls) {
4548

46-
Timer.Sample sample = Timer.start();
49+
long startTime = System.nanoTime();
4750

4851
Span span =
4952
tracer
@@ -72,8 +75,9 @@ public Map<String, Object> rollDice(
7275
results[i] = rollSingleDie();
7376
}
7477

75-
diceRollCounter.increment();
76-
sample.stop(diceRollTimer);
78+
// Record metrics using OpenTelemetry
79+
diceRollCounter.add(1);
80+
long duration = System.nanoTime() - startTime;
7781

7882
String playerName = player.orElse("Anonymous player");
7983
if (numRolls == 1) {
@@ -91,6 +95,7 @@ public Map<String, Object> rollDice(
9195
Attributes.builder()
9296
.put("dice.result", java.util.Arrays.toString(results))
9397
.put("dice.sum", java.util.Arrays.stream(results).sum())
98+
.put("dice.duration_ms", duration / 1_000_000)
9499
.build());
95100

96101
Map<String, Object> response = new HashMap<>();

reference-application/src/main/resources/application.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,12 @@ management:
1010
endpoints:
1111
web:
1212
exposure:
13-
include: health,info,metrics,prometheus
13+
include: health,info,metrics
1414
endpoint:
1515
health:
1616
show-details: always
1717
metrics:
1818
enabled: true
19-
prometheus:
20-
enabled: true
21-
metrics:
22-
export:
23-
prometheus:
24-
enabled: true
2519

2620
# Logging configuration
2721
logging:

0 commit comments

Comments
 (0)