Micrometer is a metrics instrumentation library for JVM-based applications. It provides a simple facade over the instrumentation clients for the most popular monitoring systems, letting you instrument your JVM-based application code without vendor lock-in. It is designed to add little to no overhead to your metrics collection activity while maximizing the portability of your metrics effort.

Starting from Micrometer 1.10, Micrometer provides the Observation API and a plugin mechanism that lets you add capabilities, including the tracing features. You can read more about tracing in the Micrometer Tracing documentation.

For better understanding of the differences among these different types of systems (Metrics, Distributed Tracing, and Logging) we recommend Adrian Cole’s talk, titled Observability 3 Ways. To learn more about Micrometer Observation API, we recommend Tommy Ludwig’s and Marcin Grzejszczak’s talk, titled Observability of Your Application.


The micrometer-core module aims to have minimal dependencies. It does not require any third-party (non-Micrometer) dependencies on the classpath at compile time for applications that use Micrometer.

Use of the pause detection feature requires the LatencyUtils dependency to be available on the classpath at runtime. If your application does not use the pause detection feature, you can exclude LatencyUtils from your runtime classpath.

If you use client-side percentiles, you need HdrHistogram on the classpath at runtime. If you do not use client-side percentiles, you may exclude HdrHistogram from your application’s runtime classpath.