⚡ ~/naveed Interview Prep
⚡ Portfolio Home ✍️ Engineering Blog Deep Dives 🎯 Interview Hub 1,000+ Scenarios ☸️ Kubernetes Mastery Hub 24 Modules 🎮 DevOps Arcade & Quizzes Subnet Blitz ⚡ 🗺️ DevOps Roadmaps PDFs & Guides 🤖 Morpheus Analysis AI Quant ↗ 🛠️ Developer Tools Utilities 🧪 Labs & Experiments 📄 Interactive CV & Certs 🔗 All Links & Socials ⚡ Join The Dispatch (Weekly SRE Newsletter) →
← Back to All FinOps & System Design Interview Questions Scenario 64 of 98 in FinOps & System Design
Staff SRE / Distributed Systems Architect System Design Observability & Big Data Infrastructure System Design

Q: Your enterprise operates 80 Kubernetes clusters with hundreds of microservices. Individual Prometheus servers crash constantly due to high cardinality metrics (OOMKilled at 4M series), long-term query history is lost on pod restarts, and cross-cluster queries are impossible. How do you architect a centralized, multi-tenant metrics storage engine capable of ingesting 50 Million active series and providing sub-second PromQL queries?

Engineering a horizontally scalable, multi-tenant Prometheus metrics platform ingesting 50 million active time-series with Grafana Mimir, distributed hash ring sharding, and object storage compaction.

#System Design #Prometheus #Grafana Mimir #Thanos #Metrics #Observability #FinOps
🎙️ Candidate Opening & Architectural Context
"Standard single-node Prometheus is designed for local monitoring, not enterprise multi-cluster long-term storage. We designed a petabyte-scale multi-tenant metrics platform using Grafana Mimir, Prometheus Agent mode, and cloud object storage."
Advertisement
⚡ Recommended Practice Lab

Want to master this scenario in a live sandbox? The Linux Foundation's FinOps Certified Practitioner (FOCP) Program covers this exact problem with hands-on terminal drills.

🛠️ Production Runbook & Step-by-Step Resolution

1️⃣

Deploy Stateless Edge Prometheus in Agent Mode

Collect metrics on Kubernetes clusters with minimal memory footprint:

  • Prometheus Agent Mode: Configured Prometheus instances in --enable-feature=agent mode across all 80 clusters.
  • Zero Local Storage: Agent mode disables local TSDB indexing, querying, and compaction, keeping memory usage flat (< 2 GB RAM per instance).
  • Remote Write: Streams scraped samples via Snappy-compressed HTTP remote_write to the central Mimir gateway, tagged with cluster_id and tenant_id.
Pro Tip: Prometheus Agent mode consumes 85% less memory than full Prometheus, eliminating node OOMKilled crashes permanently.
2️⃣

Ingest & Shard Metrics with Grafana Mimir Distributed Ingesters

Distribute high-cardinality series across horizontally scalable ingester pods:

  • Mimir Ingesters: Distributed Ingesters register on a Consul / memberlist Distributed Hash Ring.
  • Consistent Hashing: Each time-series is hashed by metric name and labels, replicating to 3 ingester pods (Replication Factor = 3) for high availability.
  • In-Memory TSDB: Ingesters hold recent samples in memory and write out immutable 2-hour TSDB blocks to cloud object storage (S3 / GCS).
Pro Tip: Mimir's distributed hash ring scales horizontally to hundreds of millions of series simply by adding ingester replicas.
3️⃣

Enforce Multi-Tenancy Isolation & High-Cardinality Circuit Breakers

Prevent a single rogue developer's runaway metric labels from destabilizing the entire platform:

  • Tenant Limits: Configured per-tenant limits: max_global_series_per_user: 5000000 and max_label_names_per_series: 30.
  • Cardinality Limiter: If a developer deploys code injecting dynamic user IDs into metric labels, Mimir drops the excess series and alerts the team via Slack without affecting other tenants.
Pro Tip: Hard per-tenant cardinality quotas prevent high-cardinality label explosions from exhausting memory across the shared cluster.
4️⃣

Accelerate Queries via Mimir Query-Frontend & Object Storage Tiering

Provide sub-second dashboard load times across months of historical data:

  • Query Splitting & Caching: Mimir query-frontend splits large queries into single-day chunks, executes them in parallel, and caches results in Redis (92% cache hit rate).
  • Object Storage Tiering: Historical TSDB blocks reside in AWS S3 / Google Cloud Storage, with compactors merging small blocks into optimized long-term chunks.
  • Cost Impact: Storing 50M series in S3 costs ~$3,500/month, compared to $40,000+/month on commercial monitoring solutions.
Pro Tip: Query-frontend caching eliminates redundant queries, allowing heavy executive Grafana dashboards to load in < 400ms.
💡 The Senior SRE Gold Nugget (Key Architectural Takeaway)
"Scaling Prometheus to 50M active series requires edge Prometheus Agent remote-write, Grafana Mimir distributed hash rings, strict per-tenant cardinality circuit breakers, and parallel query-frontend caching over object storage."
⚡ 60-Second Elevator Pitch Talking Points
  • Deploy stateless Prometheus in Agent mode across clusters to reduce memory usage by 85%.
  • Ingest metrics into Grafana Mimir distributed hash rings with replication factor 3.
  • Enforce strict per-tenant cardinality quotas to prevent label explosion outages.
  • Store long-term TSDB blocks in S3 object storage with parallel query-frontend caching.
Advertisement
Want more FinOps & System Design scenarios?
Explore our complete collection of scenario-based FinOps & System Design interview runbooks.
Browse All FinOps & System Design Questions →