Class Histogram
Object
Metric
MetricWithFixedMetadata
Histogram
- All Implemented Interfaces:
DataPoint
,DistributionDataPoint
,TimerApi
,Collector
Histogram metric. Example usage:
Histogram histogram = Histogram.builder()
.name("http_request_duration_seconds")
.help("HTTP request service time in seconds")
.unit(SECONDS)
.labelNames("method", "path", "status_code")
.register();
long start = System.nanoTime();
// do something
histogram.labelValues("GET", "/", "200").observe(Unit.nanosToSeconds(System.nanoTime() - start));
Prometheus supports two internal representations of histograms:
- Classic Histograms have a fixed number of buckets with fixed bucket boundaries.
- Native Histograms have an infinite number of buckets with a dynamic resolution. Prometheus native histograms are the same as OpenTelemetry's exponential histograms.
If you want the classic representation only, use Histogram.Builder.classicOnly
.
If you want the native representation only, use Histogram.Builder.nativeOnly
.
-
Nested Class Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic Histogram.Builder
builder()
static Histogram.Builder
builder
(PrometheusProperties config) void
clear()
Reset the metric (remove all data points).collect()
Called when the Prometheus server scrapes metrics.void
initLabelValues
(String... labelValues) Initialize label values.labelValues
(String... labelValues) void
observe
(double amount) Observevalue
.void
observeWithExemplar
(double amount, Labels labels) Observevalue
, and create a custom exemplar with the given labels.void
Remove the data point with the given label values.Methods inherited from class MetricWithFixedMetadata
getPrometheusName
Methods inherited from class Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface DistributionDataPoint
startTimer
Methods inherited from interface TimerApi
time, time, timeChecked
-
Method Details
-
observe
Observevalue
.- Specified by:
observe
in interfaceDistributionDataPoint
-
observeWithExemplar
Observevalue
, and create a custom exemplar with the given labels.- Specified by:
observeWithExemplar
in interfaceDistributionDataPoint
-
collect
Called when the Prometheus server scrapes metrics. -
builder
-
builder
-
initLabelValues
Initialize label values.Example: Imagine you have a counter for payments as follows
payment_transactions_total{payment_type="credit card"} 7.0 payment_transactions_total{payment_type="paypal"} 3.0
Now, the data points for thepayment_type
label values get initialized when they are first used, i.e. the first time you call
the data point with labelcounter.labelValues("paypal").inc();
payment_type="paypal"
will go from non-existent to having value1.0
.In some cases this is confusing, and you want to have data points initialized on application start with an initial value of
0.0
:payment_transactions_total{payment_type="credit card"} 0.0 payment_transactions_total{payment_type="paypal"} 0.0
initLabelValues(...)
can be used to initialize label value, so that the data points show up in the exposition format with an initial value of zero. -
labelValues
-
remove
Remove the data point with the given label values. See https://prometheus.io/docs/instrumenting/writing_clientlibs/#labels. -
clear
public void clear()Reset the metric (remove all data points).
-