The name in your scrape is not the name in the code
The nuance
prometheus_client renames samples at exposition: counters gain _total and histograms emit _bucket/_count/_sum series, so the names operators see in scrapes and PromQL differ from the declared registration names. Before 2026-07-15 the _total form drew a false "absent from complete inventory" verdict — the worst failure class for a system whose honesty is load-bearing.
Expected behavior
Exposition-form names resolve to the declared metric with verdict present, alias_of the canonical name, alias_kind prometheus_exposition, and an interpretation naming the instrument class; gauge names with a _total suffix stay truthful absences because that sample never exists.
Try the questions (3)
vllm:prefix_cache_queries_totalrun →prefix_cache_queries_totalrun →vllm:time_to_first_token_seconds_bucketrun →Grounding claims
Topics, entities, and gaps
Eval fixtures
Counterfactual evidence
Status notes
General models handle the _total convention correctly unprompted (baseline probe 1), so this is table stakes, not differentiation — the differentiator is that misses stay honest (gauge+_total remains absent) instead of fuzzy-matching. Upstream doc evidence for the behavior: design/metrics.md lines 617-622 (candidate cand.vllm.metrics-design.total-suffix-exposition).