Tokens consumed map directly to cost on most LLM providers. A counter incremented in the LLM call layer lets you plot cost-per-route, alert on a single runaway tenant, and ignore per-call latency variance. Without it you only learn about cost from the invoice.
Counter(“llm_tokens_total”, “Tokens consumed”, [“model”, “route”]).inc(n).
Alert if p99 tokens/min for one tenant > 10x median.
Tag by model so a price change shows up clearly in the dashboard.
LLM call -> llm_tokens_total.labels(model="gpt-4o", route="/chat").inc(
Prometheus -> cost-per-route dashboard
If you measure latency but not tokens, you know speed but not spend. Count both.