Skip to content

Commit 2d70c82

Browse files
authored
Merge pull request aol#376 from philip-clarke/SlidingTimeWindowArrayReservoir
Sliding time window array reservoir
2 parents a951cb9 + 40ea257 commit 2d70c82

File tree

5 files changed

+22
-7
lines changed

5 files changed

+22
-7
lines changed

micro-event-metrics/readme.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,14 @@ Number of active jobs to cache in memory
108108

109109
```text
110110
com.aol.micro.server.event.metrics.MetricsCatcher.requests-started
111+
com.aol.micro.server.event.metrics.MetricsCatcher.requests-started-interval-count
111112
com.aol.micro.server.event.metrics.MetricsCatcher.request-start-<TYPE>
113+
com.aol.micro.server.event.metrics.MetricsCatcher.request-start-<TYPE>-interval-count
112114
com.aol.micro.server.event.metrics.MetricsCatcher.requests-completed
115+
com.aol.micro.server.event.metrics.MetricsCatcher.requests-completed-interval-type
113116
com.aol.micro.server.event.metrics.MetricsCatcher.request-completed-<TYPE>
117+
com.aol.micro.server.event.metrics.MetricsCatcher.request-completed-<TYPE>-interval-count
118+
114119
```
115120

116121
#### Timers :
@@ -172,6 +177,8 @@ event.metrics.capture.jobs.by.type=true # jobsByType,
172177
event.metrics.capture.number.of.queries=10000 # numQueries,
173178
event.metrics.capture.queries.minutes=180 # holdQueriesForMinutes,
174179
event.metrics.capture.number.of.jobs=10000 # numJobs,
175-
event.metrics.capture.jobs.minutes=180
180+
event.metrics.capture.jobs.minutes=180,
181+
event.metrics.capture.timer.interval.seconds=10
182+
event.metrics.capture.jobs.prefix=null
176183
```
177184

micro-event-metrics/src/main/java/com/aol/micro/server/event/metrics/Configuration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class Configuration {
2424

2525
private final int numJobs;
2626
private final int holdJobsForMinutes;
27+
private final int timerIntervalSeconds;
2728
private final String prefix;
2829

2930
@Autowired
@@ -35,6 +36,7 @@ public Configuration(@Value("${event.metrics.capture.errors.by.type:true}") bool
3536
@Value("${event.metrics.capture.queries.minutes:180}") int holdQueriesForMinutes,
3637
@Value("${event.metrics.capture.number.of.jobs:10000}") int numJobs,
3738
@Value("${event.metrics.capture.jobs.minutes:180}") int holdJobsForMinutes,
39+
@Value("${event.metrics.capture.timer.interval.seconds:10}") int timerIntervalSeconds,
3840
@Value("${event.metrics.capture.jobs.prefix:#{null}}") String prefix) {
3941
super();
4042
this.errorsByType = errorsByType;
@@ -45,6 +47,7 @@ public Configuration(@Value("${event.metrics.capture.errors.by.type:true}") bool
4547
this.holdQueriesForMinutes = holdQueriesForMinutes;
4648
this.numJobs = numJobs;
4749
this.holdJobsForMinutes = holdJobsForMinutes;
50+
this.timerIntervalSeconds = timerIntervalSeconds;
4851
this.prefix = Optional.ofNullable(prefix)
4952
.orElseGet(() -> MetricsCatcher.class.getTypeName());
5053
}

micro-event-metrics/src/main/java/com/aol/micro/server/event/metrics/MetricsCatcher.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.aol.micro.server.events.GenericEvent;
44
import com.aol.micro.server.spring.metrics.InstantGauge;
5+
import com.codahale.metrics.SlidingTimeWindowArrayReservoir;
6+
import com.codahale.metrics.Timer;
57
import org.springframework.beans.factory.annotation.Autowired;
68
import org.springframework.stereotype.Component;
79

@@ -20,6 +22,7 @@
2022
import com.google.common.eventbus.Subscribe;
2123

2224
import java.util.Objects;
25+
import java.util.concurrent.TimeUnit;
2326

2427
@Component
2528
public class MetricsCatcher<T> {
@@ -59,8 +62,7 @@ public void requestStart(AddQuery<T> data) {
5962
registry.meter(queryStartName(rd) + "-meter")
6063
.mark();
6164

62-
queries.start(rd.getCorrelationId(), registry.timer(queryEndName(rd) + "-timer")
63-
.time());
65+
queries.start(rd.getCorrelationId(), timer(queryEndName(rd) + "-timer").time());
6466
registry.counter(prefix + ".requests-active-" + rd.getType() + "-count")
6567
.inc();
6668
((InstantGauge) registry.gauge(prefix + ".requests-started-" + rd.getType() + "-interval-count",
@@ -135,8 +137,7 @@ public void jobStarted(JobStartEvent data) {
135137
registry.meter(prefix + ".job-meter-" + data.getType())
136138
.mark();
137139

138-
jobs.start(data.getCorrelationId(), registry.timer(prefix + ".job-timer-" + data.getType())
139-
.time());
140+
jobs.start(data.getCorrelationId(), timer(prefix + ".job-timer-" + data.getType()).time());
140141
registry.counter(prefix + ".jobs-active-" + data.getType() + "-count")
141142
.inc();
142143
}
@@ -223,4 +224,8 @@ public void genericEvent(GenericEvent event) {
223224
private String name(ErrorCode c) {
224225
return prefix + ".error-" + c.getSeverity() + "-" + c.getErrorId();
225226
}
227+
228+
private Timer timer (String name) {
229+
return registry.timer(name, () -> new Timer(new SlidingTimeWindowArrayReservoir(configuration.getTimerIntervalSeconds(), TimeUnit.SECONDS)));
230+
}
226231
}

micro-event-metrics/src/test/java/com/aol/micro/server/event/metrics/MetricsCatcherConfigOffTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public void setup() {
2727
registry = new MetricRegistry();
2828
bus = new EventBus();
2929
config = new Configuration(
30-
false, false, false, false, 5, 6, 7, 8, "bob");
30+
false, false, false, false, 5, 6, 7, 8, 10, "bob");
3131
catcher = new MetricsCatcher<>(
3232
registry, bus, config);
3333
}

micro-event-metrics/src/test/java/com/aol/micro/server/event/metrics/MetricsCatcherTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void setup() {
2929
registry = new MetricRegistry();
3030
bus = new EventBus();
3131
config = new Configuration(
32-
true, true, true, true, 5, 6, 7, 8, "bob");
32+
true, true, true, true, 5, 6, 7, 8, 10,"bob");
3333
catcher = new MetricsCatcher<>(
3434
registry, bus, config);
3535
}

0 commit comments

Comments
 (0)