From f6bc10c1996468ea4de1059ffbedcba614a04a0d Mon Sep 17 00:00:00 2001 From: Gabi Davar Date: Sun, 5 Jun 2022 14:43:51 +0300 Subject: [PATCH 1/8] Support PROMETHEUS_DISABLE_CREATED_SERIES env var to suppress `_created` time series Signed-off-by: Gabi Davar --- simpleclient/pom.xml | 18 ++++ .../java/io/prometheus/client/Collector.java | 71 ++++++++------- .../java/io/prometheus/client/Counter.java | 4 +- .../java/io/prometheus/client/Histogram.java | 4 +- .../java/io/prometheus/client/Summary.java | 4 +- .../prometheus/client/DisableCreatedTest.java | 90 +++++++++++++++++++ 6 files changed, 157 insertions(+), 34 deletions(-) create mode 100644 simpleclient/src/test/java/io/prometheus/client/DisableCreatedTest.java diff --git a/simpleclient/pom.xml b/simpleclient/pom.xml index c0067869a..c57b89786 100644 --- a/simpleclient/pom.xml +++ b/simpleclient/pom.xml @@ -54,6 +54,24 @@ 4.13.2 test + + org.mockito + mockito-inline + 3.12.4 + test + + + uk.org.webcompere + system-stubs-core + 2.0.1 + test + + + uk.org.webcompere + system-stubs-junit4 + 2.0.1 + test + org.apache.commons commons-math3 diff --git a/simpleclient/src/main/java/io/prometheus/client/Collector.java b/simpleclient/src/main/java/io/prometheus/client/Collector.java index 6f84e1840..89b980f95 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Collector.java +++ b/simpleclient/src/main/java/io/prometheus/client/Collector.java @@ -3,8 +3,7 @@ import io.prometheus.client.exemplars.Exemplar; -import java.util.ArrayList; -import java.util.List; +import java.util.*; import java.util.regex.Pattern; /** @@ -151,43 +150,42 @@ public MetricFamilySamples filter(Predicate sampleNameFilter) { * we include the name without suffix here as well. */ public String[] getNames() { + List names = new ArrayList(); switch (type) { case COUNTER: - return new String[]{ - name + "_total", - name + "_created", - name - }; + names.add(name + "_total"); + if (getUseCreated()) { + names.add(name + "_created"); + } + break; case SUMMARY: - return new String[]{ - name + "_count", - name + "_sum", - name + "_created", - name - }; + names.add(name + "_count"); + names.add(name + "_sum"); + if (getUseCreated()) { + names.add(name + "_created"); + } + break; case HISTOGRAM: - return new String[]{ - name + "_count", - name + "_sum", - name + "_bucket", - name + "_created", - name - }; + names.add(name + "_count"); + names.add(name + "_sum"); + names.add(name + "_bucket"); + if (getUseCreated()) { + names.add(name + "_created"); + } + break; case GAUGE_HISTOGRAM: - return new String[]{ - name + "_gcount", - name + "_gsum", - name + "_bucket", - name - }; + names.add(name + "_gcount"); + names.add(name + "_gsum"); + names.add(name + "_bucket"); + break; case INFO: - return new String[]{ - name + "_info", - name - }; + names.add(name + "_info"); + break; default: - return new String[]{name}; + // NOP - `name` is added to all } + names.add(name); + return names.toArray(new String[0]); } @@ -396,4 +394,15 @@ public static String doubleToGoString(double d) { } return Double.toString(d); } + + protected static final String DISABLE_CREATED_SERIES = "PROMETHEUS_DISABLE_CREATED_SERIES"; + private static final List TRUTHS = Arrays.asList("true", "1", "t"); + + protected static boolean getUseCreated() { + String disable_series = System.getenv(DISABLE_CREATED_SERIES); + if (disable_series != null) { + return !TRUTHS.contains(disable_series.toLowerCase()); + } + return true; + } } diff --git a/simpleclient/src/main/java/io/prometheus/client/Counter.java b/simpleclient/src/main/java/io/prometheus/client/Counter.java index 51f0a24a2..9521a4579 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Counter.java +++ b/simpleclient/src/main/java/io/prometheus/client/Counter.java @@ -355,7 +355,9 @@ public List collect() { List samples = new ArrayList(children.size()); for(Map.Entry, Child> c: children.entrySet()) { samples.add(new MetricFamilySamples.Sample(fullname + "_total", labelNames, c.getKey(), c.getValue().get(), c.getValue().getExemplar())); - samples.add(new MetricFamilySamples.Sample(fullname + "_created", labelNames, c.getKey(), c.getValue().created() / 1000.0)); + if (getUseCreated()) { + samples.add(new MetricFamilySamples.Sample(fullname + "_created", labelNames, c.getKey(), c.getValue().created() / 1000.0)); + } } return familySamplesList(Type.COUNTER, samples); } diff --git a/simpleclient/src/main/java/io/prometheus/client/Histogram.java b/simpleclient/src/main/java/io/prometheus/client/Histogram.java index e0491579e..d230197ca 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Histogram.java +++ b/simpleclient/src/main/java/io/prometheus/client/Histogram.java @@ -574,7 +574,9 @@ public List collect() { } samples.add(new MetricFamilySamples.Sample(fullname + "_count", labelNames, c.getKey(), v.buckets[buckets.length-1])); samples.add(new MetricFamilySamples.Sample(fullname + "_sum", labelNames, c.getKey(), v.sum)); - samples.add(new MetricFamilySamples.Sample(fullname + "_created", labelNames, c.getKey(), v.created / 1000.0)); + if (getUseCreated()) { + samples.add(new MetricFamilySamples.Sample(fullname + "_created", labelNames, c.getKey(), v.created / 1000.0)); + } } return familySamplesList(Type.HISTOGRAM, samples); diff --git a/simpleclient/src/main/java/io/prometheus/client/Summary.java b/simpleclient/src/main/java/io/prometheus/client/Summary.java index 8836cbe7d..ebe2d703f 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Summary.java +++ b/simpleclient/src/main/java/io/prometheus/client/Summary.java @@ -404,7 +404,9 @@ public List collect() { } samples.add(new MetricFamilySamples.Sample(fullname + "_count", labelNames, c.getKey(), v.count)); samples.add(new MetricFamilySamples.Sample(fullname + "_sum", labelNames, c.getKey(), v.sum)); - samples.add(new MetricFamilySamples.Sample(fullname + "_created", labelNames, c.getKey(), v.created / 1000.0)); + if (getUseCreated()) { + samples.add(new MetricFamilySamples.Sample(fullname + "_created", labelNames, c.getKey(), v.created / 1000.0)); + } } return familySamplesList(Type.SUMMARY, samples); diff --git a/simpleclient/src/test/java/io/prometheus/client/DisableCreatedTest.java b/simpleclient/src/test/java/io/prometheus/client/DisableCreatedTest.java new file mode 100644 index 000000000..459a81e3d --- /dev/null +++ b/simpleclient/src/test/java/io/prometheus/client/DisableCreatedTest.java @@ -0,0 +1,90 @@ +package io.prometheus.client; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import uk.org.webcompere.systemstubs.environment.EnvironmentVariables; + +import java.util.Collections; +import java.util.List; + +public class DisableCreatedTest { + + private CollectorRegistry registry; + + @Before + public void setUp() { + registry = new CollectorRegistry(true); + } + + @Test + public void testDisableCreatedAll() { + EnvironmentVariables env = new EnvironmentVariables(Collector.DISABLE_CREATED_SERIES, "true"); + Counter counter1 = Counter.build() + .name("counter1") + .help("test counter 1") + .labelNames("path") + .register(registry); + counter1.labels("/hello").inc(); + counter1.labels("/goodbye").inc(); + Counter counter2 = Counter.build() + .name("counter2") + .help("test counter 2") + .register(registry); + counter2.inc(); + + Histogram histogram = Histogram.build() + .name("test_histogram") + .help("test histogram") + .create(); + histogram.observe(100); + histogram.observe(200); + registry.register(histogram); + + Summary noLabels = Summary.build().name("test_summary").help("test summary").register(registry); + noLabels.observe(2); + + List mfsList; + try { + env.setup(); + mfsList = Collections.list(registry.metricFamilySamples()); + String extracted = System.getenv(Collector.DISABLE_CREATED_SERIES); + Assert.assertEquals("Env isn't set", "true", extracted); + env.teardown(); + } catch (Exception e) { + throw new RuntimeException(e); + } + assertSamplesInclude(mfsList, "counter1_total", 2); + assertSamplesInclude(mfsList, "counter1_created", 0); + assertSamplesInclude(mfsList, "counter2_total", 1); + assertSamplesInclude(mfsList, "counter2_created", 0); + assertSamplesInclude(mfsList, "test_histogram_bucket", 15); + assertSamplesInclude(mfsList, "test_histogram_count", 1); + assertSamplesInclude(mfsList, "test_histogram_sum", 1); + assertSamplesInclude(mfsList, "test_histogram_created", 0); + assertSamplesInclude(mfsList, "test_summary_count", 1); + assertSamplesInclude(mfsList, "test_summary_sum", 1); + assertSamplesInclude(mfsList, "test_summary_created", 0); + assertTotalNumberOfSamples(mfsList, 22); + } + + private void assertSamplesInclude(List mfsList, String name, int times) { + int count = 0; + for (Collector.MetricFamilySamples mfs : mfsList) { + for (Collector.MetricFamilySamples.Sample sample : mfs.samples) { + if (sample.name.equals(name)) { + count++; + } + } + } + Assert.assertEquals("Wrong number of samples for " + name, times, count); + } + + private void assertTotalNumberOfSamples(List mfsList, int n) { + int count = 0; + for (Collector.MetricFamilySamples mfs : mfsList) { + count += mfs.samples.size(); + } + Assert.assertEquals("Wrong total number of samples", n, count); + } +} From 35ffae3db21e73205ffd62b209ecf445c35d9a52 Mon Sep 17 00:00:00 2001 From: Gabi Davar Date: Mon, 6 Jun 2022 11:08:35 +0300 Subject: [PATCH 2/8] switched to use a static variable. test tweaks. Signed-off-by: Gabi Davar --- .../main/java/io/prometheus/client/Collector.java | 12 +++++++----- .../java/io/prometheus/client/CollectorRegistry.java | 2 +- .../src/main/java/io/prometheus/client/Counter.java | 2 +- .../main/java/io/prometheus/client/Histogram.java | 2 +- .../src/main/java/io/prometheus/client/Summary.java | 2 +- .../io/prometheus/client/DisableCreatedTest.java | 8 +++++--- .../java/io/prometheus/client/HistogramTest.java | 2 +- 7 files changed, 17 insertions(+), 13 deletions(-) diff --git a/simpleclient/src/main/java/io/prometheus/client/Collector.java b/simpleclient/src/main/java/io/prometheus/client/Collector.java index 89b980f95..1d19ca164 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Collector.java +++ b/simpleclient/src/main/java/io/prometheus/client/Collector.java @@ -149,19 +149,19 @@ public MetricFamilySamples filter(Predicate sampleNameFilter) { * {@code # HELP}), and as this name must be unique * we include the name without suffix here as well. */ - public String[] getNames() { + public List getNames() { List names = new ArrayList(); switch (type) { case COUNTER: names.add(name + "_total"); - if (getUseCreated()) { + if (USE_CREATED) { names.add(name + "_created"); } break; case SUMMARY: names.add(name + "_count"); names.add(name + "_sum"); - if (getUseCreated()) { + if (USE_CREATED) { names.add(name + "_created"); } break; @@ -169,7 +169,7 @@ public String[] getNames() { names.add(name + "_count"); names.add(name + "_sum"); names.add(name + "_bucket"); - if (getUseCreated()) { + if (USE_CREATED) { names.add(name + "_created"); } break; @@ -185,7 +185,7 @@ public String[] getNames() { // NOP - `name` is added to all } names.add(name); - return names.toArray(new String[0]); + return names; } @@ -398,6 +398,8 @@ public static String doubleToGoString(double d) { protected static final String DISABLE_CREATED_SERIES = "PROMETHEUS_DISABLE_CREATED_SERIES"; private static final List TRUTHS = Arrays.asList("true", "1", "t"); + protected static boolean USE_CREATED = getUseCreated(); + protected static boolean getUseCreated() { String disable_series = System.getenv(DISABLE_CREATED_SERIES); if (disable_series != null) { diff --git a/simpleclient/src/main/java/io/prometheus/client/CollectorRegistry.java b/simpleclient/src/main/java/io/prometheus/client/CollectorRegistry.java index 47af5b136..128a6c210 100644 --- a/simpleclient/src/main/java/io/prometheus/client/CollectorRegistry.java +++ b/simpleclient/src/main/java/io/prometheus/client/CollectorRegistry.java @@ -117,7 +117,7 @@ private List collectorNames(Collector m) { List names = new ArrayList(); for (Collector.MetricFamilySamples family : mfs) { - names.addAll(Arrays.asList(family.getNames())); + names.addAll(family.getNames()); } return names; } diff --git a/simpleclient/src/main/java/io/prometheus/client/Counter.java b/simpleclient/src/main/java/io/prometheus/client/Counter.java index 9521a4579..db8a3309f 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Counter.java +++ b/simpleclient/src/main/java/io/prometheus/client/Counter.java @@ -355,7 +355,7 @@ public List collect() { List samples = new ArrayList(children.size()); for(Map.Entry, Child> c: children.entrySet()) { samples.add(new MetricFamilySamples.Sample(fullname + "_total", labelNames, c.getKey(), c.getValue().get(), c.getValue().getExemplar())); - if (getUseCreated()) { + if (USE_CREATED) { samples.add(new MetricFamilySamples.Sample(fullname + "_created", labelNames, c.getKey(), c.getValue().created() / 1000.0)); } } diff --git a/simpleclient/src/main/java/io/prometheus/client/Histogram.java b/simpleclient/src/main/java/io/prometheus/client/Histogram.java index d230197ca..a8222e428 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Histogram.java +++ b/simpleclient/src/main/java/io/prometheus/client/Histogram.java @@ -574,7 +574,7 @@ public List collect() { } samples.add(new MetricFamilySamples.Sample(fullname + "_count", labelNames, c.getKey(), v.buckets[buckets.length-1])); samples.add(new MetricFamilySamples.Sample(fullname + "_sum", labelNames, c.getKey(), v.sum)); - if (getUseCreated()) { + if (USE_CREATED) { samples.add(new MetricFamilySamples.Sample(fullname + "_created", labelNames, c.getKey(), v.created / 1000.0)); } } diff --git a/simpleclient/src/main/java/io/prometheus/client/Summary.java b/simpleclient/src/main/java/io/prometheus/client/Summary.java index ebe2d703f..aec913371 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Summary.java +++ b/simpleclient/src/main/java/io/prometheus/client/Summary.java @@ -404,7 +404,7 @@ public List collect() { } samples.add(new MetricFamilySamples.Sample(fullname + "_count", labelNames, c.getKey(), v.count)); samples.add(new MetricFamilySamples.Sample(fullname + "_sum", labelNames, c.getKey(), v.sum)); - if (getUseCreated()) { + if (USE_CREATED) { samples.add(new MetricFamilySamples.Sample(fullname + "_created", labelNames, c.getKey(), v.created / 1000.0)); } } diff --git a/simpleclient/src/test/java/io/prometheus/client/DisableCreatedTest.java b/simpleclient/src/test/java/io/prometheus/client/DisableCreatedTest.java index 459a81e3d..146afc1e9 100644 --- a/simpleclient/src/test/java/io/prometheus/client/DisableCreatedTest.java +++ b/simpleclient/src/test/java/io/prometheus/client/DisableCreatedTest.java @@ -18,7 +18,7 @@ public void setUp() { } @Test - public void testDisableCreatedAll() { + public void testDisableCreatedAll() throws Exception { EnvironmentVariables env = new EnvironmentVariables(Collector.DISABLE_CREATED_SERIES, "true"); Counter counter1 = Counter.build() .name("counter1") @@ -47,12 +47,14 @@ public void testDisableCreatedAll() { List mfsList; try { env.setup(); + Collector.USE_CREATED = Collector.getUseCreated(); mfsList = Collections.list(registry.metricFamilySamples()); String extracted = System.getenv(Collector.DISABLE_CREATED_SERIES); Assert.assertEquals("Env isn't set", "true", extracted); + } + finally { env.teardown(); - } catch (Exception e) { - throw new RuntimeException(e); + Collector.USE_CREATED = Collector.getUseCreated(); } assertSamplesInclude(mfsList, "counter1_total", 2); assertSamplesInclude(mfsList, "counter1_created", 0); diff --git a/simpleclient/src/test/java/io/prometheus/client/HistogramTest.java b/simpleclient/src/test/java/io/prometheus/client/HistogramTest.java index 3fe884509..457bd05f9 100644 --- a/simpleclient/src/test/java/io/prometheus/client/HistogramTest.java +++ b/simpleclient/src/test/java/io/prometheus/client/HistogramTest.java @@ -299,7 +299,7 @@ private void assertExemplar(Histogram histogram, double value, String... labels) } if (lowerBound < value && value <= upperBound) { Assert.assertNotNull("No exemplar found in bucket [" + lowerBound + ", " + upperBound + "]", bucket.exemplar); - Assert.assertEquals(value, bucket.exemplar.getValue(), 0.001); + Assert.assertEquals(value, bucket.exemplar.getValue(), 0.01); Assert.assertEquals(labels.length/2, bucket.exemplar.getNumberOfLabels()); for (int i=0; i Date: Mon, 6 Jun 2022 22:40:22 +0300 Subject: [PATCH 3/8] docs Signed-off-by: Gabi Davar --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index b6dd47033..3034fceaa 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,13 @@ There are canonical examples defined in the class definition Javadoc of the clie Documentation can be found at the [Java Client Github Project Page](http://prometheus.github.io/client_java). +### Disabling `_created` metrics + +By default, counters, histograms, and summaries export an additional series +suffixed with `_created` and a value of the unix timestamp for when the metric +was created. If this information is not helpful, it can be disabled by setting +the environment variable `PROMETHEUS_DISABLE_CREATED_SERIES=True`. + ## Instrumenting Four types of metrics are offered: Counter, Gauge, Summary and Histogram. From b3de1f9521da2711b8089fb9adba4ed13d032ad0 Mon Sep 17 00:00:00 2001 From: Gabi Davar Date: Sun, 12 Jun 2022 08:41:49 +0300 Subject: [PATCH 4/8] let's be truer. Signed-off-by: Gabi Davar --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3034fceaa..9fbafedcd 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ Github Project Page](http://prometheus.github.io/client_java). By default, counters, histograms, and summaries export an additional series suffixed with `_created` and a value of the unix timestamp for when the metric was created. If this information is not helpful, it can be disabled by setting -the environment variable `PROMETHEUS_DISABLE_CREATED_SERIES=True`. +the environment variable `PROMETHEUS_DISABLE_CREATED_SERIES=true`. ## Instrumenting From 744c9062d355daf519952e55f208a51662c7a4f8 Mon Sep 17 00:00:00 2001 From: Gabi Davar Date: Mon, 13 Jun 2022 14:39:19 +0300 Subject: [PATCH 5/8] Revert GetNames() redundant change. Signed-off-by: Gabi Davar --- .../java/io/prometheus/client/Collector.java | 59 ++++++++++--------- .../prometheus/client/CollectorRegistry.java | 2 +- .../io/prometheus/client/HistogramTest.java | 2 +- 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/simpleclient/src/main/java/io/prometheus/client/Collector.java b/simpleclient/src/main/java/io/prometheus/client/Collector.java index 1d19ca164..dbb22794f 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Collector.java +++ b/simpleclient/src/main/java/io/prometheus/client/Collector.java @@ -149,43 +149,44 @@ public MetricFamilySamples filter(Predicate sampleNameFilter) { * {@code # HELP}), and as this name must be unique * we include the name without suffix here as well. */ - public List getNames() { - List names = new ArrayList(); + public String[] getNames() { switch (type) { case COUNTER: - names.add(name + "_total"); - if (USE_CREATED) { - names.add(name + "_created"); - } - break; + return new String[]{ + name + "_total", + name + "_created", + name + }; case SUMMARY: - names.add(name + "_count"); - names.add(name + "_sum"); - if (USE_CREATED) { - names.add(name + "_created"); - } - break; + return new String[]{ + name + "_count", + name + "_sum", + name + "_created", + name + }; case HISTOGRAM: - names.add(name + "_count"); - names.add(name + "_sum"); - names.add(name + "_bucket"); - if (USE_CREATED) { - names.add(name + "_created"); - } - break; + return new String[]{ + name + "_count", + name + "_sum", + name + "_bucket", + name + "_created", + name + }; case GAUGE_HISTOGRAM: - names.add(name + "_gcount"); - names.add(name + "_gsum"); - names.add(name + "_bucket"); - break; + return new String[]{ + name + "_gcount", + name + "_gsum", + name + "_bucket", + name + }; case INFO: - names.add(name + "_info"); - break; + return new String[]{ + name + "_info", + name + }; default: - // NOP - `name` is added to all + return new String[]{name}; } - names.add(name); - return names; } diff --git a/simpleclient/src/main/java/io/prometheus/client/CollectorRegistry.java b/simpleclient/src/main/java/io/prometheus/client/CollectorRegistry.java index 128a6c210..47af5b136 100644 --- a/simpleclient/src/main/java/io/prometheus/client/CollectorRegistry.java +++ b/simpleclient/src/main/java/io/prometheus/client/CollectorRegistry.java @@ -117,7 +117,7 @@ private List collectorNames(Collector m) { List names = new ArrayList(); for (Collector.MetricFamilySamples family : mfs) { - names.addAll(family.getNames()); + names.addAll(Arrays.asList(family.getNames())); } return names; } diff --git a/simpleclient/src/test/java/io/prometheus/client/HistogramTest.java b/simpleclient/src/test/java/io/prometheus/client/HistogramTest.java index 457bd05f9..11c838d10 100644 --- a/simpleclient/src/test/java/io/prometheus/client/HistogramTest.java +++ b/simpleclient/src/test/java/io/prometheus/client/HistogramTest.java @@ -327,7 +327,7 @@ private void assertNoExemplar(Histogram histogram, double value) { } if (lowerBound < value && value <= upperBound) { if (bucket.exemplar != null) { - Assert.assertNotEquals("expecting no exemplar with value " + value, value, bucket.exemplar.getValue(), 0.001); + Assert.assertNotEquals("expecting no exemplar with value " + value, value, bucket.exemplar.getValue(), 0.0001); } } } From d59bfdcb4520b6380b77834ef3cb004453915519 Mon Sep 17 00:00:00 2001 From: Gabi Davar Date: Mon, 13 Jun 2022 21:50:34 +0300 Subject: [PATCH 6/8] make final, drop test for now Signed-off-by: Gabi Davar --- .../java/io/prometheus/client/Collector.java | 3 +- .../prometheus/client/DisableCreatedTest.java | 92 ------------------- 2 files changed, 1 insertion(+), 94 deletions(-) delete mode 100644 simpleclient/src/test/java/io/prometheus/client/DisableCreatedTest.java diff --git a/simpleclient/src/main/java/io/prometheus/client/Collector.java b/simpleclient/src/main/java/io/prometheus/client/Collector.java index dbb22794f..b4de0579f 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Collector.java +++ b/simpleclient/src/main/java/io/prometheus/client/Collector.java @@ -398,8 +398,7 @@ public static String doubleToGoString(double d) { protected static final String DISABLE_CREATED_SERIES = "PROMETHEUS_DISABLE_CREATED_SERIES"; private static final List TRUTHS = Arrays.asList("true", "1", "t"); - - protected static boolean USE_CREATED = getUseCreated(); + protected static final boolean USE_CREATED = getUseCreated(); protected static boolean getUseCreated() { String disable_series = System.getenv(DISABLE_CREATED_SERIES); diff --git a/simpleclient/src/test/java/io/prometheus/client/DisableCreatedTest.java b/simpleclient/src/test/java/io/prometheus/client/DisableCreatedTest.java deleted file mode 100644 index 146afc1e9..000000000 --- a/simpleclient/src/test/java/io/prometheus/client/DisableCreatedTest.java +++ /dev/null @@ -1,92 +0,0 @@ -package io.prometheus.client; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; -import uk.org.webcompere.systemstubs.environment.EnvironmentVariables; - -import java.util.Collections; -import java.util.List; - -public class DisableCreatedTest { - - private CollectorRegistry registry; - - @Before - public void setUp() { - registry = new CollectorRegistry(true); - } - - @Test - public void testDisableCreatedAll() throws Exception { - EnvironmentVariables env = new EnvironmentVariables(Collector.DISABLE_CREATED_SERIES, "true"); - Counter counter1 = Counter.build() - .name("counter1") - .help("test counter 1") - .labelNames("path") - .register(registry); - counter1.labels("/hello").inc(); - counter1.labels("/goodbye").inc(); - Counter counter2 = Counter.build() - .name("counter2") - .help("test counter 2") - .register(registry); - counter2.inc(); - - Histogram histogram = Histogram.build() - .name("test_histogram") - .help("test histogram") - .create(); - histogram.observe(100); - histogram.observe(200); - registry.register(histogram); - - Summary noLabels = Summary.build().name("test_summary").help("test summary").register(registry); - noLabels.observe(2); - - List mfsList; - try { - env.setup(); - Collector.USE_CREATED = Collector.getUseCreated(); - mfsList = Collections.list(registry.metricFamilySamples()); - String extracted = System.getenv(Collector.DISABLE_CREATED_SERIES); - Assert.assertEquals("Env isn't set", "true", extracted); - } - finally { - env.teardown(); - Collector.USE_CREATED = Collector.getUseCreated(); - } - assertSamplesInclude(mfsList, "counter1_total", 2); - assertSamplesInclude(mfsList, "counter1_created", 0); - assertSamplesInclude(mfsList, "counter2_total", 1); - assertSamplesInclude(mfsList, "counter2_created", 0); - assertSamplesInclude(mfsList, "test_histogram_bucket", 15); - assertSamplesInclude(mfsList, "test_histogram_count", 1); - assertSamplesInclude(mfsList, "test_histogram_sum", 1); - assertSamplesInclude(mfsList, "test_histogram_created", 0); - assertSamplesInclude(mfsList, "test_summary_count", 1); - assertSamplesInclude(mfsList, "test_summary_sum", 1); - assertSamplesInclude(mfsList, "test_summary_created", 0); - assertTotalNumberOfSamples(mfsList, 22); - } - - private void assertSamplesInclude(List mfsList, String name, int times) { - int count = 0; - for (Collector.MetricFamilySamples mfs : mfsList) { - for (Collector.MetricFamilySamples.Sample sample : mfs.samples) { - if (sample.name.equals(name)) { - count++; - } - } - } - Assert.assertEquals("Wrong number of samples for " + name, times, count); - } - - private void assertTotalNumberOfSamples(List mfsList, int n) { - int count = 0; - for (Collector.MetricFamilySamples mfs : mfsList) { - count += mfs.samples.size(); - } - Assert.assertEquals("Wrong total number of samples", n, count); - } -} From 2fe6737466965875640f3fa3f22344c6e4771854 Mon Sep 17 00:00:00 2001 From: Gabi Davar Date: Tue, 14 Jun 2022 09:44:03 +0300 Subject: [PATCH 7/8] remove the extra deps too. Signed-off-by: Gabi Davar --- simpleclient/pom.xml | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/simpleclient/pom.xml b/simpleclient/pom.xml index c57b89786..c0067869a 100644 --- a/simpleclient/pom.xml +++ b/simpleclient/pom.xml @@ -54,24 +54,6 @@ 4.13.2 test - - org.mockito - mockito-inline - 3.12.4 - test - - - uk.org.webcompere - system-stubs-core - 2.0.1 - test - - - uk.org.webcompere - system-stubs-junit4 - 2.0.1 - test - org.apache.commons commons-math3 From 40b420626794844df33d2d62a68c4975dff797c0 Mon Sep 17 00:00:00 2001 From: Gabi Davar Date: Wed, 15 Jun 2022 08:28:53 +0300 Subject: [PATCH 8/8] Add a brand new and shiny class Signed-off-by: Gabi Davar --- .../java/io/prometheus/client/Collector.java | 12 ---------- .../java/io/prometheus/client/Counter.java | 2 +- .../io/prometheus/client/Environment.java | 23 +++++++++++++++++++ .../java/io/prometheus/client/Histogram.java | 2 +- .../java/io/prometheus/client/Summary.java | 2 +- 5 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 simpleclient/src/main/java/io/prometheus/client/Environment.java diff --git a/simpleclient/src/main/java/io/prometheus/client/Collector.java b/simpleclient/src/main/java/io/prometheus/client/Collector.java index b4de0579f..99801fddc 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Collector.java +++ b/simpleclient/src/main/java/io/prometheus/client/Collector.java @@ -395,16 +395,4 @@ public static String doubleToGoString(double d) { } return Double.toString(d); } - - protected static final String DISABLE_CREATED_SERIES = "PROMETHEUS_DISABLE_CREATED_SERIES"; - private static final List TRUTHS = Arrays.asList("true", "1", "t"); - protected static final boolean USE_CREATED = getUseCreated(); - - protected static boolean getUseCreated() { - String disable_series = System.getenv(DISABLE_CREATED_SERIES); - if (disable_series != null) { - return !TRUTHS.contains(disable_series.toLowerCase()); - } - return true; - } } diff --git a/simpleclient/src/main/java/io/prometheus/client/Counter.java b/simpleclient/src/main/java/io/prometheus/client/Counter.java index db8a3309f..015ac4301 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Counter.java +++ b/simpleclient/src/main/java/io/prometheus/client/Counter.java @@ -355,7 +355,7 @@ public List collect() { List samples = new ArrayList(children.size()); for(Map.Entry, Child> c: children.entrySet()) { samples.add(new MetricFamilySamples.Sample(fullname + "_total", labelNames, c.getKey(), c.getValue().get(), c.getValue().getExemplar())); - if (USE_CREATED) { + if (Environment.includeCreatedSeries()) { samples.add(new MetricFamilySamples.Sample(fullname + "_created", labelNames, c.getKey(), c.getValue().created() / 1000.0)); } } diff --git a/simpleclient/src/main/java/io/prometheus/client/Environment.java b/simpleclient/src/main/java/io/prometheus/client/Environment.java new file mode 100644 index 000000000..bc6393bcf --- /dev/null +++ b/simpleclient/src/main/java/io/prometheus/client/Environment.java @@ -0,0 +1,23 @@ +package io.prometheus.client; + +import java.util.Arrays; +import java.util.List; + +class Environment { + + private static final String DISABLE_CREATED_SERIES = "PROMETHEUS_DISABLE_CREATED_SERIES"; + private static final List DISABLE_CREATED_SERIES_TRUE = Arrays.asList("true", "1", "t"); + private static final boolean includeCreatedSeries = !isTrue(DISABLE_CREATED_SERIES); + + static boolean includeCreatedSeries() { + return includeCreatedSeries; + } + + private static boolean isTrue(String envVarName) { + String stringValue = System.getenv(envVarName); + if (stringValue != null) { + return DISABLE_CREATED_SERIES_TRUE.contains(stringValue.toLowerCase()); + } + return false; + } +} diff --git a/simpleclient/src/main/java/io/prometheus/client/Histogram.java b/simpleclient/src/main/java/io/prometheus/client/Histogram.java index a8222e428..c97da1213 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Histogram.java +++ b/simpleclient/src/main/java/io/prometheus/client/Histogram.java @@ -574,7 +574,7 @@ public List collect() { } samples.add(new MetricFamilySamples.Sample(fullname + "_count", labelNames, c.getKey(), v.buckets[buckets.length-1])); samples.add(new MetricFamilySamples.Sample(fullname + "_sum", labelNames, c.getKey(), v.sum)); - if (USE_CREATED) { + if (Environment.includeCreatedSeries()) { samples.add(new MetricFamilySamples.Sample(fullname + "_created", labelNames, c.getKey(), v.created / 1000.0)); } } diff --git a/simpleclient/src/main/java/io/prometheus/client/Summary.java b/simpleclient/src/main/java/io/prometheus/client/Summary.java index aec913371..6d1fb947a 100644 --- a/simpleclient/src/main/java/io/prometheus/client/Summary.java +++ b/simpleclient/src/main/java/io/prometheus/client/Summary.java @@ -404,7 +404,7 @@ public List collect() { } samples.add(new MetricFamilySamples.Sample(fullname + "_count", labelNames, c.getKey(), v.count)); samples.add(new MetricFamilySamples.Sample(fullname + "_sum", labelNames, c.getKey(), v.sum)); - if (USE_CREATED) { + if (Environment.includeCreatedSeries()) { samples.add(new MetricFamilySamples.Sample(fullname + "_created", labelNames, c.getKey(), v.created / 1000.0)); } }