Merge branch '2.3.x'

Closes gh-22630
pull/22631/head
Andy Wilkinson 4 years ago
commit ddb4de2db1

@ -1468,14 +1468,7 @@ You can apply customizations to particular registry implementations by being mor
} }
---- ----
With that setup in place you can inject `MeterRegistry` in your components and register metrics: Spring Boot also <<production-ready-metrics-meter,configures built-in instrumentation>> that you can control via configuration or dedicated annotation markers.
[source,java,indent=0]
----
include::{code-examples}/actuate/metrics/SampleBean.java[tag=example]
----
Spring Boot also <<production-ready-metrics-meter,configures built-in instrumentation>> (i.e. `MeterBinder` implementations) that you can control via configuration or dedicated annotation markers.
@ -2113,8 +2106,16 @@ To register custom metrics, inject `MeterRegistry` into your component, as shown
include::{code-examples}/actuate/metrics/MetricsMeterRegistryInjectionExample.java[tag=component] include::{code-examples}/actuate/metrics/MetricsMeterRegistryInjectionExample.java[tag=component]
---- ----
If you find that you repeatedly instrument a suite of metrics across components or applications, you may encapsulate this suite in a `MeterBinder` implementation. If you metrics depend on other beans, it is recommend that you use a `MeterBinder` to register them, as shown in the following example:
[source,java,indent=0]
----
include::{code-examples}/actuate/metrics/SampleMeterBinderConfiguration.java[tag=example]
----
Using a `MeterBinder` ensures that the correct dependency relationships are set up and that the bean is available when the metric's value is retrieved.
By default, metrics from all `MeterBinder` beans will be automatically bound to the Spring-managed `MeterRegistry`. By default, metrics from all `MeterBinder` beans will be automatically bound to the Spring-managed `MeterRegistry`.
A `MeterBinder` implementation can also be useful if you find that you repeatedly instrument a suite of metrics across components or applications..

@ -1,5 +1,5 @@
/* /*
* Copyright 2012-2019 the original author or authors. * Copyright 2012-2020 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -16,30 +16,31 @@
package org.springframework.boot.docs.actuate.metrics; package org.springframework.boot.docs.actuate.metrics;
import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.binder.MeterBinder;
import org.springframework.stereotype.Component; import org.springframework.context.annotation.Bean;
/** /**
* Example to show manual usage of {@link MeterRegistry}. * Example to show configuration of a custom {@link MeterBinder}.
* *
* @author Stephane Nicoll * @author Andy Wilkinson
*/ */
// tag::example[] public class SampleMeterBinderConfiguration {
@Component
public class SampleBean {
private final Counter counter; // tag::example[]
@Bean
public SampleBean(MeterRegistry registry) { MeterBinder queueSize(Queue queue) {
this.counter = registry.counter("received.messages"); return (registry) -> Gauge.builder("queueSize", queue::size).register(registry);
} }
// end::example[]
static class Queue {
int size() {
return 5;
}
public void handleMessage(String message) {
this.counter.increment();
// handle message implementation
} }
} }
// end::example[]
Loading…
Cancel
Save