Latest / The Cloud Business Podcast with Fexingo: AWS, Azure, GCP, and Enterprise Infrastructure / Why Cloud Contracts Now Charge for Managed Prometheus Active Series
Transcript
- Lucas: So AWS recently updated its pricing for Amazon Managed Service for Prometheus — and the billable unit is now 'active series' over a certain threshold, not just storage. Luna: Right, because Prometheus metrics are exploding as more teams adopt observability. I've seen clusters push millions of time series easily. Lucas: If this kind of analysis is useful for what you're building or running, honestly, if today was worth a coffee to you, we've got a link at buy me a coffee dot com slash fexingo. That's what keeps this show ad-free. Luna: Yeah, even a single coffee goes a long way. Anyway, let's dig into the numbers. Lucas: So the change applies per workspace. Below one million active series per month, it's still free — which covers plenty of small teams. But cross that threshold and you pay per million active series per hour. Luna: And an 'active series' — that's a unique combination of metric name and label set that has received data in the last 15 minutes, right? Lucas: Exactly. So if you have a metric like 'http_requests_total' with a label 'status=200' and another label 'endpoint=/api', and both were updated in the last 15 minutes, that counts as one active series. But if you add a 'method=GET' label — congratulations, that's a separate active series now. Luna: That's why cardinality is the enemy. A single high-cardinality label can explode the active series count. Lucas: Let's make it concrete. Consider a typical Kubernetes cluster with 100 pods, each exporting 200 metrics, each with 10 labels. Naively, that's 200,000 time series. But if a label like 'pod_name' is included, you get a unique series per pod — so 100 times more, until it's 20 million active series per scrape. And that's per minute. Luna: So a cluster like that would absolutely blow past the free tier. What's the actual cost? Lucas: AWS charges $0.04 per million active series per hour beyond the free tier. So if you have 2 million active series consistently, that's $0.04 720 = $57.60. That's not huge, but for 20 million active series, it jumps to $576 monthly. Luna: And if you're running 10 clusters, that's $5,760 — real money. So how do teams avoid surprises? Lucas: First, audit your label cardinality. Use PromQL's 'count by ' to see which labels have the most unique values. Often it's things like 'user_id', 'request_id', or 'pod_name' that you don't actually need for alerting. Luna: Then relabel them before ingestion. AMP supports metric relabeling config exactly for this — drop high-cardinality labels you don't use. Lucas: Second, aggregate before writing. If you only need the p99 latency per service, don't send per-endpoint metrics to AMP. Aggregate in your agent with recording rules. Luna: Third, set ingestion limits. AMP lets you define per-workspace limits on active series via service quotas. You can set a hard cap so you don't accidentally blow the budget. Lucas: And fourth, use retention management. AMP automatically deletes series after the retention period, but you can also manually prune inactive series. Luna: What about the free tier? Who benefits most? Lucas: Small teams or startups with one or two clusters and under a million active series, which is plenty if you're not over-instrumenting. But as soon as you scale up or add high-cardinality labels, you pay. Luna: I've heard some teams are considering self-hosted Prometheus again for cost reasons, but then they trade storage and operational overhead. Lucas: Right, and you still pay for compute and storage on your own VMs. There's no free lunch. But AMP's pricing change signals a broader trend: cloud vendors are moving from storage-based to usage-based pricing for observability backends. Luna: Yeah, it matches what we saw with Datadog and Grafana Cloud — they also bill on active series or custom metrics. So this isn't unique to AWS. Lucas: The insight here is to treat your metrics as a finite budget. Every label you add costs something, even if it's just a fraction of a cent per hour. Over a year, those fractions add up. Luna: So for ops teams, the takeaway is: before switching to AMP, calculate your active series based on your current Prometheus setup. Use the Prometheus API to get the series count. Lucas: Exactly. And monitor that count over time. If it grows unsustainably, you catch it early. This is a classic 'pay for what you emit' model. Luna: One last thing — AWS also introduced a 'committed usage' discount. If you commit to a certain number of active series per hour for one or three years, you get up to 30% off. Lucas: That's for teams with predictable scale. If your metric volume is stable, it's a good deal. But if you're still figuring out your monitoring posture, I'd wait. Luna: So the new pricing is live as of July 1st, 2026. Have you seen any early reports of bill shock? Lucas: A few anecdotes on Reddit. One team said their bill went from zero to $400 a month because they had over-instrumented labels like 'build_version' and 'commit_sha'. They dropped those and it fell back to $30. Luna: That's a textbook case. So the key is knowing what you're sending and why. Lucas: Right. And as cloud vendors get more granular with metering, these conversations will only become more important. Luna: Yeah, it's a good reality check for the 'monitor everything' crowd. Lucas: That's it for today. Next time, we'll look at how these pricing changes affect the build vs. buy decision for internal monitoring platforms. Luna: Sounds good. See you next episode.