Polish "Permit use of https for configuring Prometheus push gateway"

Closes gh-16084
pull/16278/head
Stephane Nicoll 6 years ago
parent eed4e9ea56
commit f4c4b1d3f0

@ -26,6 +26,8 @@ import io.micrometer.prometheus.PrometheusConfig;
import io.micrometer.prometheus.PrometheusMeterRegistry;
import io.prometheus.client.CollectorRegistry;
import io.prometheus.client.exporter.PushGateway;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnExposedEndpoint;
@ -107,6 +109,9 @@ public class PrometheusMetricsExportAutoConfiguration {
@ConditionalOnProperty(prefix = "management.metrics.export.prometheus.pushgateway", name = "enabled")
public static class PrometheusPushGatewayConfiguration {
private static final Log logger = LogFactory
.getLog(PrometheusPushGatewayConfiguration.class);
/**
* The fallback job name. We use 'spring' since there's a history of Prometheus
* spring integration defaulting to that name from when Prometheus integration
@ -135,6 +140,9 @@ public class PrometheusMetricsExportAutoConfiguration {
return new PushGateway(new URL(url));
}
catch (MalformedURLException ex) {
logger.warn(String.format(
"Invalid PushGateway base url '%s': update your configuration to a valid URL",
url));
return new PushGateway(url);
}
}

@ -1,5 +1,5 @@
/*
* Copyright 2012-2018 the original author or authors.
* Copyright 2012-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -83,7 +83,7 @@ public class PrometheusProperties {
/**
* Base URL for the Pushgateway.
*/
private String baseUrl = "localhost:9091";
private String baseUrl = "http://localhost:9091";
/**
* Frequency with which to push metrics.

@ -20,6 +20,7 @@ import io.micrometer.core.instrument.Clock;
import io.micrometer.prometheus.PrometheusConfig;
import io.micrometer.prometheus.PrometheusMeterRegistry;
import io.prometheus.client.CollectorRegistry;
import org.junit.Rule;
import org.junit.Test;
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
@ -28,6 +29,7 @@ import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScra
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.boot.test.rule.OutputCapture;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@ -42,6 +44,9 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
public class PrometheusMetricsExportAutoConfigurationTests {
@Rule
public final OutputCapture output = new OutputCapture();
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations
.of(PrometheusMetricsExportAutoConfiguration.class));
@ -152,9 +157,28 @@ public class PrometheusMetricsExportAutoConfigurationTests {
AutoConfigurations.of(ManagementContextAutoConfiguration.class))
.withPropertyValues(
"management.metrics.export.prometheus.pushgateway.enabled=true")
.withUserConfiguration(BaseConfiguration.class)
.run((context) -> hasGatewayURL(context,
"http://localhost:9091/metrics/job/"));
.withUserConfiguration(BaseConfiguration.class).run((context) -> {
assertThat(this.output.toString())
.doesNotContain("Invalid PushGateway base url");
hasGatewayURL(context, "http://localhost:9091/metrics/job/");
});
}
@Test
@Deprecated
public void withCustomLegacyPushGatewayURL() {
this.contextRunner
.withConfiguration(
AutoConfigurations.of(ManagementContextAutoConfiguration.class))
.withPropertyValues(
"management.metrics.export.prometheus.pushgateway.enabled=true",
"management.metrics.export.prometheus.pushgateway.base-url=localhost:9090")
.withUserConfiguration(BaseConfiguration.class).run((context) -> {
assertThat(this.output.toString())
.contains("Invalid PushGateway base url")
.contains("localhost:9090");
hasGatewayURL(context, "http://localhost:9090/metrics/job/");
});
}
@Test
@ -164,10 +188,10 @@ public class PrometheusMetricsExportAutoConfigurationTests {
AutoConfigurations.of(ManagementContextAutoConfiguration.class))
.withPropertyValues(
"management.metrics.export.prometheus.pushgateway.enabled=true",
"management.metrics.export.prometheus.pushgateway.base-url=https://localhost:8080/push")
"management.metrics.export.prometheus.pushgateway.base-url=https://example.com:8080")
.withUserConfiguration(BaseConfiguration.class)
.run((context) -> hasGatewayURL(context,
"https://localhost:8080/push/metrics/job/"));
"https://example.com:8080/metrics/job/"));
}
private void hasGatewayURL(AssertableApplicationContext context, String url) {

Loading…
Cancel
Save