Polish "Permit use of https for configuring Prometheus push gateway"
Closes gh-16084
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user