request_latency_seconds) exposes three kinds of time series:
Here is a representative set of timeseries for a histogram:
_count(here100) is the total number of requests._sumis the sum of observed latencies (seconds).- Each
request_latency_seconds_bucket{le="X"}is the cumulative count of observations with value ≤ X. For examplele="0.05" = 50means 50 requests observed latency ≤ 0.05s.
le includes the counts of all smaller le buckets plus any observations between them. The le="+Inf" bucket should equal the _count series — if it does not, it usually indicates incorrect instrumentation or a bug.
Buckets are cumulative — when interpreting buckets, subtract the previous bucket if you need the number of observations that fall strictly between two boundaries.
Common queries
Userate() or increase() on histogram submetrics (they are counters) depending on whether you want a rate or a total increase over a range.
- Instantaneous per-second request rate (1m window):
- Per-bucket rates (graphing bucket series over time):
- Average request latency (over last 5m):
- Fraction of requests ≤ a specific bucket (
le="0.06"), using vector matching to ignore thelelabel on the right-hand side:
- Number of observations between two bucket boundaries (5m window):

Quantiles from histograms
Prometheus provideshistogram_quantile() to estimate quantiles from histogram buckets. The function takes a quantile (0..1) and a bucket series:
le first (so the quantile function sees a complete set of bucket boundaries), for example:

histogram_quantile() uses linear interpolation between bucket boundaries — it produces an estimate, not an exact value. For SLO checks, ensure buckets are placed so interpolation around the SLO threshold is meaningful.
For example, if your SLO requires 95% of requests ≤ 0.5s, include a bucket at le="0.5" and compute:
0.5 the SLO is missed. Keep in mind the reported quantile may be substantially influenced by bucket spacing around the threshold.


Concrete histogram example
Corrected example for a/cars path (label order shown as method="GET", path="/cars"):
le="0.02" = 3→ 3 requests ≤ 0.02s.le="0.05" = 5→ 5 requests ≤ 0.05s (includes those ≤ 0.02s).
Summaries vs Histograms
A Prometheus summary (client-side summary) exposes quantiles directly rather than buckets. A summary typically provides:request_latency_seconds{quantile="0.01"} 0.004request_latency_seconds{quantile="0.5"} 0.0296request_latency_seconds{quantile="0.95"} 0.06request_latency_seconds_count— total samplesrequest_latency_seconds_sum— sum of observed values

Design trade-offs
Keep these trade-offs in mind when designing metrics and SLO checks.
If your SLO depends on a specific latency threshold, add a bucket exactly at that threshold (or have buckets tightly spaced around it). Otherwise
histogram_quantile() can only estimate and might hide how close you are to the SLO boundary.