Move Prometheus code from s-b-actuator to s-b-micrometer-metrics

Closes gh-47175
This commit is contained in:
Andy Wilkinson 2025-09-12 15:19:34 +01:00
parent 4f6243fc2c
commit 2dc80b4047
11 changed files with 41 additions and 18 deletions

View File

@ -26,7 +26,7 @@ import io.prometheus.metrics.model.registry.PrometheusRegistry;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.actuate.docs.MockMvcEndpointDocumentationTests; import org.springframework.boot.actuate.docs.MockMvcEndpointDocumentationTests;
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint; import org.springframework.boot.micrometer.metrics.export.prometheus.endpoint.PrometheusScrapeEndpoint;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;

View File

@ -28,6 +28,7 @@ import io.prometheus.metrics.expositionformats.PrometheusTextFormatWriter;
import io.prometheus.metrics.model.registry.PrometheusRegistry; import io.prometheus.metrics.model.registry.PrometheusRegistry;
import org.springframework.boot.actuate.endpoint.web.test.WebEndpointTest; import org.springframework.boot.actuate.endpoint.web.test.WebEndpointTest;
import org.springframework.boot.micrometer.metrics.export.prometheus.endpoint.PrometheusScrapeEndpoint;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;

View File

@ -28,8 +28,6 @@ import io.prometheus.metrics.tracer.common.SpanContext;
import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnAvailableEndpoint; import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnAvailableEndpoint;
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusPushGatewayManager;
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
@ -42,6 +40,8 @@ import org.springframework.boot.micrometer.metrics.autoconfigure.CompositeMeterR
import org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration; import org.springframework.boot.micrometer.metrics.autoconfigure.MetricsAutoConfiguration;
import org.springframework.boot.micrometer.metrics.autoconfigure.export.ConditionalOnEnabledMetricsExport; import org.springframework.boot.micrometer.metrics.autoconfigure.export.ConditionalOnEnabledMetricsExport;
import org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration; import org.springframework.boot.micrometer.metrics.autoconfigure.export.simple.SimpleMetricsExportAutoConfiguration;
import org.springframework.boot.micrometer.metrics.export.prometheus.PrometheusPushGatewayManager;
import org.springframework.boot.micrometer.metrics.export.prometheus.endpoint.PrometheusScrapeEndpoint;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;

View File

@ -22,8 +22,8 @@ import java.util.Map;
import org.jspecify.annotations.Nullable; import org.jspecify.annotations.Nullable;
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusPushGatewayManager.ShutdownOperation;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.micrometer.metrics.export.prometheus.PrometheusPushGatewayManager.ShutdownOperation;
/** /**
* {@link ConfigurationProperties @ConfigurationProperties} for configuring metrics export * {@link ConfigurationProperties @ConfigurationProperties} for configuring metrics export

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.actuate.metrics.export.prometheus; package org.springframework.boot.micrometer.metrics.export.prometheus;
import java.time.Duration; import java.time.Duration;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
@ -37,7 +37,7 @@ import org.springframework.util.Assert;
* *
* @author David J. M. Karlsen * @author David J. M. Karlsen
* @author Phillip Webb * @author Phillip Webb
* @since 2.1.0 * @since 4.0.0
*/ */
public class PrometheusPushGatewayManager { public class PrometheusPushGatewayManager {
@ -57,7 +57,6 @@ public class PrometheusPushGatewayManager {
* @param pushRate the rate at which push operations occur * @param pushRate the rate at which push operations occur
* @param shutdownOperation the shutdown operation that should be performed when * @param shutdownOperation the shutdown operation that should be performed when
* context is closed * context is closed
* @since 3.5.0
*/ */
public PrometheusPushGatewayManager(PushGateway pushGateway, Duration pushRate, public PrometheusPushGatewayManager(PushGateway pushGateway, Duration pushRate,
ShutdownOperation shutdownOperation) { ShutdownOperation shutdownOperation) {

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.actuate.metrics.export.prometheus; package org.springframework.boot.micrometer.metrics.export.prometheus.endpoint;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
@ -33,7 +33,7 @@ import org.springframework.util.MimeTypeUtils;
* A {@link Producible} enum for supported Prometheus formats. * A {@link Producible} enum for supported Prometheus formats.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
* @since 3.3.0 * @since 4.0.0
*/ */
public enum PrometheusOutputFormat implements Producible<PrometheusOutputFormat> { public enum PrometheusOutputFormat implements Producible<PrometheusOutputFormat> {

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.actuate.metrics.export.prometheus; package org.springframework.boot.micrometer.metrics.export.prometheus.endpoint;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
@ -40,7 +40,7 @@ import org.springframework.boot.actuate.endpoint.web.annotation.WebEndpoint;
* @author Jon Schneider * @author Jon Schneider
* @author Johnny Lim * @author Johnny Lim
* @author Moritz Halbritter * @author Moritz Halbritter
* @since 2.0.0 * @since 4.0.0
*/ */
@WebEndpoint(id = "prometheus") @WebEndpoint(id = "prometheus")
public class PrometheusScrapeEndpoint { public class PrometheusScrapeEndpoint {

View File

@ -0,0 +1,23 @@
/*
* Copyright 2012-present 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.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* Support for exporting metrics to Prometheus through a scrape endpoint.
*/
@NullMarked
package org.springframework.boot.micrometer.metrics.export.prometheus.endpoint;
import org.jspecify.annotations.NullMarked;

View File

@ -15,9 +15,9 @@
*/ */
/** /**
* Actuator support for exporting metrics to Prometheus. * Support for exporting metrics to Prometheus through a pushgateway.
*/ */
@NullMarked @NullMarked
package org.springframework.boot.actuate.metrics.export.prometheus; package org.springframework.boot.micrometer.metrics.export.prometheus;
import org.jspecify.annotations.NullMarked; import org.jspecify.annotations.NullMarked;

View File

@ -32,10 +32,10 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusPushGatewayManager;
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint;
import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.context.properties.source.MutuallyExclusiveConfigurationPropertiesException; import org.springframework.boot.context.properties.source.MutuallyExclusiveConfigurationPropertiesException;
import org.springframework.boot.micrometer.metrics.export.prometheus.PrometheusPushGatewayManager;
import org.springframework.boot.micrometer.metrics.export.prometheus.endpoint.PrometheusScrapeEndpoint;
import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.CapturedOutput;

View File

@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.springframework.boot.actuate.metrics.export.prometheus; package org.springframework.boot.micrometer.metrics.export.prometheus;
import java.time.Duration; import java.time.Duration;
import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledFuture;
@ -27,8 +27,8 @@ import org.mockito.Captor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusPushGatewayManager.PushGatewayTaskScheduler; import org.springframework.boot.micrometer.metrics.export.prometheus.PrometheusPushGatewayManager.PushGatewayTaskScheduler;
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusPushGatewayManager.ShutdownOperation; import org.springframework.boot.micrometer.metrics.export.prometheus.PrometheusPushGatewayManager.ShutdownOperation;
import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;