Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
462442e7
Commit
462442e7
authored
Jan 07, 2020
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish "Add Stackdriver metrics export support"
See gh-19528
parent
d42256d8
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
70 additions
and
25 deletions
+70
-25
pom.xml
...g-boot-project/spring-boot-actuator-autoconfigure/pom.xml
+2
-2
StackdriverMetricsExportAutoConfiguration.java
...tackdriver/StackdriverMetricsExportAutoConfiguration.java
+10
-7
StackdriverProperties.java
...ure/metrics/export/stackdriver/StackdriverProperties.java
+9
-7
StackdriverPropertiesConfigAdapter.java
...xport/stackdriver/StackdriverPropertiesConfigAdapter.java
+5
-1
StackdriverMetricsExportAutoConfigurationTest.java
...driver/StackdriverMetricsExportAutoConfigurationTest.java
+9
-6
StackdriverPropertiesConfigAdapterTest.java
...t/stackdriver/StackdriverPropertiesConfigAdapterTest.java
+2
-1
StackdriverPropertiesTest.java
...metrics/export/stackdriver/StackdriverPropertiesTest.java
+2
-1
pom.xml
spring-boot-project/spring-boot-dependencies/pom.xml
+11
-0
production-ready-features.adoc
...oot-docs/src/main/asciidoc/production-ready-features.adoc
+20
-0
No files found.
spring-boot-project/spring-boot-actuator-autoconfigure/pom.xml
View file @
462442e7
...
...
@@ -176,12 +176,12 @@
</dependency>
<dependency>
<groupId>
io.micrometer
</groupId>
<artifactId>
micrometer-registry-sta
tsd
</artifactId>
<artifactId>
micrometer-registry-sta
ckdriver
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
io.micrometer
</groupId>
<artifactId>
micrometer-registry-sta
ckdriver
</artifactId>
<artifactId>
micrometer-registry-sta
tsd
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
...
...
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverMetricsExportAutoConfiguration.java
View file @
462442e7
...
...
@@ -19,6 +19,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.stackdrive
import
io.micrometer.core.instrument.Clock
;
import
io.micrometer.stackdriver.StackdriverConfig
;
import
io.micrometer.stackdriver.StackdriverMeterRegistry
;
import
org.springframework.boot.actuate.autoconfigure.metrics.CompositeMeterRegistryAutoConfiguration
;
import
org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration
;
import
org.springframework.boot.actuate.autoconfigure.metrics.export.simple.SimpleMetricsExportAutoConfiguration
;
...
...
@@ -34,9 +35,12 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
/**
* {@link EnableAutoConfiguration Auto-configuration} for exporting metrics to Stackdriver.
* {@link EnableAutoConfiguration Auto-configuration} for exporting metrics to
* Stackdriver.
*
* @author Johannes Graf
* @author Stephane Nicoll
* @since 2.3.0
*/
@Configuration
(
proxyBeanMethods
=
false
)
@AutoConfigureBefore
({
CompositeMeterRegistryAutoConfiguration
.
class
,
SimpleMetricsExportAutoConfiguration
.
class
})
...
...
@@ -44,10 +48,10 @@ import org.springframework.context.annotation.Configuration;
@ConditionalOnBean
(
Clock
.
class
)
@ConditionalOnClass
(
StackdriverMeterRegistry
.
class
)
@ConditionalOnProperty
(
prefix
=
"management.metrics.export.stackdriver"
,
name
=
"enabled"
,
havingValue
=
"true"
,
matchIfMissing
=
true
)
matchIfMissing
=
true
)
@EnableConfigurationProperties
(
StackdriverProperties
.
class
)
public
class
StackdriverMetricsExportAutoConfiguration
{
private
final
StackdriverProperties
properties
;
public
StackdriverMetricsExportAutoConfiguration
(
StackdriverProperties
stackdriverProperties
)
{
...
...
@@ -62,9 +66,8 @@ public class StackdriverMetricsExportAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public
StackdriverMeterRegistry
StackdriverMeterRegistry
(
StackdriverConfig
stackdriverConfig
,
Clock
clock
)
{
return
StackdriverMeterRegistry
.
builder
(
stackdriverConfig
)
.
clock
(
clock
)
.
build
();
public
StackdriverMeterRegistry
stackdriverMeterRegistry
(
StackdriverConfig
stackdriverConfig
,
Clock
clock
)
{
return
StackdriverMeterRegistry
.
builder
(
stackdriverConfig
).
clock
(
clock
).
build
();
}
}
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverProperties.java
View file @
462442e7
...
...
@@ -19,28 +19,29 @@ package org.springframework.boot.actuate.autoconfigure.metrics.export.stackdrive
import
org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryProperties
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
/**
* {@link ConfigurationProperties @ConfigurationProperties} for configuring Stackdriver
metrics
* export.
* {@link ConfigurationProperties @ConfigurationProperties} for configuring Stackdriver
*
metrics
export.
*
* @author Johannes Graf
* @author Stephane Nicoll
* @since 2.3.0
*/
@ConfigurationProperties
(
prefix
=
"management.metrics.export.stackdriver"
)
public
class
StackdriverProperties
extends
StepRegistryProperties
{
/**
*
The ID of your google cloud platform project
*
Identifier of the Google Cloud project to monitor.
*/
private
String
projectId
;
/**
*
The resource type of the metrics
*
Monitored resource type.
*/
private
String
resourceType
=
"global"
;
public
String
getProjectId
()
{
return
projectId
;
return
this
.
projectId
;
}
public
void
setProjectId
(
String
projectId
)
{
...
...
@@ -48,10 +49,11 @@ public class StackdriverProperties extends StepRegistryProperties {
}
public
String
getResourceType
()
{
return
resourceType
;
return
this
.
resourceType
;
}
public
void
setResourceType
(
String
resourceType
)
{
this
.
resourceType
=
resourceType
;
}
}
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapter.java
View file @
462442e7
...
...
@@ -17,14 +17,17 @@
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
.
metrics
.
export
.
stackdriver
;
import
io.micrometer.stackdriver.StackdriverConfig
;
import
org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesConfigAdapter
;
/**
* Adapter to convert {@link StackdriverProperties} to a {@link StackdriverConfig}.
*
* @author Johannes Graf
* @since 2.3.0
*/
public
class
StackdriverPropertiesConfigAdapter
extends
StepRegistryPropertiesConfigAdapter
<
StackdriverProperties
>
implements
StackdriverConfig
{
public
class
StackdriverPropertiesConfigAdapter
extends
StepRegistryPropertiesConfigAdapter
<
StackdriverProperties
>
implements
StackdriverConfig
{
public
StackdriverPropertiesConfigAdapter
(
StackdriverProperties
properties
)
{
super
(
properties
);
...
...
@@ -39,4 +42,5 @@ public class StackdriverPropertiesConfigAdapter extends StepRegistryPropertiesCo
public
String
resourceType
()
{
return
get
(
StackdriverProperties:
:
getResourceType
,
StackdriverConfig
.
super
::
resourceType
);
}
}
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverMetricsExportAutoConfigurationTest.java
View file @
462442e7
...
...
@@ -20,6 +20,7 @@ import io.micrometer.core.instrument.Clock;
import
io.micrometer.stackdriver.StackdriverConfig
;
import
io.micrometer.stackdriver.StackdriverMeterRegistry
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.boot.autoconfigure.AutoConfigurations
;
import
org.springframework.boot.test.context.runner.ApplicationContextRunner
;
import
org.springframework.context.annotation.Bean
;
...
...
@@ -52,7 +53,7 @@ class StackdriverMetricsExportAutoConfigurationTest {
@Test
void
autoConfiguresConfigAndMeterRegistry
()
{
this
.
contextRunner
.
withUserConfiguration
(
BaseConfiguration
.
class
)
.
withPropertyValues
(
"management.metrics.export.stackdriver.project-id=
qwer
t"
)
.
withPropertyValues
(
"management.metrics.export.stackdriver.project-id=
test-projec
t"
)
.
run
((
context
)
->
assertThat
(
context
).
hasSingleBean
(
StackdriverMeterRegistry
.
class
)
.
hasSingleBean
(
StackdriverConfig
.
class
));
}
...
...
@@ -67,14 +68,15 @@ class StackdriverMetricsExportAutoConfigurationTest {
@Test
void
allowsCustomConfigToBeUsed
()
{
this
.
contextRunner
.
withUserConfiguration
(
CustomConfigConfiguration
.
class
).
run
((
context
)
->
assertThat
(
context
)
.
hasSingleBean
(
StackdriverMeterRegistry
.
class
).
hasSingleBean
(
StackdriverConfig
.
class
).
hasBean
(
"customConfig"
));
this
.
contextRunner
.
withUserConfiguration
(
CustomConfigConfiguration
.
class
)
.
run
((
context
)
->
assertThat
(
context
).
hasSingleBean
(
StackdriverMeterRegistry
.
class
)
.
hasSingleBean
(
StackdriverConfig
.
class
).
hasBean
(
"customConfig"
));
}
@Test
void
allowsCustomRegistryToBeUsed
()
{
this
.
contextRunner
.
withUserConfiguration
(
CustomRegistryConfiguration
.
class
)
.
withPropertyValues
(
"management.metrics.export.stackdriver.project-id=
qwer
t"
)
.
withPropertyValues
(
"management.metrics.export.stackdriver.project-id=
test-projec
t"
)
.
run
((
context
)
->
assertThat
(
context
).
hasSingleBean
(
StackdriverMeterRegistry
.
class
)
.
hasBean
(
"customRegistry"
).
hasSingleBean
(
StackdriverConfig
.
class
));
}
...
...
@@ -82,7 +84,7 @@ class StackdriverMetricsExportAutoConfigurationTest {
@Test
void
stopsMeterRegistryWhenContextIsClosed
()
{
this
.
contextRunner
.
withUserConfiguration
(
BaseConfiguration
.
class
)
.
withPropertyValues
(
"management.metrics.export.stackdriver.project-id=
qwer
t"
).
run
((
context
)
->
{
.
withPropertyValues
(
"management.metrics.export.stackdriver.project-id=
test-projec
t"
).
run
((
context
)
->
{
StackdriverMeterRegistry
registry
=
context
.
getBean
(
StackdriverMeterRegistry
.
class
);
assertThat
(
registry
.
isClosed
()).
isFalse
();
context
.
close
();
...
...
@@ -108,7 +110,7 @@ class StackdriverMetricsExportAutoConfigurationTest {
StackdriverConfig
customConfig
()
{
return
(
key
)
->
{
if
(
"stackdriver.projectId"
.
equals
(
key
))
{
return
"
qwer
t"
;
return
"
test-projec
t"
;
}
return
null
;
};
...
...
@@ -126,4 +128,5 @@ class StackdriverMetricsExportAutoConfigurationTest {
}
}
}
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesConfigAdapterTest.java
View file @
462442e7
...
...
@@ -16,7 +16,6 @@
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
.
metrics
.
export
.
stackdriver
;
import
org.junit.jupiter.api.Test
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -34,10 +33,12 @@ class StackdriverPropertiesConfigAdapterTest {
properties
.
setProjectId
(
"my-gcp-project-id"
);
assertThat
(
new
StackdriverPropertiesConfigAdapter
(
properties
).
projectId
()).
isEqualTo
(
"my-gcp-project-id"
);
}
@Test
void
whenPropertiesResourceTypeIsSetAdapterResourceTypeReturnsIt
()
{
StackdriverProperties
properties
=
new
StackdriverProperties
();
properties
.
setResourceType
(
"my-resource-type"
);
assertThat
(
new
StackdriverPropertiesConfigAdapter
(
properties
).
resourceType
()).
isEqualTo
(
"my-resource-type"
);
}
}
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/stackdriver/StackdriverPropertiesTest.java
View file @
462442e7
...
...
@@ -16,9 +16,9 @@
package
org
.
springframework
.
boot
.
actuate
.
autoconfigure
.
metrics
.
export
.
stackdriver
;
import
io.micrometer.stackdriver.StackdriverConfig
;
import
org.junit.jupiter.api.Test
;
import
org.springframework.boot.actuate.autoconfigure.metrics.export.properties.StepRegistryPropertiesTests
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -37,4 +37,5 @@ class StackdriverPropertiesTest extends StepRegistryPropertiesTests {
assertStepRegistryDefaultValues
(
properties
,
config
);
assertThat
(
properties
.
getResourceType
()).
isEqualTo
(
config
.
resourceType
());
}
}
spring-boot-project/spring-boot-dependencies/pom.xml
View file @
462442e7
...
...
@@ -1038,6 +1038,17 @@
<artifactId>
lettuce-core
</artifactId>
<version>
${lettuce.version}
</version>
</dependency>
<dependency>
<groupId>
io.micrometer
</groupId>
<artifactId>
micrometer-registry-stackdriver
</artifactId>
<version>
${micrometer.version}
</version>
<exclusions>
<exclusion>
<groupId>
javax.annotation
</groupId>
<artifactId>
javax.annotation-api
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
io.micrometer
</groupId>
<artifactId>
micrometer-bom
</artifactId>
...
...
spring-boot-project/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc
View file @
462442e7
...
...
@@ -1245,6 +1245,7 @@ Spring Boot Actuator provides dependency management and auto-configuration for h
- <<production-ready-metrics-export-prometheus,Prometheus>>
- <<production-ready-metrics-export-signalfx,SignalFx>>
- <<production-ready-metrics-export-simple,Simple (in-memory)>>
- <<production-ready-metrics-export-stackdriver,Stackdriver>>
- <<production-ready-metrics-export-statsd,StatsD>>
- <<production-ready-metrics-export-wavefront,Wavefront>>
...
...
@@ -1584,6 +1585,25 @@ You can also disable it explicitly:
[[production-ready-metrics-export-stackdriver]]
==== Stackdriver
Stackdriver registry pushes metrics to https://cloud.google.com/stackdriver/[Stackdriver] periodically.
To export metrics to SaaS {micrometer-registry-docs}/stackdriver[Stackdriver], your Google Cloud project id must be provided:
[source,properties,indent=0,configprops]
----
management.metrics.export.stackdriver.project-id=my-project
----
You can also change the interval at which metrics are sent to Stackdriver:
[source,properties,indent=0,configprops]
----
management.metrics.export.stackdriver.step=30s
----
[[production-ready-metrics-export-statsd]]
==== StatsD
The StatsD registry pushes metrics over UDP to a StatsD agent eagerly.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment