An application metrics facade for the most popular monitoring tools. Think SLF4J, but for metrics.

Overview

Micrometer Application Metrics

Build Status Apache 2.0 Maven Central Javadocs

An application metrics facade for the most popular monitoring tools. Instrument your code with dimensional metrics with a vendor neutral interface and decide on the monitoring backend at the last minute.

More info and the user manual are available on micrometer.io.

Micrometer is the instrumentation library underpinning Spring Boot 2.0's metrics collection.

Long-term support versions

See Micrometer's support policy for more details about long-term support (LTS) versus non-LTS versions.

Minor version line LTS Final patch
1.0.x Yes 1.0.11
1.1.x Yes 1.1.19
1.2.x No 1.2.2
1.3.x Yes
1.4.x No 1.4.2
1.5.x Yes
1.6.x Yes

Join the discussion

Join the Micrometer Slack to share your questions, concerns, and feature requests.

Snapshot builds

Snapshots are published to repo.spring.io for every successful build on the master branch and maintenance branches.

To use:

repositories {
    maven { url 'https://repo.spring.io/libs-snapshot' }
}

dependencies {
    implementation 'io.micrometer:micrometer-core:latest.integration'
}

Documentation

The reference documentation is managed in a separate GitHub repository and published to https://micrometer.io/.

Contributing

See our Contributing Guide for information about contributing to Micrometer.


Licensed under Apache Software License 2.0

Sponsored by VMware

Issues
  • Add Kafka binder

    Add Kafka binder

    image

    spring-boot change 
    opened by jkschneider 30
  • Export Spring Boot Health Check Information

    Export Spring Boot Health Check Information

    I want to export health information provided by Spring Boot's health endpoint (/health) to Prometheus. Is there an easy (standard) way to do this with micrometer?

    spring-boot change 
    opened by tf-martin-maier-moessner 29
  • `Collector already registered that provides name: executor_completed_tasks_total` when using `ExecutorServiceMetrics`

    `Collector already registered that provides name: executor_completed_tasks_total` when using `ExecutorServiceMetrics`

    Hi thanks for the lib! I am facing a problem: I have several ExecutorServices, and want to monitor their metrics. I use code like the following:

            scheduledThreadPoolExecutor = new ScheduledThreadPoolExecutor(config.getBackForthScheduledThreadPoolCoreSize());
            scheduledThreadPoolExecutor.setRemoveOnCancelPolicy(true);
    
            new ExecutorServiceMetrics(scheduledThreadPoolExecutor, "ws.back.forth.executor", null)
                    .bindTo(meterRegistry);
    
    // ... have multiple executors, thus have multiple `new ExecutorServiceMetrics`
    

    However, it throws the following error:

    ...
    Caused by: java.lang.IllegalArgumentException: Collector already registered that provides name: executor_completed_tasks_total
    	at io.prometheus.client.CollectorRegistry.register(CollectorRegistry.java:54)
    	at io.prometheus.client.Collector.register(Collector.java:139)
    	at io.micrometer.prometheus.PrometheusMeterRegistry.lambda$applyToCollector$16(PrometheusMeterRegistry.java:410)
    	at java.base/java.util.concurrent.ConcurrentHashMap.compute(ConcurrentHashMap.java:1955)
    	at io.micrometer.prometheus.PrometheusMeterRegistry.applyToCollector(PrometheusMeterRegistry.java:406)
    	at io.micrometer.prometheus.PrometheusMeterRegistry.newFunctionCounter(PrometheusMeterRegistry.java:240)
    	at io.micrometer.core.instrument.MeterRegistry$More.lambda$counter$1(MeterRegistry.java:920)
    	at io.micrometer.core.instrument.MeterRegistry.lambda$registerMeterIfNecessary$5(MeterRegistry.java:561)
    	at io.micrometer.core.instrument.MeterRegistry.getOrCreateMeter(MeterRegistry.java:614)
    	at io.micrometer.core.instrument.MeterRegistry.registerMeterIfNecessary(MeterRegistry.java:568)
    	at io.micrometer.core.instrument.MeterRegistry.registerMeterIfNecessary(MeterRegistry.java:561)
    	at io.micrometer.core.instrument.MeterRegistry.access$700(MeterRegistry.java:77)
    	at io.micrometer.core.instrument.MeterRegistry$More.counter(MeterRegistry.java:920)
    	at io.micrometer.core.instrument.FunctionCounter$Builder.register(FunctionCounter.java:122)
    	at io.micrometer.core.instrument.binder.jvm.ExecutorServiceMetrics.monitor(ExecutorServiceMetrics.java:312)
    	at io.micrometer.core.instrument.binder.jvm.ExecutorServiceMetrics.bindTo(ExecutorServiceMetrics.java:275)
    	at com.rzzsdxx.proj.support_modules.web_socket.back_forth.impl.WsBackForthService.<init>(WsBackForthService.java:60)
    	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    	at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
    	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:212)
    

    What should I do? Thanks!

    opened by fzyzcjy 27
  • Support Elastic

    Support Elastic

    See the docs. This was raised in https://github.com/spring-projects/spring-boot/issues/10449.

    spring-boot change 
    opened by jkschneider 27
  • Add Dropwizard like annotations

    Add Dropwizard like annotations

    Add annotations like in Dropwizard

    @Metered
    @ExceptionMetered
    @Counted
    @Gauge
    @CachedGauge
    @Metric
    @ResponseMetered
    

    and Spring support for that

    wontfix 
    opened by paul-ovchinnikov 25
  • Micrometer logs error message when partial error happens due to Infinity value using Elasticsearch

    Micrometer logs error message when partial error happens due to Infinity value using Elasticsearch

    Micrometer core and micrometer-elastic version: 1.1.3

    Springboot version: 2.1.3.RELEASE

    Hi, Using micrometer getting metrics from springboot application using micrometer-registry-elastic

    Micrometer keeps logging error messages:

    ERROR [market-fetcher,,,] 8106 --- [trics-publisher] i.m.elastic.ElasticMeterRegistry : failed to send metrics to elastic:

    When checking elastic index it's working, index get's updated with new values but I noticed one of the entries in there reports an error:

    {"index":{"_index":"market-fetcher-metrics-2019-04","_type":"doc","_id":"XyEp_WkB2oH6K2ScUlT5","status":400,"error":{"type":"mapper_parsing_exception","reason":"failed to parse [value]","caused_by":{"type":"illegal_argument_exception","reason":"[float] supports only finite values, but got [Infinity]"}}}}

    which is probably what's causing the error log entry being generated. I guess it should instead be able to wrap / handle Infinity? Also not sure where the error is exactly from as we don't explicitly wrap any of the metrics in primitive float, still investigating that.

    Find below a full entry of the log error message and pls let me know if it needs further details.

    '2019-04-08 15:35:37.761 ERROR [market-fetcher,,,] 8106 --- [trics-publisher] i.m.elastic.ElasticMeterRegistry : failed to send metrics to elastic: {"took":24,"errors":true,"items":[{"index":{"_index":"market-fetcher-metrics-2019-04","_type":"doc","_id":"CCEp_WkB2oH6K2ScUlT5","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":322,"_primary_term":1,"status":201}},{"index":{"_index":"market-fetcher-metrics-2019-04","_type":"doc","_id":"CSEp_WkB2oH6K2ScUlT5","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":328,"_primary_term":1,"status":201}}, ... ,{"index":{"_index":"market-fetcher-metrics-2019-04","_type":"doc","_id":"XyEp_WkB2oH6K2ScUlT5","status":400,"error":{"type":"mapper_parsing_exception","reason":"failed to parse [value]","caused_by":{"type":"illegal_argument_exception","reason":"[float] supports only finite values, but got [Infinity]"}}}},{"index":{"_index":"market-fetcher-metrics-2019-04","_type":"doc","_id":"YCEp_WkB2oH6K2ScUlT5","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":345,"_primary_term":1,"status":201}},{"index":{"_index":"market-fetcher-metrics-2019-04","_type":"doc","_id":"YSEp_WkB2oH6K2ScUlT5","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":341,"_primary_term":1,"status":201}}, ... ,{"index":{"_index":"market-fetcher-metrics-2019-04","_type":"doc","_id":"EiEp_WkB2oH6K2ScUlX6","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":383,"_primary_term":1,"status":201}}]}'

    bug registry: elastic 
    opened by mmaia 24
  • InfluxDB 2.0 API support

    InfluxDB 2.0 API support

    Looks like the 'direct' api for 1.x will not work with 2.0. Thankfully the changes seem pretty small, for comparison 1.x write api and 2.x write api

    The body remains the same (line protocol), only major change I believe is for auth (though user + password is probably also possible), instead of db query param there is org and bucket. There is also an official java client library, though I am not sure if micrometer needs all the functionality it provides.

    Sorry if there is already something in place to configure micrometer so it works with influxdb 2.0 (directly), but I did not find it.

    enhancement registry: influx spring-boot change 
    opened by AarjavP 24
  • Add a binder for Jetty connector metrics

    Add a binder for Jetty connector metrics

    Resolves #1704

    enhancement 
    opened by tomakehurst 24
  • Support dynatrace

    Support dynatrace

    https://www.dynatrace.com/support/help/dynatrace-api/custom-devices-and-metrics/what-does-the-custom-network-devices-and-metrics-api-provide/

    spring-boot change 
    opened by jkschneider 24
  • Multi-gauge: create multiple metrics from a single function

    Multi-gauge: create multiple metrics from a single function

    Hi, I tried to create a list of gauge from the result of a query and i didn't find any way to do that.

    I have the following query which return the size of elements in database (postgres) :

    SELECT N.nspname || '.' || C.relname AS "relation", CASE WHEN reltype = 0 THEN pg_total_relation_size(C.oid) ELSE pg_total_relation_size(C.oid) END AS "size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) LEFT JOIN pg_tables T ON (T.tablename = C.relname) LEFT JOIN pg_indexes I ON (I.indexname = C.relname) WHERE nspname NOT IN ('pg_catalog','pg_toast','information_schema');

    My idea was to create a list of gauge with : id : 'db.relation.size' with tag 'relation' and value 'size'.

    So that why i wanted to create a single function that perform the sql call and that allow me to create a list of gauge.

    Maybe I'm wrong and that's not the right way of doing that or maybe this is contrary to the philosophy of Micrometer.

    Thanks in advance of your help.

    opened by ochezeau 23
  • Timer without aggregation on client side

    Timer without aggregation on client side

    I am trying to use CloudWatchMeterRegistry to record a series of time. I notice those time data points are aggregated within a step and only reports max/avg/count/sum to cloudWatch

    This prevent me from calculating 95% from AWS CloudWatch. Is there anyway to keep all individual data points or immediate publish the data by micrometer?

    opened by littlehau 0
  • [Feature Request] - Micrometer registry for cloudwatch embedded metrics format

    [Feature Request] - Micrometer registry for cloudwatch embedded metrics format

    Hi, Can you please add registry for https://github.com/awslabs/aws-embedded-metrics-java ?

    opened by asanthan-amazon 0
  • Upgrade to Reactor 2020.0

    Upgrade to Reactor 2020.0

    Re-attempts #2359. This is using the tryEmitNext method instead of emitNext to avoid any failure handling - we want to drop elements on failure. This implementation hopefully obviates #2378. Opened as a draft until we branch 1.7.x so main is ready for 1.8 development. This will make the implementation of #792 straightforward since Reactor Netty added support for UDS in 1.0.0.

    enhancement registry: statsd 
    opened by shakuzen 0
  • More accurate metrics for 404 responses from Jersey2

    More accurate metrics for 404 responses from Jersey2

    I'm aware of the issue of tag explosion that motivates the mapping of 404 responses to a single URI such as "not_found". However, there are two distinct cases where the JAX-RS response can be 404:

    • no REST resource could be matched to the incoming request
    • a REST resource was matched to the request and the application code (via exception mapping or otherwise) created a response with 404 as status

    I argue only the first case applies to the tag explosion concern. The second case however is not different than matched resources yielding HTTP 400.

    With the proposed change, the HTTP 404 responses emitted by Jersey apps can be more appropriately attributed to the originating resource.

    opened by bentmann 2
  • Add badge for Gradle Enterprise

    Add badge for Gradle Enterprise

    This PR adds a badge for Gradle Enterprise.

    type: task 
    opened by izeye 0
  • Implement processing multiple @Timed annotations

    Implement processing multiple @Timed annotations

    Implement processing multiple @Timed annotations at single method #1164

    opened by Jam0relies 2
  • Add an exporter for the Dynatace metrics API v2

    Add an exporter for the Dynatace metrics API v2

    This is the implementation for the Dynatrace metrics API v2.

    Resolves #2295 Closes #2406

    opened by pirgeo 2
  • CloudWatch: add option to use StatisticsSet for Timer and Distributio…

    CloudWatch: add option to use StatisticsSet for Timer and Distributio…

    Hi all,

    I took a stab at publishing Timers and DistributionSummaries as StatisticsSet on the cloudwatch2 registry

    This should address

    • https://github.com/micrometer-metrics/micrometer/issues/1784
    • https://github.com/micrometer-metrics/micrometer/issues/457

    Let me know what you think, some immediate thoughts would be to merge the Min/Max window into a single class that takes a Comparator for min/max mode

    opened by codemedian 1
  • Handle exceptions in function-based metrics

    Handle exceptions in function-based metrics

    While we have fixed this as it has come up in various places, we should make sure we're covering all areas. This is a follow-up to the most recent related fix in #2549

    bug 
    opened by shakuzen 0
  • OpenJ9 CI job

    OpenJ9 CI job

    The PR looks good to me but we need to figure out how to run the OpenJ9-related Gradle tasks.

    Right now CircleCI does not have an OpenJ9 image and if this won't change in the near future we either need to build and maintain one for ourselves or move to a different CI solution that supports OpenJ9 out of the box. I created a in issue for CircleCI to add support for it: https://github.com/CircleCI-Public/cimg-openjdk/issues/78

    /cc @shakuzen

    Originally posted by @jonatan-ivanov in https://github.com/micrometer-metrics/micrometer/issues/2514#issuecomment-802371953

    build type: task 
    opened by shakuzen 0
Releases(v1.6.6)
  • v1.6.6(Apr 13, 2021)

  • v1.5.13(Apr 13, 2021)

  • v1.3.19(Apr 13, 2021)

  • v1.7.0-RC1(Apr 14, 2021)

    This is a release candidate provided for early testing of Micrometer 1.7 features before the GA release. Changes included in this release may be removed or changed in incompatible ways before the GA release. It is not intended for production use. The artifacts are available from the Spring milestone repository: https://repo.spring.io/milestone

    Below are the changes since the 1.7.0-M1 release.

    :warning: Noteworthy

    The following changes are breaking from the previous milestone release.

    • Rename Mongo tags provider interfaces to align with existing tags providers #2541

    :star: New Features / Enhancements

    • Support multiple long lived heap memory pools for gc metrics #2562
    • Introduce a skip predicate to the TimedAspect and CountedAspect #2551
    • Support Datadog UDP origin detection on Kubernetes #2417
    • Add "host" tag to JettyClientMetrics #2054
    • Support OpenJ9 GC policies #1458
    • Exclude netty http modules from shading in Statsd registry #2531

    :beetle: Bug Fixes

    • Statsd registry stops polling meters #2543

    :memo: Tasks

    • Refactor JvmGcMetrics with less specialized logic for non-gen collectors #2560
    • Update samples to use Spring Boot 2.4.4 #2518
    • Mention how to get milestone releases #2510

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!

    Source code(tar.gz)
    Source code(zip)
  • v1.7.0-M1(Mar 16, 2021)

    This is a milestone release provided for early testing of Micrometer 1.7 features before the GA release. Changes included in this release may be removed or changed in incompatible ways before the GA release. It is not intended for production use. The milestone artifacts are available from the Spring milestone repository: https://repo.spring.io/milestone

    Noteworthy

    • Micrometer Hibernate MeterBinders are deprecated in favor of the Hibernate community MeterBinders #2420
    • PrometheusMeterRegistry will work with Prometheus simpleclient version 0.10.0 or later only #2418
    • Support for Elasticsearch 6 has been dropped #2361
    • Mongo related metrics require the Mongo 4.x drivers #2338

    ⭐ New Features / Enhancements

    • OpenMetrics scrape support #2486
    • Support Caffeine 3 #2478
    • Align publication time with StepValue rollover (#1218) #2393
    • Use OperatingSystemMXBean.getCpuLoad() first in ProcessorMetrics #2365
    • Set index to false for metric values in ElasticMeterRegistry #2364
    • Adds pluggable tags provider to MongoMetricsCommandListener #2360
    • Support for Mongo Connection pool tags provider #2355
    • Upgrade to Mongo 4 java driver #2338
    • Add method tagKeys(Collection keys) to Search #2310
    • Support jOOQ 3.14 #2304
    • JvmInfoMetrics MeterBinder for jvm.info #2221
    • Add implementation of Caffeine's StatsCounter #2163
    • Add support for strong reference to TimeGauge #2136
    • Add convenient methods for filtered scraping #2119
    • Unbind KafkaClientMetrics in close() #2018
    • InfluxDB 2.0 API support #1974
    • Support gRPC monitoring #656

    :beetle: Bug Fixes

    • Fix duplicate +Inf bucket in Prometheus histograms #2485
    • Fix JDK source and target of published artifacts. #2471
    • Azure Registry publishing metrics with count equal to zero #2463

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!

    Source code(tar.gz)
    Source code(zip)
  • v1.6.5(Mar 16, 2021)

    NOTE: Due to the sunsetting of Bintray/Jcenter, we no longer publish releases to jcenter. Use Maven Central instead.

    :beetle: Bug Fixes

    • Fix duplicate +Inf bucket in Prometheus histograms #2485
    • Fix JDK source and target of published artifacts. #2471
    • Azure Registry publishing metrics with count equal to zero #2463

    Tasks

    • Remove Bintray from release process #2455

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!

    Source code(tar.gz)
    Source code(zip)
  • v1.5.12(Mar 16, 2021)

    NOTE: Due to the sunsetting of Bintray/Jcenter, we no longer publish releases to jcenter. Use Maven Central instead.

    :beetle: Bug Fixes

    • Fix duplicate +Inf bucket in Prometheus histograms #2485
    • Fix JDK source and target of published artifacts. #2471
    • Azure Registry publishing metrics with count equal to zero #2463

    Tasks

    • Remove Bintray from release process #2455

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!

    Source code(tar.gz)
    Source code(zip)
  • v1.3.18(Mar 16, 2021)

    NOTE: Due to the sunsetting of Bintray/Jcenter, we no longer publish releases to jcenter. Use Maven Central instead.

    :beetle: Bug Fixes

    • Fix JDK source and target of published artifacts. #2471
    • Azure Registry publishing metrics with count equal to zero #2463

    Tasks

    • Remove Bintray from release process #2455

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!

    Source code(tar.gz)
    Source code(zip)
  • v1.6.4(Feb 17, 2021)

    :star: New Features

    • Log ExecutorServiceMetrics.bindTo() failure #2443

    :beetle: Bug Fixes

    • Collector already registered that provides name: cache_request_total #2399
    • Guard against InaccessibleObjectException when --illegal-access=deny #2447
    • Include index date separator in index pattern for ElasticMeterRegistry #2405
    • MongoMetricsCommandListener is not thread safe #2401
    • NPE in MongoMetricsConnectionPoolListener on shutdown #2384
    • Fix FunctionCounter in SingleIndicator.Builder.count() #2438

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!

    Source code(tar.gz)
    Source code(zip)
  • v1.5.11(Feb 17, 2021)

    :star: New Features

    • Log ExecutorServiceMetrics.bindTo() failure #2443

    :beetle: Bug Fixes

    • Guard against InaccessibleObjectException when --illegal-access=deny #2447
    • Include index date separator in index pattern for ElasticMeterRegistry #2405
    • MongoMetricsCommandListener is not thread safe #2401
    • NPE in MongoMetricsConnectionPoolListener on shutdown #2384

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!

    Source code(tar.gz)
    Source code(zip)
  • v1.3.17(Feb 17, 2021)

    :star: New Features

    • Log ExecutorServiceMetrics.bindTo() failure #2443

    :beetle: Bug Fixes

    • Guard against InaccessibleObjectException when --illegal-access=deny #2447
    • Include index date separator in index pattern for ElasticMeterRegistry #2405
    • MongoMetricsCommandListener is not thread safe #2401
    • NPE in MongoMetricsConnectionPoolListener on shutdown #2384

    :heart: Contributors

    We'd like to thank all the contributors who worked on this release!


    See the 1.3.17 milestone for all changes.

    Source code(tar.gz)
    Source code(zip)
  • v1.6.3(Jan 12, 2021)

  • v1.5.10(Jan 12, 2021)

  • v1.6.2(Dec 10, 2020)

  • v1.5.9(Dec 9, 2020)

  • v1.5.8(Dec 8, 2020)

  • v1.3.16(Dec 8, 2020)

  • v1.6.1(Nov 11, 2020)

  • v1.5.7(Nov 11, 2020)

  • v1.6.0(Oct 29, 2020)

    1.6.x is an LTS release line - see the support page for more information on LTS vs non-LTS releases. This release contains changes from the 1.6.0 milestone.

    Thank you to all the people who contributed to this release.


    Compatibility impacting

    • Timer.Sample's tags methods and the stop method that takes a Timer.Builder have been removed. Instead, tags should be specified on the Timer passed to the remaining stop method. This makes for consistency - tags are always configured on the Timer.

      Example before/after Timer.Sample code
      Old codeSupported code
      Timer.Sample sample = Timer.start(meterRegistry);
      // ... do some stuff
      sample.tags("flag", flag);
      sample.tags(Tags.of("other", "tag"));
      sample.stop(meterRegistry, Timer.builder("sample.time"));
      
      Timer.Sample sample = Timer.start(meterRegistry);
      // ... do some stuff
      sample.stop(Timer.builder("sample.time")
               .tag("flag", flag)
               .tags(Tags.of("other", "tag"))
               .register(meterRegistry));
      
    • HibernateMetrics requires Hibernate 5.3 or later now.

    • Kafka metrics - https://github.com/micrometer-metrics/micrometer/issues/2256 The tag for client id on Kafka metrics has been changed from client-id to client.id to match the previous version of Kafka metrics from KafkaConsumerMetrics and to follow our canonical format. Likewise kafka-version has been updated to kafka.version. A MeterFilter can be applied to undo the tag name change or to apply this change to 1.5.x versions of Micrometer. For example: Users who want client.id in 1.5.x should configure MeterFilter.renameTag("kafka", "client-id", "client.id") Users who want client-id in 1.6.x should configure the opposite filter: MeterFilter.renameTag("kafka", "client.id", "client-id").

    Registry-specific

    • [ElasticMeterRegistry] https://github.com/micrometer-metrics/micrometer/pull/2288 Default index name prefix has been changed from metrics to micrometer-metrics to avoid a conflict with a built-in index template for an xpack feature in Elasticsearch 7.9
    • [GraphiteMeterRegistry] https://github.com/micrometer-metrics/micrometer/pull/2083 Graphite tags should work out of the box now but requires the metrics-graphite dependency version 4.1.8 or later
    • [GraphiteMeterRegistry] https://github.com/micrometer-metrics/micrometer/issues/2164 In order to retain the final publish on close behavior, users should be using at least version 4.1.8 of the metrics-core dependency.
    • [WavefrontMeterRegistry] https://github.com/micrometer-metrics/micrometer/issues/2175 wavefront-sdk-java 2.4 or later is required now.

    New Meter Registries

    • HealthMeterRegistry for SLO-based health indicators. See https://github.com/micrometer-metrics/micrometer/issues/2055

    New metrics

    • https://github.com/micrometer-metrics/micrometer/issues/1875 Metrics for OkHttp ConnectionPool
    • https://github.com/micrometer-metrics/micrometer/pull/1712 CommonsObjectPool2Metrics
    • https://github.com/micrometer-metrics/micrometer/issues/2097 Expose per-region statistics for Hibernate L2 cache
    • https://github.com/micrometer-metrics/micrometer/pull/2248 Tomcat connection metrics
    • https://github.com/micrometer-metrics/micrometer/pull/2199 Add counters for QueryPlanCacheHit and QueryPlanCacheMiss in HibernateMetrics

    Enhancements

    • https://github.com/micrometer-metrics/micrometer/issues/1861 Support Shenandoah GC in JvmGcMetrics
    • https://github.com/micrometer-metrics/micrometer/issues/2305 Support ZGC in JvmGcMetrics
      • Note: the time provided by the jvm.gc.pause Timer is not accurate for ZGC (it includes the concurrent time) see #2372
    • https://github.com/micrometer-metrics/micrometer/pull/2185 Add option to disable illegal access in ExecutorServiceMetrics
    • https://github.com/micrometer-metrics/micrometer/issues/2068 Add onMeterRegistrationFailed listener configuration to MeterRegistry

    Registry-specific changes

    CloudWatch

    • https://github.com/micrometer-metrics/micrometer/issues/2088 Support of high resolution metrics for CloudWatch

    Elasticsearch

    • https://github.com/micrometer-metrics/micrometer/issues/2255 Default index pattern changed for compatibility with Elasticsearch 7.9 xpack metrics index template

    Wavefront

    • https://github.com/micrometer-metrics/micrometer/issues/2175 Allow step intervals at finer than whole second granularity for Wavefront
    Source code(tar.gz)
    Source code(zip)
  • v1.5.6(Oct 28, 2020)

  • v1.3.15(Oct 28, 2020)

  • v1.1.19(Oct 27, 2020)

  • v1.5.5(Sep 17, 2020)

  • v1.3.14(Sep 17, 2020)

  • v1.3.13(Sep 16, 2020)

    DO NOT USE This release contained an invalid POM and has been removed. The version is not available from Bintray or Maven Central - use 1.3.14 instead.

    Source code(tar.gz)
    Source code(zip)
  • v1.1.18(Sep 16, 2020)

  • v1.3.12(Aug 13, 2020)

  • v1.5.4(Aug 13, 2020)

  • v1.1.17(Aug 13, 2020)

Owner
Micrometer Metrics
An application metrics facade for the most popular monitoring tools.
Micrometer Metrics
JVM Profiler Sending Metrics to Kafka, Console Output or Custom Reporter

Uber JVM Profiler Uber JVM Profiler provides a Java Agent to collect various metrics and stacktraces for Hadoop/Spark JVM processes in a distributed w

Uber Common 1.5k Mar 10, 2021
Small set of tools for JVM troublshooting, monitoring and profiling.

Swiss Java Knife (SJK) SJK is a command line tool for JVM diagnostic, troubleshooting and profiling. SJK exploits standard diagnostic interfaces of JV

Alexey Ragozin 2.9k Mar 8, 2021
Simple JVM Profiler Using StatsD and Other Metrics Backends

statsd-jvm-profiler statsd-jvm-profiler is a JVM agent profiler that sends profiling data to StatsD. Inspired by riemann-jvm-profiler, it was primaril

Etsy, Inc. 328 Jan 19, 2021
Sampling CPU and HEAP profiler for Java featuring AsyncGetCallTrace + perf_events

async-profiler This project is a low overhead sampling profiler for Java that does not suffer from Safepoint bias problem. It features HotSpot-specifi

null 3.8k Mar 14, 2021
A java agent to generate method mappings to use with the linux `perf` tool

perf-map-agent A java agent to generate /tmp/perf-<pid>.map files for just-in-time(JIT)-compiled methods for use with the Linux perf tools. Build Make

null 1.3k Mar 11, 2021
Performance visualisation tools

grav A collection of tools to help visualise process execution. This blog post has some detail on the rationale and implementation detail. Scheduler p

Mark Price 261 Feb 28, 2021
A short and practical intro into project loom

project-loom Project loom is all about making concurrency easier (for developers) on the JVM. It is in experimental phase. Download the early access b

Ashwin Bhaskar 16 Feb 17, 2021
Zipkin is a distributed tracing system

zipkin Zipkin is a distributed tracing system. It helps gather timing data needed to troubleshoot latency problems in service architectures. Features

Open Zipkin 14.1k Mar 13, 2021
Fork of tagtraum industries' GCViewer. Tagtraum stopped development in 2008, I aim to improve support for Sun's / Oracle's java 1.6+ garbage collector logs (including G1 collector)

GCViewer 1.36 GCViewer is a little tool that visualizes verbose GC output generated by Sun / Oracle, IBM, HP and BEA Java Virtual Machines. It is free

null 3.6k Mar 12, 2021
Java monitoring for the command-line, profiler included

jvmtop is a lightweight console application to monitor all accessible, running jvms on a machine. In a top-like manner, it displays JVM internal metri

null 1.1k Mar 8, 2021
Sends stacktrace-level performance data from a JVM process to Riemann.

Riemann JVM Profiler riemann-jvm-profiler is a JVM agent that you can inject into any JVM process--one written in Clojure, Java, Scala, Groovy, etc.--

Riemann 288 Dec 3, 2020
Best-of-breed OpenTracing utilities, instrumentations and extensions

OpenTracing Toolbox OpenTracing Toolbox is a collection of libraries that build on top of OpenTracing and provide extensions and plugins to existing i

Zalando SE 160 Mar 9, 2021
PerfJ is a wrapper of linux perf for java programs.

PerfJ PerfJ is a wrapper of linux perf for java programs. As Brendan Gregg's words In order to profile java programs, you need a profiler that can sam

Min Zhou 355 Mar 9, 2021
Turn -XX:+TraceBytecodes output into a FlameGraph compatible stack format

A tool to turn the output of -XX:+TraceBytecodes (a JDK debug-only feature to print every bytecode executed by the interpreter) into a simple stack fo

Claes Redestad 26 Mar 11, 2021