Skip to content

Commit 1aea3c5

Browse files
wilkinsonaphilwebb
authored andcommitted
Create spring-boot-metrics module
1 parent b2393d6 commit 1aea3c5

File tree

141 files changed

+682
-698
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+682
-698
lines changed

settings.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ include "spring-boot-project:spring-boot-ldap"
9797
include "spring-boot-project:spring-boot-liquibase"
9898
include "spring-boot-project:spring-boot-neo4j"
9999
include "spring-boot-project:spring-boot-mail"
100+
include "spring-boot-project:spring-boot-metrics"
100101
include "spring-boot-project:spring-boot-mongodb"
101102
include "spring-boot-project:spring-boot-mustache"
102103
include "spring-boot-project:spring-boot-netty"

spring-boot-project/spring-boot-actuator-autoconfigure-all/build.gradle

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ configurations.all {
1919
dependencies {
2020
api(project(":spring-boot-project:spring-boot-actuator-autoconfigure"))
2121
api(project(":spring-boot-project:spring-boot-autoconfigure"))
22-
23-
implementation("com.fasterxml.jackson.core:jackson-databind")
24-
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
22+
23+
implementation(project(":spring-boot-project:spring-boot-metrics"))
2524
implementation(project(":spring-boot-project:spring-boot-security")) {
2625
exclude(group: "org.springframework.security")
2726
}
27+
implementation("com.fasterxml.jackson.core:jackson-databind")
28+
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
2829

2930
optional(project(":spring-boot-project:spring-boot-activemq"))
3031
optional(project(":spring-boot-project:spring-boot-amqp"))
@@ -43,6 +44,7 @@ dependencies {
4344
optional(project(":spring-boot-project:spring-boot-jetty"))
4445
optional(project(":spring-boot-project:spring-boot-jsonb"))
4546
optional(project(":spring-boot-project:spring-boot-kafka"))
47+
optional(project(":spring-boot-project:spring-boot-metrics"))
4648
optional(project(":spring-boot-project:spring-boot-mongodb"))
4749
optional(project(":spring-boot-project:spring-boot-r2dbc"))
4850
optional(project(":spring-boot-project:spring-boot-reactor-netty"))
@@ -67,7 +69,6 @@ dependencies {
6769
optional("io.lettuce:lettuce-core")
6870
optional("io.micrometer:micrometer-observation")
6971
optional("io.micrometer:micrometer-jakarta9")
70-
optional("io.micrometer:micrometer-java21")
7172
optional("io.micrometer:micrometer-tracing")
7273
optional("io.micrometer:micrometer-tracing-bridge-brave")
7374
optional("io.micrometer:micrometer-tracing-bridge-otel")

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/AutoTimeProperties.java

Lines changed: 0 additions & 74 deletions
This file was deleted.

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/amqp/RabbitMetricsAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020
import io.micrometer.core.instrument.MeterRegistry;
2121

2222
import org.springframework.amqp.rabbit.connection.AbstractConnectionFactory;
23-
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
2423
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
2524
import org.springframework.boot.amqp.actuate.metrics.RabbitMetrics;
2625
import org.springframework.boot.autoconfigure.AutoConfiguration;
2726
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2827
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2928
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
29+
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
3030
import org.springframework.context.ApplicationContext;
3131
import org.springframework.context.annotation.Bean;
3232

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/cache/CacheMetricsAutoConfiguration.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.metrics.cache;
1818

19-
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
2019
import org.springframework.boot.autoconfigure.AutoConfiguration;
2120
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2221
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2322
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2423
import org.springframework.boot.cache.actuate.metrics.CacheMetricsRegistrar;
24+
import org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration;
25+
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
2526
import org.springframework.cache.Cache;
2627
import org.springframework.cache.CacheManager;
2728
import org.springframework.context.annotation.Import;
@@ -33,7 +34,7 @@
3334
* @author Stephane Nicoll
3435
* @since 2.0.0
3536
*/
36-
@AutoConfiguration(after = MetricsAutoConfiguration.class,
37+
@AutoConfiguration(after = { MetricsAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class },
3738
afterName = "org.springframework.boot.cache.autoconfigure.CacheAutoConfiguration")
3839
@ConditionalOnBean(CacheManager.class)
3940
@ConditionalOnClass(CacheMetricsRegistrar.class)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
/*
2+
* Copyright 2012-2025 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.boot.actuate.autoconfigure.metrics.data;
18+
19+
import org.springframework.boot.context.properties.ConfigurationProperties;
20+
21+
/**
22+
* {@link ConfigurationProperties @ConfigurationProperties} for configuring
23+
* Micrometer-based Spring Data metrics.
24+
*
25+
* @author Andy Wilkinson
26+
* @since 4.0.0
27+
*/
28+
@ConfigurationProperties("management.metrics.data")
29+
public class DataMetricsProperties {
30+
31+
private final Repository repository = new Repository();
32+
33+
public Repository getRepository() {
34+
return this.repository;
35+
}
36+
37+
public static class Repository {
38+
39+
/**
40+
* Name of the metric for sent requests.
41+
*/
42+
private String metricName = "spring.data.repository.invocations";
43+
44+
/**
45+
* Auto-timed request settings.
46+
*/
47+
private final Autotime autotime = new Autotime();
48+
49+
public String getMetricName() {
50+
return this.metricName;
51+
}
52+
53+
public void setMetricName(String metricName) {
54+
this.metricName = metricName;
55+
}
56+
57+
public Autotime getAutotime() {
58+
return this.autotime;
59+
}
60+
61+
public static class Autotime {
62+
63+
/**
64+
* Whether to enable auto-timing.
65+
*/
66+
private boolean enabled = true;
67+
68+
/**
69+
* Whether to publish percentile histograms.
70+
*/
71+
private boolean percentilesHistogram;
72+
73+
/**
74+
* Percentiles for which additional time series should be published.
75+
*/
76+
private double[] percentiles;
77+
78+
public boolean isEnabled() {
79+
return this.enabled;
80+
}
81+
82+
public void setEnabled(boolean enabled) {
83+
this.enabled = enabled;
84+
}
85+
86+
public boolean isPercentilesHistogram() {
87+
return this.percentilesHistogram;
88+
}
89+
90+
public void setPercentilesHistogram(boolean percentilesHistogram) {
91+
this.percentilesHistogram = percentilesHistogram;
92+
}
93+
94+
public double[] getPercentiles() {
95+
return this.percentiles;
96+
}
97+
98+
public void setPercentiles(double[] percentiles) {
99+
this.percentiles = percentiles;
100+
}
101+
102+
}
103+
104+
}
105+
106+
}
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,29 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.actuate.autoconfigure.metrics;
17+
package org.springframework.boot.actuate.autoconfigure.metrics.data;
1818

1919
import io.micrometer.core.instrument.Timer.Builder;
2020

21-
import org.springframework.boot.actuate.metrics.AutoTimer;
21+
import org.springframework.boot.actuate.autoconfigure.metrics.data.DataMetricsProperties.Repository.Autotime;
22+
import org.springframework.boot.actuate.metrics.data.AutoTimer;
2223

2324
/**
24-
* {@link AutoTimer} whose behavior is configured by {@link AutoTimeProperties}.
25+
* {@link AutoTimer} whose behavior is configured by {@link Autotime} properties.
2526
*
2627
* @author Andy Wilkinson
27-
* @since 3.0.0
28+
* @since 4.0.0
2829
*/
2930
public class PropertiesAutoTimer implements AutoTimer {
3031

31-
private final AutoTimeProperties properties;
32+
private final Autotime properties;
3233

3334
/**
3435
* Create a new {@link PropertiesAutoTimer} configured using the given
3536
* {@code properties}.
3637
* @param properties the properties to configure auto-timing
3738
*/
38-
public PropertiesAutoTimer(AutoTimeProperties properties) {
39+
public PropertiesAutoTimer(Autotime properties) {
3940
this.properties = properties;
4041
}
4142

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/data/RepositoryMetricsAutoConfiguration.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,7 @@
1919
import io.micrometer.core.instrument.MeterRegistry;
2020

2121
import org.springframework.beans.factory.ObjectProvider;
22-
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
23-
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
24-
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties;
25-
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties.Data.Repository;
26-
import org.springframework.boot.actuate.autoconfigure.metrics.PropertiesAutoTimer;
22+
import org.springframework.boot.actuate.autoconfigure.metrics.data.DataMetricsProperties.Repository;
2723
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
2824
import org.springframework.boot.actuate.metrics.data.DefaultRepositoryTagsProvider;
2925
import org.springframework.boot.actuate.metrics.data.MetricsRepositoryMethodInvocationListener;
@@ -34,6 +30,8 @@
3430
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3531
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3632
import org.springframework.boot.context.properties.EnableConfigurationProperties;
33+
import org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration;
34+
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
3735
import org.springframework.context.annotation.Bean;
3836
import org.springframework.util.function.SingletonSupplier;
3937

@@ -47,12 +45,12 @@
4745
SimpleMetricsExportAutoConfiguration.class })
4846
@ConditionalOnClass(org.springframework.data.repository.Repository.class)
4947
@ConditionalOnBean(MeterRegistry.class)
50-
@EnableConfigurationProperties(MetricsProperties.class)
48+
@EnableConfigurationProperties(DataMetricsProperties.class)
5149
public class RepositoryMetricsAutoConfiguration {
5250

53-
private final MetricsProperties properties;
51+
private final DataMetricsProperties properties;
5452

55-
public RepositoryMetricsAutoConfiguration(MetricsProperties properties) {
53+
public RepositoryMetricsAutoConfiguration(DataMetricsProperties properties) {
5654
this.properties = properties;
5755
}
5856

@@ -66,7 +64,7 @@ public DefaultRepositoryTagsProvider repositoryTagsProvider() {
6664
@ConditionalOnMissingBean
6765
public MetricsRepositoryMethodInvocationListener metricsRepositoryMethodInvocationListener(
6866
ObjectProvider<MeterRegistry> registry, RepositoryTagsProvider tagsProvider) {
69-
Repository properties = this.properties.getData().getRepository();
67+
Repository properties = this.properties.getRepository();
7068
return new MetricsRepositoryMethodInvocationListener(registry::getObject, tagsProvider,
7169
properties.getMetricName(), new PropertiesAutoTimer(properties.getAutotime()));
7270
}

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/appoptics/AppOpticsMetricsExportAutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
import io.micrometer.core.instrument.Clock;
2222
import io.micrometer.core.ipc.http.HttpUrlConnectionSender;
2323

24-
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
25-
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
2624
import org.springframework.boot.actuate.autoconfigure.metrics.export.ConditionalOnEnabledMetricsExport;
2725
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
2826
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -31,6 +29,8 @@
3129
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3230
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3331
import org.springframework.boot.context.properties.EnableConfigurationProperties;
32+
import org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration;
33+
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
3434
import org.springframework.context.annotation.Bean;
3535

3636
/**

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/atlas/AtlasMetricsExportAutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import io.micrometer.atlas.AtlasMeterRegistry;
2121
import io.micrometer.core.instrument.Clock;
2222

23-
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
24-
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
2523
import org.springframework.boot.actuate.autoconfigure.metrics.export.ConditionalOnEnabledMetricsExport;
2624
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
2725
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -30,6 +28,8 @@
3028
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3129
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3230
import org.springframework.boot.context.properties.EnableConfigurationProperties;
31+
import org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration;
32+
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
3333
import org.springframework.context.annotation.Bean;
3434

3535
/**

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/datadog/DatadogMetricsExportAutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,6 @@
2121
import io.micrometer.datadog.DatadogConfig;
2222
import io.micrometer.datadog.DatadogMeterRegistry;
2323

24-
import org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration;
25-
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
2624
import org.springframework.boot.actuate.autoconfigure.metrics.export.ConditionalOnEnabledMetricsExport;
2725
import org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration;
2826
import org.springframework.boot.autoconfigure.AutoConfiguration;
@@ -31,6 +29,8 @@
3129
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
3230
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
3331
import org.springframework.boot.context.properties.EnableConfigurationProperties;
32+
import org.springframework.boot.metrics.autoconfigure.CompositeMeterRegistryAutoConfiguration;
33+
import org.springframework.boot.metrics.autoconfigure.MetricsAutoConfiguration;
3434
import org.springframework.context.annotation.Bean;
3535

3636
/**

0 commit comments

Comments
 (0)