Registering Custom Metrics
To register custom metrics, inject MeterRegistry into your component:
- 
Java 
- 
Kotlin 
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Tags;
import org.springframework.stereotype.Component;
@Component
public class MyBean {
	private final Dictionary dictionary;
	public MyBean(MeterRegistry registry) {
		this.dictionary = Dictionary.load();
		registry.gauge("dictionary.size", Tags.empty(), this.dictionary.getWords().size());
	}
}import io.micrometer.core.instrument.MeterRegistry
import io.micrometer.core.instrument.Tags
import org.springframework.stereotype.Component
@Component
class MyBean(registry: MeterRegistry) {
	private val dictionary: Dictionary
	init {
		dictionary = Dictionary.load()
		registry.gauge("dictionary.size", Tags.empty(), dictionary.words.size)
	}
}If your metrics depend on other beans, we recommend that you use a MeterBinder to register them:
- 
Java 
- 
Kotlin 
import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.binder.MeterBinder;
import org.springframework.context.annotation.Bean;
public class MyMeterBinderConfiguration {
	@Bean
	public MeterBinder queueSize(Queue queue) {
		return (registry) -> Gauge.builder("queueSize", queue::size).register(registry);
	}
}import io.micrometer.core.instrument.Gauge
import io.micrometer.core.instrument.binder.MeterBinder
import org.springframework.context.annotation.Bean
class MyMeterBinderConfiguration {
	@Bean
	fun queueSize(queue: Queue): MeterBinder {
		return MeterBinder { registry ->
			Gauge.builder("queueSize", queue::size).register(registry)
		}
	}
}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.
A MeterBinder implementation can also be useful if you find that you repeatedly instrument a suite of metrics across components or applications.
| By default, metrics from all MeterBinderbeans are automatically bound to the Spring-managedMeterRegistry. |