For a java library for application metrics, the strongest matches are micrometer-metrics/micrometer (Micrometer is the industry-standard Java metrics facade that provides), prometheus/client_java (This is the official Java client library for Prometheus) and dropwizard/metrics (This library provides a robust toolkit for instrumenting Java). openzipkin/zipkin and open-telemetry/opentelemetry-specification round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
We curate open-source GitHub repositories matching “best java metrics libraries”. Results are ranked by relevance to your query — pick filters below to narrow, or refine with AI.
Micrometer is a dimensional metrics library and application metrics facade that provides a vendor-neutral interface for recording performance data. It decouples application instrumentation from specific observability backends, allowing the recording of counters, gauges, and timers using key-value tags for granular analysis. The project features a system of backend adapters that transform and route instrumented data to various external monitoring tools. This includes name normalization to ensure portability across different monitoring systems and the ability to map dimensional data to hierarch
Micrometer is the industry-standard Java metrics facade that provides low-overhead instrumentation, built-in JVM monitoring, and native support for exporting to Prometheus and various other time-series backends.
This library provides a framework for instrumenting Java applications to track performance and system-level statistics. It enables the definition and collection of metrics such as counters, gauges, and histograms, while automatically capturing runtime health indicators like memory usage, thread activity, and garbage collection performance. The project distinguishes itself through a registry-based aggregation model that decouples metric recording from data exposition. It supports thread-safe atomic instrumentation for high-frequency data collection and offers flexible export mechanisms, includ
This is the official Java client library for Prometheus, providing the core instrumentation, JVM monitoring, and custom metric types required to collect and export performance data for time-series analysis.
This project is an application performance monitoring tool and JVM metrics library designed to measure workload behavior and export performance data to external monitoring databases. It serves as an instrumentation toolkit for tracking resource usage and internal runtime behavior within a Java execution environment. The system focuses on application performance measurement and JVM application monitoring, specifically tracking system health and runtime resource analysis to identify bottlenecks and stability issues. It provides a mechanism for external metrics export, sending captured data to t
This library provides a robust toolkit for instrumenting Java applications to track JVM performance and custom metrics, serving as a foundational component for exporting data to monitoring systems.
Zipkin is an open-source distributed tracing system designed to collect, store, and visualize timing data across complex service architectures. It provides a platform for monitoring request lifecycles, enabling developers to identify latency bottlenecks and performance issues by tracking operations as they move through heterogeneous service environments. The system distinguishes itself through a standardized data model and a pluggable storage architecture that supports various backend databases. It utilizes sampling strategies to manage telemetry volume and employs asynchronous collection met
Zipkin is a distributed tracing system focused on request lifecycles and latency bottlenecks, which is a neighbouring observability category rather than a library for collecting and aggregating general application performance metrics.
This repository contains the specifications for a standardized observability data standard and telemetry instrumentation framework. It defines unified protocols for how telemetry data is instrumented, propagated, and formatted to ensure interoperability across distributed systems. The specification provides a vendor-neutral approach to observability, allowing telemetry data to be exported to various backends without locking into a single provider or requiring changes to application source code. It establishes a consistent protocol for capturing request flows across service boundaries to corre
This repository provides the technical specifications and standards for observability rather than a functional Java library or framework that you can implement to collect and export metrics.
OpenTelemetry Go is a framework for generating and collecting distributed traces, metrics, and logs from Go applications. It provides a standardized telemetry instrumentation API for adding observability markers to code and a corresponding SDK for processing and emitting these signals. The project utilizes a configurable observability pipeline to sample and export telemetry data to external backends using the OTLP wire protocol. It features a pluggable export system and a separation between the public API and the SDK implementation, allowing telemetry to be routed to third-party platforms wit
This is a Go-based observability framework, which does not meet the requirement for a Java-based metrics library.
Jaeger is a distributed tracing platform used for collecting, storing, and visualizing request flows across microservices. It identifies performance bottlenecks and errors by tracking requests as they move through multiple service boundaries. The system includes telemetry collectors, a multi-tenant backend, and a trace visualizer. The platform provides a multi-tenant tracing infrastructure that isolates data and queries by tenant to support shared environments. It supports standardized telemetry ingestion via the OpenTelemetry Protocol over gRPC and HTTP. To manage storage costs and overhead,
Jaeger is a distributed tracing platform focused on request flow visualization rather than the general-purpose application metrics collection and aggregation library requested.
This project is a comprehensive software observability suite and application performance monitoring platform designed to track runtime errors, performance bottlenecks, and system health. It functions as a centralized diagnostic service that aggregates and categorizes exceptions, providing the infrastructure necessary to visualize complex execution paths across distributed systems and microservices. The platform distinguishes itself through a high-throughput distributed event ingestion pipeline and a columnar storage analytics engine that enables rapid aggregation of large-scale performance me
Sentry is a comprehensive, standalone observability platform and diagnostic service rather than a Java-based library or framework that you would integrate into your application to collect and export metrics.
This project is an OpenTelemetry reference implementation and distributed microservices environment used to demonstrate the collection and export of traces, metrics, and logs. It serves as a telemetry pipeline showcase and a polyglot instrumentation example, providing a sandbox for practicing distributed tracing and monitoring within a Kubernetes cluster. The system features a polyglot architecture to demonstrate consistent, vendor-neutral telemetry implementation across multiple programming languages. It includes a simulated environment for testing telemetry interoperability and troubleshoot
This repository is a demonstration environment and reference implementation for observability rather than a library or framework you can integrate into your own Java application to collect and export metrics.
StatsD is a metrics aggregator and UDP collection server that collects system counters and timers. It functions as a time-series data forwarder, receiving high-frequency metric updates via a lightweight line protocol and summarizing them before flushing the data to a backend. The project features a pluggable metrics backend framework, allowing aggregated statistics to be routed to various third-party monitoring services or time-series databases such as Graphite. It supports horizontal scaling and high availability through a proxy ring distribution system that forwards incoming packets across
This is a language-agnostic metrics aggregation server rather than a Java-based library or framework, meaning it functions as a separate infrastructure component you would deploy alongside your application rather than integrating directly into your Java code.
grpc-spring is a framework for integrating gRPC servers and clients into Spring applications. It provides a suite of tools for managing the lifecycle of remote procedure call servers, automating client stub injection, and implementing request interception within a Java environment. The project enables high-performance remote procedure call communication through annotation-driven service registration and automatic configuration of client stubs. It includes a specialized interceptor library for modifying requests and responses, as well as a telemetry tool for exporting performance metrics and d
This is a gRPC integration framework for Spring that includes telemetry capabilities as a secondary feature, rather than a dedicated library for general-purpose application performance metrics collection and aggregation.
Dapr is a distributed application runtime that provides a sidecar-based infrastructure layer for building resilient microservices and event-driven applications. By utilizing a sidecar proxy pattern, it abstracts complex infrastructure tasks into standardized, network-accessible APIs, allowing developers to focus on application logic while the runtime handles service discovery, state management, and secure communication. The platform distinguishes itself through a pluggable component architecture and language-agnostic design, enabling services written in any programming language to interact wi
Dapr is a distributed application runtime and sidecar proxy that provides observability features as part of its infrastructure layer, but it is not a Java-specific metrics library for application-level instrumentation.
| Repository | Stars | Language | License | Last push |
|---|---|---|---|---|
| micrometer-metrics/micrometer | 4.9K | Java | Apache-2.0 | |
| prometheus/client_java | 2.3K | Java | Apache-2.0 | |
| dropwizard/metrics | 7.8K | Java | Apache-2.0 | |
| openzipkin/zipkin | 17.4K | Java | Apache-2.0 | |
| open-telemetry/opentelemetry-specification | 4.3K | Makefile | Apache-2.0 | |
| open-telemetry/opentelemetry-go | 6.4K | Go | Apache-2.0 | |
| jaegertracing/jaeger | 22.9K | Go | Apache-2.0 | |
| getsentry/sentry | 44.1K | Python | NOASSERTION | |
| open-telemetry/opentelemetry-demo | 2.9K | TypeScript | apache-2.0 | |
| statsd/statsd | 18K | JavaScript | MIT |