A developer adds a 'user_id' label to an HTTP request counter. What is the operational risk?
Labelling a counter by 'user_id' creates one time series per distinct user, so cardinality scales with your user base. Prometheus holds every active series in memory, and each unique label combination multiplies storage and index overhead, exhausting RAM and degrading queries. This directly satisfies the stem's operational risk: unbounded cardinality from a high-churn identifier.
Why this answer
Adding a 'user_id' label to an HTTP request counter creates a label with unbounded, per-user values. Each unique combination of label values produces a distinct time series in Prometheus, so a user_id label can generate thousands or millions of series. Prometheus holds all active series in memory (head block), so this high cardinality rapidly consumes RAM and can destabilize or crash the server.
Exam trap
The trap here is confusing high cardinality with metric rejection — candidates assume Prometheus enforces a cardinality limit and drops the metric, when in reality it accepts the data and silently consumes memory until the server fails.
How to eliminate wrong answers
Option B is wrong because high cardinality increases the number of series that must be indexed and scanned, which typically degrades query speed rather than improving it. Option C is wrong because Prometheus does not reject metrics based on cardinality; it accepts them and simply suffers the memory consequences. Option D is wrong because the metric continues to be recorded — the risk is resource exhaustion, not cessation of scraping.