Skip to content

Commit 82b48df

Browse files
committed
Filter based on time series, not metric.
1 parent e19ecd4 commit 82b48df

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

simpleclient/src/main/java/io/prometheus/client/CollectorRegistry.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,19 @@ private void findNextElement() {
189189
}
190190

191191
private Collector.MetricFamilySamples filter(Collector.MetricFamilySamples next) {
192-
if (includedNames.isEmpty() || includedNames.contains(next.name)) {
192+
if (includedNames.isEmpty()) {
193193
return next;
194194
} else {
195-
return null;
195+
Iterator<Collector.MetricFamilySamples.Sample> it = next.samples.iterator();
196+
while (it.hasNext()) {
197+
if (!includedNames.contains(it.next().name)) {
198+
it.remove();
199+
}
200+
}
201+
if (next.samples.size() == 0) {
202+
return null;
203+
}
204+
return next;
196205
}
197206
}
198207

simpleclient/src/test/java/io/prometheus/client/CollectorRegistryTest.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,15 +80,20 @@ public void testMetricFamilySamples_filterNames() {
8080
Collector ec = new EmptyCollector().register(registry);
8181
SkippedCollector sr = new SkippedCollector().register(registry);
8282
PartiallyFilterCollector pfr = new PartiallyFilterCollector().register(registry);
83-
HashSet<String> names = new HashSet<String>();
83+
HashSet<String> metrics = new HashSet<String>();
84+
HashSet<String> series = new HashSet<String>();
8485
for (Collector.MetricFamilySamples metricFamilySamples : Collections.list(registry.filteredMetricFamilySamples(
85-
new HashSet<String>(Arrays.asList("", "s", "c", "part_filter_a", "part_filter_c"))))) {
86-
names.add(metricFamilySamples.name);
86+
new HashSet<String>(Arrays.asList("", "s_sum", "c", "part_filter_a", "part_filter_c"))))) {
87+
metrics.add(metricFamilySamples.name);
88+
for (Collector.MetricFamilySamples.Sample sample : metricFamilySamples.samples) {
89+
series.add(sample.name);
90+
}
8791
}
8892

8993
assertEquals(1, sr.collectCallCount);
9094
assertEquals(2, pfr.collectCallCount);
91-
assertEquals(new HashSet<String>(Arrays.asList("s", "c", "part_filter_a", "part_filter_c")), names);
95+
assertEquals(new HashSet<String>(Arrays.asList("s", "c", "part_filter_a", "part_filter_c")), metrics);
96+
assertEquals(new HashSet<String>(Arrays.asList("s_sum", "c", "part_filter_a", "part_filter_c")), series);
9297
}
9398

9499
@Test

0 commit comments

Comments
 (0)