The Cardinality Budget Per Service
Cardinality is the single biggest cost driver in metrics platforms. The budget pattern, the audit, and the team behaviour it changes.
Set the budget
Cardinality budget per service is the discipline of capping the number of unique time series each service can produce. Without a budget, cardinality grows unbounded; metric storage costs explode. With a budget, growth is intentional; cost stays predictable.
What the budget looks like:
- 10,000 unique time series per service per metric.: The starting budget is approximate but useful. Most services do not need more than 10,000 unique series per metric; above this, explicit justification is required.
- Above that requires explicit approval.: The budget is enforced through policy. Services that need to exceed the budget submit justification; the platform team reviews; approved exceptions are bounded.
- The number is policy.: The team picks a number that fits their cost tolerance. Higher budgets let teams move fast; lower budgets cap cost growth. The number is a deliberate choice.
- Pick one that lets the team move fast.: The budget should not be so tight that legitimate work is blocked. Some headroom is necessary; the budget supports normal service development.
- But caps cost growth.: The budget should not be so loose that costs grow unbounded. Some constraint is necessary; the budget produces the discipline.
The budget is the framework. Without it, every service decides cardinality independently; the cumulative effect is uncontrolled growth.
Audit weekly
The audit makes the budget actionable. Without auditing, the budget is documentation; with auditing, it produces real behavior change.
- Top 10 highest-cardinality metrics per service.: The audit lists the top 10 metrics by cardinality for each service. The list is the focus area; reducing cardinality on these metrics produces the most impact.
- Sorted by series count.: The sort order is by series count. The highest-cardinality metrics are at the top; the team's attention goes to them first.
- Above-budget metrics get a fix-by date.: Metrics exceeding the budget are flagged with a deadline. The team has time to address them; the discipline has teeth.
- Either cap the cardinality.: The first option is reducing the metric's cardinality. Drop unneeded labels; combine label values; restructure the metric. The cardinality drops below the budget.
- Or convert to logs.: The second option is moving the data to logs. High-cardinality data fits logs better than metrics; the conversion is appropriate when the data was wrong-tooled.
The audit is what produces behavior change. Without it, the budget is unenforced; with it, services stay within it.
When to convert
The choice between metrics and logs depends on the data's cardinality. High-cardinality data belongs in logs; low-cardinality belongs in metrics. Recognizing the right tool is the discipline.
- If the metric needs a label that has high cardinality.: User IDs, request IDs, customer IDs, trace IDs all are high-cardinality. Adding them to metric labels produces cardinality explosion.
- It should probably be a log.: The same data, structured as a log entry, fits the log infrastructure. The high cardinality does not break the storage; the access patterns match.
- Logs handle high cardinality natively.: Log storage is designed for the cardinality patterns that break metrics. Each log entry stands alone; cardinality is not a structural problem.
- Metrics do not.: Metric storage is optimized for low cardinality and high frequency. High cardinality breaks the optimization; storage costs and query performance both degrade.
- Use the right tool.: The discipline is matching the data to the right primitive. High cardinality, log; low cardinality, metric. The conversion is straightforward; the right tool produces sustainable observability.
Cardinality budget per service is one of those FinOps disciplines that pays off proportionally to telemetry volume. Nova AI Ops integrates with metric stores, surfaces per-service cardinality, and produces the audit reports that drive the per-service budget discipline.