Design a metrics monitoring system
Company: Current
Role: Software Engineer
Category: System Design
Difficulty: hard
Interview Round: Technical Screen
Design a metrics monitoring system. Requirements: collect numeric metrics from many services (counter/gauge/histogram) with labels/tags; support pull vs. push ingestion, high throughput, and backpressure; store time-series efficiently with compression and retention tiers (hot vs. cold storage); provide a query language for aggregations, downsampling, and label filtering; generate alerts on thresholds and SLOs with silencing, deduplication, and routing; ensure high availability, horizontal scalability, and multi-tenant isolation; control cardinality growth and enforce quotas; expose dashboards and APIs; discuss data model, sharding, indexing, write/read paths, failure handling, and consistency choices.
Quick Answer: Design a metrics monitoring system evaluates requirements, scale assumptions, API/data design, architecture, trade-offs, failure modes, and rollout in a realistic interview setting. A strong answer states assumptions, handles edge cases, explains trade-offs, and shows how to validate the result clearly.