Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit f4c4b1d

Browse files
committed
Polish "Permit use of https for configuring Prometheus push gateway"
Closes spring-projectsgh-16084
1 parent eed4e9e commit f4c4b1d

File tree

3 files changed

+39
-7
lines changed

3 files changed

+39
-7
lines changed

‎spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfiguration.java‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
import io.micrometer.prometheus.PrometheusMeterRegistry;
2727
import io.prometheus.client.CollectorRegistry;
2828
import io.prometheus.client.exporter.PushGateway;
29+
import org.apache.commons.logging.Log;
30+
import org.apache.commons.logging.LogFactory;
2931

3032
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint;
3133
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnExposedEndpoint;
@@ -107,6 +109,9 @@ public PrometheusScrapeEndpoint prometheusEndpoint(
107109
@ConditionalOnProperty(prefix = "management.metrics.export.prometheus.pushgateway", name = "enabled")
108110
public static class PrometheusPushGatewayConfiguration {
109111

112+
private static final Log logger = LogFactory
113+
.getLog(PrometheusPushGatewayConfiguration.class);
114+
110115
/**
111116
* The fallback job name. We use 'spring' since there's a history of Prometheus
112117
* spring integration defaulting to that name from when Prometheus integration
@@ -135,6 +140,9 @@ private PushGateway getPushGateway(String url) {
135140
return new PushGateway(new URL(url));
136141
}
137142
catch (MalformedURLException ex) {
143+
logger.warn(String.format(
144+
"Invalid PushGateway base url '%s': update your configuration to a valid URL",
145+
url));
138146
return new PushGateway(url);
139147
}
140148
}

‎spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusProperties.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2018 the original author or authors.
2+
* Copyright 2012-2019 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -83,7 +83,7 @@ public static class Pushgateway {
8383
/**
8484
* Base URL for the Pushgateway.
8585
*/
86-
private String baseUrl = "localhost:9091";
86+
private String baseUrl = "http://localhost:9091";
8787

8888
/**
8989
* Frequency with which to push metrics.

‎spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfigurationTests.java‎

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.micrometer.prometheus.PrometheusConfig;
2121
import io.micrometer.prometheus.PrometheusMeterRegistry;
2222
import io.prometheus.client.CollectorRegistry;
23+
import org.junit.Rule;
2324
import org.junit.Test;
2425

2526
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
@@ -28,6 +29,7 @@
2829
import org.springframework.boot.autoconfigure.AutoConfigurations;
2930
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
3031
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
32+
import org.springframework.boot.test.rule.OutputCapture;
3133
import org.springframework.context.annotation.Bean;
3234
import org.springframework.context.annotation.Configuration;
3335
import org.springframework.context.annotation.Import;
@@ -42,6 +44,9 @@
4244
*/
4345
public class PrometheusMetricsExportAutoConfigurationTests {
4446

47+
@Rule
48+
public final OutputCapture output = new OutputCapture();
49+
4550
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
4651
.withConfiguration(AutoConfigurations
4752
.of(PrometheusMetricsExportAutoConfiguration.class));
@@ -152,9 +157,28 @@ public void withPushGatewayEnabled() {
152157
AutoConfigurations.of(ManagementContextAutoConfiguration.class))
153158
.withPropertyValues(
154159
"management.metrics.export.prometheus.pushgateway.enabled=true")
155-
.withUserConfiguration(BaseConfiguration.class)
156-
.run((context) -> hasGatewayURL(context,
157-
"http://localhost:9091/metrics/job/"));
160+
.withUserConfiguration(BaseConfiguration.class).run((context) -> {
161+
assertThat(this.output.toString())
162+
.doesNotContain("Invalid PushGateway base url");
163+
hasGatewayURL(context, "http://localhost:9091/metrics/job/");
164+
});
165+
}
166+
167+
@Test
168+
@Deprecated
169+
public void withCustomLegacyPushGatewayURL() {
170+
this.contextRunner
171+
.withConfiguration(
172+
AutoConfigurations.of(ManagementContextAutoConfiguration.class))
173+
.withPropertyValues(
174+
"management.metrics.export.prometheus.pushgateway.enabled=true",
175+
"management.metrics.export.prometheus.pushgateway.base-url=localhost:9090")
176+
.withUserConfiguration(BaseConfiguration.class).run((context) -> {
177+
assertThat(this.output.toString())
178+
.contains("Invalid PushGateway base url")
179+
.contains("localhost:9090");
180+
hasGatewayURL(context, "http://localhost:9090/metrics/job/");
181+
});
158182
}
159183

160184
@Test
@@ -164,10 +188,10 @@ public void withCustomPushGatewayURL() {
164188
AutoConfigurations.of(ManagementContextAutoConfiguration.class))
165189
.withPropertyValues(
166190
"management.metrics.export.prometheus.pushgateway.enabled=true",
167-
"management.metrics.export.prometheus.pushgateway.base-url=https://localhost:8080/push")
191+
"management.metrics.export.prometheus.pushgateway.base-url=https://example.com:8080")
168192
.withUserConfiguration(BaseConfiguration.class)
169193
.run((context) -> hasGatewayURL(context,
170-
"https://localhost:8080/push/metrics/job/"));
194+
"https://example.com:8080/metrics/job/"));
171195
}
172196

173197
private void hasGatewayURL(AssertableApplicationContext context, String url) {

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /