1. Three philosophies #
The same problem, three answers.
In brief #
| Solution | Philosophy | Storage |
|---|---|---|
| Thanos | Add on to existing Prometheus servers (sidecar) or receive via remote write | Object storage (TSDB blocks) |
| Grafana Mimir | Centralized, distributed, multi-tenant database fed by remote write | Object storage (TSDB blocks) |
| VictoriaMetrics | Efficient, simple database fed by remote write or scraping | Local disk (proprietary blocks) |
2. Detailed comparison #
Criterion by criterion.
Table #
| Criterion | Thanos | Mimir | VictoriaMetrics |
|---|---|---|---|
| Entry point | Sidecar or Receive | Remote write, OTLP | Remote write, scrape, many protocols |
| Storage | Object | Object | Local disk (backups to object storage) |
| Downsampling | Yes (5 min, 1 h) | No | Enterprise version |
| Multi-tenant | With Receive | Native, per-tenant limits | Cluster version |
| HA deduplication | At query time | At ingestion (HA tracker) | At query time or at ingestion |
| Language | PromQL | PromQL | MetricsQL (superset) |
| Components | Many | Many (+ caches) | 1 (single) or 3 (cluster) |
| Resources | Medium | High at large scale | Low |
| License | Apache 2.0 | AGPLv3 | Apache 2.0 (+ enterprise) |
Reading the table #
- Object storage (Thanos, Mimir) is cheap per gigabyte and decouples compute from storage, but adds latency and requires caches.
- Local disk (VictoriaMetrics) is fast and simple, but capacity and backups must be managed explicitly.
- Multi-tenancy with limits is Mimir's great strength for a platform shared by many teams.
- Free downsampling is a Thanos argument for years of retention queried over long periods.
3. Which choice for which context? #
Recommendations, not dogma.
Scenarios #
| Context | Recommended choice | Why |
|---|---|---|
| A few existing Prometheus servers, need for a global view and history | Thanos (sidecar) | No changes to the Prometheus servers, cheap object storage |
| Internal observability platform for dozens of teams | Mimir | Multi-tenancy, limits, Grafana integration |
| Small team, tight budget, large volume | VictoriaMetrics | Simplicity and efficiency |
| Isolated clusters (edge, separate networks) | Thanos Receive or vmagent | Push with buffering |
Good practice: All three speak remote write and the Prometheus API: a vmagent or Alloy writing to two destinations lets you compare under real conditions for a few weeks before deciding.
