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.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.Configuration;

View File

@ -28,6 +28,7 @@ import io.prometheus.metrics.expositionformats.PrometheusTextFormatWriter;
import io.prometheus.metrics.model.registry.PrometheusRegistry;
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.Configuration;
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.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.EnableAutoConfiguration;
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.export.ConditionalOnEnabledMetricsExport;
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.Configuration;
import org.springframework.core.env.Environment;

View File

@ -22,8 +22,8 @@ import java.util.Map;
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.micrometer.metrics.export.prometheus.PrometheusPushGatewayManager.ShutdownOperation;
/**
* {@link ConfigurationProperties @ConfigurationProperties} for configuring metrics export

View File

@ -14,7 +14,7 @@
* 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.util.concurrent.Executors;
@ -37,7 +37,7 @@ import org.springframework.util.Assert;
*
* @author David J. M. Karlsen
* @author Phillip Webb
* @since 2.1.0
* @since 4.0.0
*/
public class PrometheusPushGatewayManager {
@ -57,7 +57,6 @@ public class PrometheusPushGatewayManager {
* @param pushRate the rate at which push operations occur
* @param shutdownOperation the shutdown operation that should be performed when
* context is closed
* @since 3.5.0
*/
public PrometheusPushGatewayManager(PushGateway pushGateway, Duration pushRate,
ShutdownOperation shutdownOperation) {

View File

@ -14,7 +14,7 @@
* 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.OutputStream;
@ -33,7 +33,7 @@ import org.springframework.util.MimeTypeUtils;
* A {@link Producible} enum for supported Prometheus formats.
*
* @author Andy Wilkinson
* @since 3.3.0
* @since 4.0.0
*/
public enum PrometheusOutputFormat implements Producible<PrometheusOutputFormat> {

View File

@ -14,7 +14,7 @@
* 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.IOException;
@ -40,7 +40,7 @@ import org.springframework.boot.actuate.endpoint.web.annotation.WebEndpoint;
* @author Jon Schneider
* @author Johnny Lim
* @author Moritz Halbritter
* @since 2.0.0
* @since 4.0.0
*/
@WebEndpoint(id = "prometheus")
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
package org.springframework.boot.actuate.metrics.export.prometheus;
package org.springframework.boot.micrometer.metrics.export.prometheus;
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.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.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.runner.ApplicationContextRunner;
import org.springframework.boot.test.system.CapturedOutput;

View File

@ -14,7 +14,7 @@
* 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.util.concurrent.ScheduledFuture;
@ -27,8 +27,8 @@ import org.mockito.Captor;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusPushGatewayManager.PushGatewayTaskScheduler;
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusPushGatewayManager.ShutdownOperation;
import org.springframework.boot.micrometer.metrics.export.prometheus.PrometheusPushGatewayManager.PushGatewayTaskScheduler;
import org.springframework.boot.micrometer.metrics.export.prometheus.PrometheusPushGatewayManager.ShutdownOperation;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;