From 7db2b8e56acecc8eaff996e8ab43737e0821885f Mon Sep 17 00:00:00 2001 From: devromik Date: Tue, 13 Jun 2023 17:11:21 +0400 Subject: [PATCH] #49: fix after review --- .../DefaultPrometheusMetricSanitizer.java | 2 +- .../prometheus/PrometheusMetricsExporter.java | 15 ++++++------- .../PrometheusMetricsExporterBuilder.java | 8 ------- .../DefaultPrometheusMetricSanitizerTest.java | 2 +- .../PrometheusMetricsExporterSample.java | 2 -- .../MfPrometheusAutoConfiguration.java | 2 -- .../spring/prometheus/MfPrometheusConfig.java | 20 ++++------------- .../prometheus/MfPrometheusConfigBuilder.java | 22 ++++--------------- .../prometheus/MfPrometheusProperties.java | 11 ---------- 9 files changed, 17 insertions(+), 67 deletions(-) diff --git a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/reporters/prometheus/DefaultPrometheusMetricSanitizer.java b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/reporters/prometheus/DefaultPrometheusMetricSanitizer.java index 54f202e..cdac007 100644 --- a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/reporters/prometheus/DefaultPrometheusMetricSanitizer.java +++ b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/reporters/prometheus/DefaultPrometheusMetricSanitizer.java @@ -14,7 +14,7 @@ public class DefaultPrometheusMetricSanitizer implements PrometheusMetricSanitiz public static final boolean DEFAULT_SANITIZE_METRIC_NAME = true; public static final boolean DEFAULT_SANITIZE_LABEL_NAME = true; - public static final String DEFAULT_NON_LETTER_LABEL_NAME_FIRST_CHAR_PREFIX = "label_"; + public static final String DEFAULT_NON_LETTER_LABEL_NAME_FIRST_CHAR_PREFIX = "l_"; private static final Pattern LABEL_NAME_FORBIDDEN_CHAR_PATTERN = Pattern.compile("\\W"); diff --git a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/reporters/prometheus/PrometheusMetricsExporter.java b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/reporters/prometheus/PrometheusMetricsExporter.java index b763594..791db2a 100644 --- a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/reporters/prometheus/PrometheusMetricsExporter.java +++ b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/reporters/prometheus/PrometheusMetricsExporter.java @@ -13,13 +13,17 @@ import java.io.IOException; import java.io.Writer; -import java.util.*; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; import static com.ringcentral.platform.metrics.reporters.prometheus.PrometheusMetricsExporter.Format.PROMETHEUS_TEXT_O_O_4; import static io.prometheus.client.Collector.MetricFamilySamples; import static java.lang.String.join; import static java.util.Collections.emptyList; import static java.util.Collections.enumeration; +import static java.util.Locale.ENGLISH; import static java.util.Objects.requireNonNull; import static java.util.stream.Collectors.toList; import static org.slf4j.LoggerFactory.getLogger; @@ -40,11 +44,9 @@ public enum Format { public static final Format DEFAULT_FORMAT = PROMETHEUS_TEXT_O_O_4; public static final String NAME_PARTS_DELIMITER = "_"; public static final boolean DEFAULT_CONVERT_NAME_TO_LOWER_CASE = false; - public static final Locale DEFAULT_LOCALE = Locale.ENGLISH; private final Format defaultFormat; private final boolean convertNameToLowercase; - private final Locale locale; private final PrometheusMetricSanitizer sanitizer; private final InstanceSamplesProvider instanceSamplesProvider; @@ -54,7 +56,6 @@ public PrometheusMetricsExporter(MetricRegistry metricRegistry) { this( DEFAULT_FORMAT, DEFAULT_CONVERT_NAME_TO_LOWER_CASE, - DEFAULT_LOCALE, new DefaultPrometheusMetricSanitizer(), new PrometheusInstanceSamplesProvider(metricRegistry)); } @@ -62,13 +63,11 @@ public PrometheusMetricsExporter(MetricRegistry metricRegistry) { public PrometheusMetricsExporter( Format defaultFormat, boolean convertNameToLowercase, - Locale locale, PrometheusMetricSanitizer sanitizer, InstanceSamplesProvider instanceSamplesProvider) { this.defaultFormat = requireNonNull(defaultFormat); this.convertNameToLowercase = convertNameToLowercase; - this.locale = locale != null ? locale : DEFAULT_LOCALE; this.sanitizer = requireNonNull(sanitizer); this.instanceSamplesProvider = requireNonNull(instanceSamplesProvider); } @@ -167,13 +166,13 @@ private MetricFamilySamples toMetricFamilySamples(PrometheusInstanceSample is) { private String buildName(MetricName name) { final var sanitizedName = sanitizer.sanitizeMetricName(join(NAME_PARTS_DELIMITER, name)); - return convertNameToLowercase ? sanitizedName.toLowerCase(locale) : sanitizedName; + return convertNameToLowercase ? sanitizedName.toLowerCase(ENGLISH) : sanitizedName; } private String buildNameSuffix(PrometheusSample ps) { final var suffix = ps.nameSuffix(); final var sanitizedSuffix = sanitizer.sanitizeMetricName(suffix); - return convertNameToLowercase ? sanitizedSuffix.toLowerCase(locale) : sanitizedSuffix; + return convertNameToLowercase ? sanitizedSuffix.toLowerCase(ENGLISH) : sanitizedSuffix; } private static String helpFor(PrometheusInstanceSample is) { diff --git a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/reporters/prometheus/PrometheusMetricsExporterBuilder.java b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/reporters/prometheus/PrometheusMetricsExporterBuilder.java index 416807e..f94353c 100644 --- a/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/reporters/prometheus/PrometheusMetricsExporterBuilder.java +++ b/metrics-facade-prometheus/src/main/java/com/ringcentral/platform/metrics/reporters/prometheus/PrometheusMetricsExporterBuilder.java @@ -9,7 +9,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.Locale; import static com.ringcentral.platform.metrics.samples.prometheus.PrometheusInstanceSamplesProviderBuilder.prometheusInstanceSamplesProvider; import static java.util.Objects.requireNonNull; @@ -18,7 +17,6 @@ public class PrometheusMetricsExporterBuilder { private PrometheusMetricsExporter.Format defaultFormat = PrometheusMetricsExporter.DEFAULT_FORMAT; private boolean convertNameToLowercase = PrometheusMetricsExporter.DEFAULT_CONVERT_NAME_TO_LOWER_CASE; - private Locale locale = PrometheusMetricsExporter.DEFAULT_LOCALE; private PrometheusMetricSanitizer sanitizer = new DefaultPrometheusMetricSanitizer(); private final List> instanceSamplesProviders = new ArrayList<>(); @@ -49,11 +47,6 @@ public PrometheusMetricsExporterBuilder convertNameToLowercase(boolean convertNa return this; } - public PrometheusMetricsExporterBuilder locale(Locale locale) { - this.locale = requireNonNull(locale); - return this; - } - public PrometheusMetricsExporterBuilder sanitizer(PrometheusMetricSanitizer sanitizer) { this.sanitizer = requireNonNull(sanitizer); return this; @@ -72,7 +65,6 @@ public PrometheusMetricsExporter build() { return new PrometheusMetricsExporter( defaultFormat, convertNameToLowercase, - locale, sanitizer, instanceSamplesProviders.size() == 1 ? instanceSamplesProviders.get(0) : new CompositeInstanceSamplesProvider<>(instanceSamplesProviders)); } diff --git a/metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/reporters/prometheus/DefaultPrometheusMetricSanitizerTest.java b/metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/reporters/prometheus/DefaultPrometheusMetricSanitizerTest.java index 7d93cd5..40f9277 100644 --- a/metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/reporters/prometheus/DefaultPrometheusMetricSanitizerTest.java +++ b/metrics-facade-prometheus/src/test/java/com/ringcentral/platform/metrics/reporters/prometheus/DefaultPrometheusMetricSanitizerTest.java @@ -28,6 +28,6 @@ public void sanitizingMetricName() { @Test public void sanitizingLabelName() { assertThat(sanitizer.sanitizeLabelName("a.1.:._.й.|"), is("a_1________")); - assertThat(sanitizer.sanitizeLabelNames(List.of(".a.1.:._.й.|")), is(List.of("label__a_1________"))); + assertThat(sanitizer.sanitizeLabelNames(List.of(".a.1.:._.й.|")), is(List.of("l__a_1________"))); } } \ No newline at end of file diff --git a/metrics-facade-samples/src/main/java/com/ringcentral/platform/metrics/samples/reporters/PrometheusMetricsExporterSample.java b/metrics-facade-samples/src/main/java/com/ringcentral/platform/metrics/samples/reporters/PrometheusMetricsExporterSample.java index 8780c3a..59610f2 100644 --- a/metrics-facade-samples/src/main/java/com/ringcentral/platform/metrics/samples/reporters/PrometheusMetricsExporterSample.java +++ b/metrics-facade-samples/src/main/java/com/ringcentral/platform/metrics/samples/reporters/PrometheusMetricsExporterSample.java @@ -27,7 +27,6 @@ import static com.ringcentral.platform.metrics.samples.prometheus.PrometheusInstanceSamplesProviderBuilder.prometheusInstanceSamplesProvider; import static com.ringcentral.platform.metrics.samples.prometheus.PrometheusSampleSpec.sampleSpec; import static com.ringcentral.platform.metrics.timer.configs.builders.TimerConfigBuilder.withTimer; -import static java.util.Locale.ENGLISH; import static java.util.concurrent.TimeUnit.SECONDS; @SuppressWarnings("ALL") @@ -91,7 +90,6 @@ public static void main(String[] args) throws Exception { PrometheusMetricsExporter exporter = prometheusMetricsExporter() .convertNameToLowercase() - .locale(ENGLISH) .addInstanceSamplesProvider(miSamplesProvider) .addInstanceSamplesProvider(new SimpleCollectorRegistryPrometheusInstanceSamplesProvider( name("defaultRegistry"), // optional prefix diff --git a/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusAutoConfiguration.java b/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusAutoConfiguration.java index 21c5337..a3a3adc 100644 --- a/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusAutoConfiguration.java +++ b/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusAutoConfiguration.java @@ -66,7 +66,6 @@ public PrometheusMetricsExporter prometheusMetricsExporter( configBuilder = new MfPrometheusConfigBuilder() .convertNameToLowercase(properties.getConvertNameToLowercase()) - .locale(properties.getLocale()) .rebase(configBuilder); MfPrometheusConfig config = configBuilder.build(); @@ -78,7 +77,6 @@ public PrometheusMetricsExporter prometheusMetricsExporter( PrometheusMetricsExporter exporter = prometheusMetricsExporterBuilder() .convertNameToLowercase(config.convertNameToLowercase()) - .locale(config.locale()) .addInstanceSamplesProvider(instanceSamplesProvider) .build(); diff --git a/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusConfig.java b/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusConfig.java index 88e10c6..7652a68 100644 --- a/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusConfig.java +++ b/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusConfig.java @@ -1,24 +1,20 @@ package com.ringcentral.platform.metrics.spring.prometheus; -import com.ringcentral.platform.metrics.samples.*; -import com.ringcentral.platform.metrics.samples.prometheus.*; - -import java.util.Locale; +import com.ringcentral.platform.metrics.samples.InstanceSamplesProvider; +import com.ringcentral.platform.metrics.samples.prometheus.PrometheusInstanceSample; +import com.ringcentral.platform.metrics.samples.prometheus.PrometheusSample; public class MfPrometheusConfig { private final InstanceSamplesProvider instanceSamplesProvider; private final boolean convertNameToLowercase; - private final Locale locale; public MfPrometheusConfig( InstanceSamplesProvider instanceSamplesProvider, - boolean convertNameToLowercase, - Locale locale) { + boolean convertNameToLowercase) { this.instanceSamplesProvider = instanceSamplesProvider; this.convertNameToLowercase = convertNameToLowercase; - this.locale = locale; } public boolean hasInstanceSamplesProvider() { @@ -32,12 +28,4 @@ public boolean hasInstanceSamplesProvider() { public boolean convertNameToLowercase() { return convertNameToLowercase; } - - public boolean hasLocale() { - return locale != null; - } - - public Locale locale() { - return locale; - } } diff --git a/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusConfigBuilder.java b/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusConfigBuilder.java index 36a00fd..03fd2b9 100644 --- a/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusConfigBuilder.java +++ b/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusConfigBuilder.java @@ -1,17 +1,15 @@ package com.ringcentral.platform.metrics.spring.prometheus; import com.ringcentral.platform.metrics.samples.InstanceSamplesProvider; -import com.ringcentral.platform.metrics.samples.prometheus.*; +import com.ringcentral.platform.metrics.samples.prometheus.PrometheusInstanceSample; +import com.ringcentral.platform.metrics.samples.prometheus.PrometheusSample; -import java.util.Locale; - -import static com.ringcentral.platform.metrics.reporters.prometheus.PrometheusMetricsExporter.*; +import static com.ringcentral.platform.metrics.reporters.prometheus.PrometheusMetricsExporter.DEFAULT_CONVERT_NAME_TO_LOWER_CASE; public class MfPrometheusConfigBuilder { private InstanceSamplesProvider instanceSamplesProvider; private Boolean convertNameToLowercase; - private Locale locale; public MfPrometheusConfigBuilder() {} @@ -24,10 +22,6 @@ public MfPrometheusConfigBuilder rebase(MfPrometheusConfigBuilder base) { convertNameToLowercase = base.convertNameToLowercase; } - if (base.locale != null && locale == null) { - locale = base.locale; - } - return this; } @@ -41,11 +35,6 @@ public MfPrometheusConfigBuilder convertNameToLowercase(Boolean convertNameToLow return this; } - public MfPrometheusConfigBuilder locale(Locale locale) { - this.locale = locale; - return this; - } - public MfPrometheusConfig build() { boolean convertNameToLowercase = DEFAULT_CONVERT_NAME_TO_LOWER_CASE; @@ -53,9 +42,6 @@ public MfPrometheusConfig build() { convertNameToLowercase = this.convertNameToLowercase; } - return new MfPrometheusConfig( - instanceSamplesProvider, - convertNameToLowercase, - locale != null ? locale : DEFAULT_LOCALE); + return new MfPrometheusConfig(instanceSamplesProvider, convertNameToLowercase); } } diff --git a/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusProperties.java b/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusProperties.java index 8e5d3f0..a6630ae 100644 --- a/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusProperties.java +++ b/metrics-facade-spring/metrics-facade-prometheus-spring-boot-autoconfigure/src/main/java/com/ringcentral/platform/metrics/spring/prometheus/MfPrometheusProperties.java @@ -3,15 +3,12 @@ import com.ringcentral.platform.metrics.spring.MfProperties; import org.springframework.boot.context.properties.ConfigurationProperties; -import java.util.Locale; - @ConfigurationProperties(prefix = MfPrometheusProperties.PREFIX) public class MfPrometheusProperties { public static final String PREFIX = MfProperties.PREFIX + ".prometheus"; private Boolean convertNameToLowercase; - private Locale locale; public Boolean getConvertNameToLowercase() { return convertNameToLowercase; @@ -20,12 +17,4 @@ public Boolean getConvertNameToLowercase() { public void setConvertNameToLowercase(Boolean convertNameToLowercase) { this.convertNameToLowercase = convertNameToLowercase; } - - public Locale getLocale() { - return locale; - } - - public void setLocale(Locale locale) { - this.locale = locale; - } }