concept

Cardinality

The number of distinct time series produced by a metric, which is the product of the distinct values of all its labels — and the main driver of monitoring cost.

metricscostmonitoring

One metric with labels for endpoint (50), status code (10) and region (5) is 2,500 series. Add a customer ID label with 10,000 values and it becomes 25 million, which will either bankrupt the metrics backend or be dropped by it.

This is the fundamental split between metrics and events. Metrics are pre-aggregated and cheap but bounded in cardinality, so they can answer "what is the error rate" but never "which customer". Traces and structured events carry high cardinality and are sampled, so they can answer "which customer" but not "exactly how many, across everything".

The design rule: never put an unbounded identifier — user ID, request ID, URL with parameters, error message text — into a metric label. Put it in a log line or a trace attribute instead. Most runaway observability bills are one label added without this in mind.