@Version("5.1.0")
Package org.eclipse.microprofile.metrics
Rationale
To ensure reliable operation of software it is necessary to monitor essential system parameters. There is already JMX as standard to expose metrics, but remote-JMX is not easy to deal with and especially does not fit well in a polyglot environment where other services are not running on the JVM. To enable monitoring in an easy fashion, the MicroProfile Metrics specification provides a standard to instrument an application with metrics and provides a simple REST endpoint for integration with monitoring services.
Adding Metrics
MicroProfile Metrics provides 4 different metric types that can be used to instrument an application. Developers can
create an accompanying Metadata
object to supply the metric's name,
description and units. Once the metric and the metadata are registered against the application
MetricRegistry
, the metrics will be available in the REST
endpoints.
Metric Types
Counter
is used to measure an increasing value.
Example usage:
Counter count = metricRegistry.counter(metadata);
count.inc();
Gauge
is used to provide the immediate measurement of a value.
Example usage:
Gauge<Double> temperature = new Gauge<Double>() {
public Double getValue() {
return getTemperature();
}
};
metricRegistry.register(metadata, temperature);
Histogram
is used to sample and compute the distribution of values
Example usage:
Histogram histogram = metricRegistry.histogram(metadata);
histogram.update(score);
Timer
is used to measure the duration of an event as well as the
frequency of occurrence.
Example usage:
Timer timer = metricRegistry.timer(metadata);
try (Timer.Context context = timer.time()) {
... // code that will be timed
}
-
Interface Summary Interface Description Counter An incrementing counter metric.Counting An interface for metric types which have counts.Gauge<T extends Number> A gauge metric is an instantaneous reading of a particular value.Histogram A metric which calculates the distribution of a value.Metadata Bean holding the metadata of one single metric.Metric A tag interface to indicate that a class is a metric.MetricFilter A filter used to determine whether or not a metric should be reported, among other things.MetricRegistry The registry that stores metrics and their metadata.Sampling An object which samples values.Timer A timer metric which aggregates timing durations and provides duration statisticsTimer.Context A timing context. -
Class Summary Class Description DefaultMetadata The default implementation ofMetadata
MetadataBuilder TheMetadata
builder.MetricID A unique identifier forMetric
andMetadata
that are registered in theMetricRegistry
The MetricID contains:Name
: (Required) The name of the metric.Tags
: (Optional) The tags (represented byTag
objects) of the metric.MetricUnits Standard units constants for metric'sMetadata
.Snapshot A statistical snapshot of aSnapshot
.Snapshot.HistogramBucket Represents a cumulative histogram bucket at the moment it was sampled from the Snapshot.Snapshot.PercentileValue Represents a percentile and its value at the moment it was sampled from the Snapshot.Tag Tag represents a singular metric tag key and value pair. -
Enum Summary Enum Description MetricRegistry.Type Deprecated. As of release 5.0, please useMetricRegistry.APPLICATION_SCOPE
,MetricRegistry.BASE_SCOPE
orMetricRegistry.VENDOR_SCOPE
withRegistryScope
instead.