Skip to content

Commit eedf4a1

Browse files
Merge pull request #112 from upserve/lookup_data_metrics
add metrics for lookup data
2 parents 70967c6 + 8dd53a9 commit eedf4a1

File tree

3 files changed

+108
-0
lines changed

3 files changed

+108
-0
lines changed

src/main/java/com/upserve/uppend/metrics/AppendOnlyStoreWithMetrics.java

+46
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,18 @@ public class AppendOnlyStoreWithMetrics implements AppendOnlyStore {
2323
public static final String SCAN_BYTES_METER_METRIC_NAME = "scanBytesMeter";
2424
public static final String SCAN_KEYS_METER_METRIC_NAME = "scanKeysMeter";
2525

26+
public static final String FLUSHED_KEY_COUNT_GAUGE_METRIC_NAME = "flushedKeyCountGauge";
27+
public static final String FLUSH_COUNT_GAUGE_METRIC_NAME = "flushCountGauge";
28+
public static final String FLUSH_TIMER_GAUGE_METRIC_NAME = "flushTimerGauge";
29+
public static final String LOOKUP_MISS_COUNT_GAUGE_METRIC_NAME = "lookupMissCountGauge";
30+
public static final String LOOKUP_HIT_COUNT_GAUGE_METRIC_NAME = "lookupHitCountGauge";
31+
public static final String CACHE_MISS_COUNT_GAUGE_METRIC_NAME = "cacheMissCountGauge";
32+
public static final String CACHE_HIT_COUNT_GAUGE_METRIC_NAME = "cacheHitCountGauge";
33+
public static final String FIND_KEY_TIMER_GAUGE_METRIC_NAME = "findKeyTimerGauge";
34+
public static final String AVG_LOOKUP_DATA_SIZE_GAUGE_METRIC_NAME = "avgLookupDataSizeGauge";
35+
public static final String MAX_LOOKUP_DATA_SIZE_GAUGE_METRIC_NAME = "maxLookupDataSizeGauge";
36+
public static final String SUM_LOOKUP_DATA_SIZE_GAUGE_METRIC_NAME = "sumLookupDataSizeGauge";
37+
2638
public static final String UPPEND_APPEND_STORE = "uppendAppendStore";
2739

2840
private final AppendOnlyStore store;
@@ -66,6 +78,40 @@ public AppendOnlyStoreWithMetrics(AppendOnlyStore store, MetricRegistry metrics,
6678
readBytesMeter = metrics.meter(MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), READ_BYTES_METER_METRIC_NAME));
6779
scanBytesMeter = metrics.meter(MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), SCAN_BYTES_METER_METRIC_NAME));
6880
scanKeysMeter = metrics.meter(MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), SCAN_KEYS_METER_METRIC_NAME));
81+
82+
metrics.register(
83+
MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), FLUSHED_KEY_COUNT_GAUGE_METRIC_NAME),
84+
(Gauge<Long>) getLookupDataMetrics()::getFlushedKeyCount);
85+
metrics.register(
86+
MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), FLUSH_COUNT_GAUGE_METRIC_NAME),
87+
(Gauge<Long>) getLookupDataMetrics()::getFlushCount);
88+
metrics.register(
89+
MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), FLUSH_TIMER_GAUGE_METRIC_NAME),
90+
(Gauge<Long>) getLookupDataMetrics()::getFlushTimer);
91+
metrics.register(
92+
MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), LOOKUP_MISS_COUNT_GAUGE_METRIC_NAME),
93+
(Gauge<Long>) getLookupDataMetrics()::getLookupMissCount);
94+
metrics.register(
95+
MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), LOOKUP_HIT_COUNT_GAUGE_METRIC_NAME),
96+
(Gauge<Long>) getLookupDataMetrics()::getLookupHitCount);
97+
metrics.register(
98+
MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), CACHE_MISS_COUNT_GAUGE_METRIC_NAME),
99+
(Gauge<Long>) getLookupDataMetrics()::getCacheMissCount);
100+
metrics.register(
101+
MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), CACHE_HIT_COUNT_GAUGE_METRIC_NAME),
102+
(Gauge<Long>) getLookupDataMetrics()::getCacheHitCount);
103+
metrics.register(
104+
MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), FIND_KEY_TIMER_GAUGE_METRIC_NAME),
105+
(Gauge<Long>) getLookupDataMetrics()::getFindKeyTimer);
106+
metrics.register(
107+
MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), AVG_LOOKUP_DATA_SIZE_GAUGE_METRIC_NAME),
108+
(Gauge<Double>) getLookupDataMetrics()::getAvgLookupDataSize);
109+
metrics.register(
110+
MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), MAX_LOOKUP_DATA_SIZE_GAUGE_METRIC_NAME),
111+
(Gauge<Long>) getLookupDataMetrics()::getMaxLookupDataSize);
112+
metrics.register(
113+
MetricRegistry.name(rootName, UPPEND_APPEND_STORE, store.getName(), SUM_LOOKUP_DATA_SIZE_GAUGE_METRIC_NAME),
114+
(Gauge<Long>) getLookupDataMetrics()::getSumLookupDataSize);
69115
}
70116

71117
@Override

src/main/java/com/upserve/uppend/metrics/LookupDataMetrics.java

+44
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,50 @@ private LookupDataMetrics(
7676
this.sumLookupDataSize = sumLookupDataSize;
7777
}
7878

79+
public long getFlushedKeyCount() {
80+
return flushedKeyCount;
81+
}
82+
83+
public long getFlushCount() {
84+
return flushCount;
85+
}
86+
87+
public long getFlushTimer() {
88+
return flushTimer;
89+
}
90+
91+
public long getLookupMissCount() {
92+
return lookupMissCount;
93+
}
94+
95+
public long getLookupHitCount() {
96+
return lookupHitCount;
97+
}
98+
99+
public long getCacheMissCount() {
100+
return cacheMissCount;
101+
}
102+
103+
public long getCacheHitCount() {
104+
return cacheHitCount;
105+
}
106+
107+
public long getFindKeyTimer() {
108+
return findKeyTimer;
109+
}
110+
111+
public double getAvgLookupDataSize() {
112+
return avgLookupDataSize;
113+
}
114+
115+
public long getMaxLookupDataSize() {
116+
return maxLookupDataSize;
117+
}
118+
119+
public long getSumLookupDataSize() {
120+
return sumLookupDataSize;
121+
}
122+
79123
@Override
80124
public String toString() {
81125
return "LookupDataMetrics{" +

src/test/java/com/upserve/uppend/metrics/AppendOnlyStoreWithMetricsTest.java

+18
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ public class AppendOnlyStoreWithMetricsTest {
3333
public void before() {
3434
metrics = new MetricRegistry();
3535
when(store.getName()).thenReturn("testStore");
36+
LookupDataMetrics lookupDataMetrics = new LookupDataMetrics(new LookupDataMetrics.Adders(), new LongSummaryStatistics());
37+
when(store.getLookupDataMetrics()).thenReturn(lookupDataMetrics);
3638
instance = new AppendOnlyStoreWithMetrics(store, metrics, "MetricsRoot");
3739
}
3840

@@ -174,6 +176,22 @@ public void testGetBlockLongStats() {
174176
assertEquals(v, instance.getBlockedLongMetrics());
175177
}
176178

179+
@Test
180+
public void testGaugeMetrics() {
181+
// The underlying store is mocked, so just test that these are registered
182+
assertEquals(0L, metrics.gauge(MetricRegistry.name("MetricsRoot", UPPEND_APPEND_STORE, store.getName(), FLUSHED_KEY_COUNT_GAUGE_METRIC_NAME), null).getValue());
183+
assertEquals(0L, metrics.gauge(MetricRegistry.name("MetricsRoot", UPPEND_APPEND_STORE, store.getName(), FLUSH_COUNT_GAUGE_METRIC_NAME), null).getValue());
184+
assertEquals(0L, metrics.gauge(MetricRegistry.name("MetricsRoot", UPPEND_APPEND_STORE, store.getName(), FLUSH_TIMER_GAUGE_METRIC_NAME), null).getValue());
185+
assertEquals(0L, metrics.gauge(MetricRegistry.name("MetricsRoot", UPPEND_APPEND_STORE, store.getName(), LOOKUP_MISS_COUNT_GAUGE_METRIC_NAME), null).getValue());
186+
assertEquals(0L, metrics.gauge(MetricRegistry.name("MetricsRoot", UPPEND_APPEND_STORE, store.getName(), LOOKUP_HIT_COUNT_GAUGE_METRIC_NAME), null).getValue());
187+
assertEquals(0L, metrics.gauge(MetricRegistry.name("MetricsRoot", UPPEND_APPEND_STORE, store.getName(), CACHE_MISS_COUNT_GAUGE_METRIC_NAME), null).getValue());
188+
assertEquals(0L, metrics.gauge(MetricRegistry.name("MetricsRoot", UPPEND_APPEND_STORE, store.getName(), CACHE_HIT_COUNT_GAUGE_METRIC_NAME), null).getValue());
189+
assertEquals(0L, metrics.gauge(MetricRegistry.name("MetricsRoot", UPPEND_APPEND_STORE, store.getName(), FIND_KEY_TIMER_GAUGE_METRIC_NAME), null).getValue());
190+
assertEquals(0.0, metrics.gauge(MetricRegistry.name("MetricsRoot", UPPEND_APPEND_STORE, store.getName(), AVG_LOOKUP_DATA_SIZE_GAUGE_METRIC_NAME), null).getValue());
191+
assertEquals(0L, metrics.gauge(MetricRegistry.name("MetricsRoot", UPPEND_APPEND_STORE, store.getName(), MAX_LOOKUP_DATA_SIZE_GAUGE_METRIC_NAME), null).getValue());
192+
assertEquals(0L, metrics.gauge(MetricRegistry.name("MetricsRoot", UPPEND_APPEND_STORE, store.getName(), SUM_LOOKUP_DATA_SIZE_GAUGE_METRIC_NAME), null).getValue());
193+
}
194+
177195
@Test
178196
public void testKeyCount() {
179197
when(store.keyCount()).thenReturn(5L);

0 commit comments

Comments
 (0)