RousselTMLEARNING

Observability

Thanos, Grafana Mimir or VictoriaMetrics: which long-term storage for Prometheus?

Detailed comparison of three long-term storage solutions for Prometheus: architecture, storage, high availability, multi-tenancy, downsampling, costs, operations and use cases.

1. Three philosophies #

The same problem, three answers.

In brief #

SolutionPhilosophyStorage
ThanosAdd on to existing Prometheus servers (sidecar) or receive via remote writeObject storage (TSDB blocks)
Grafana MimirCentralized, distributed, multi-tenant database fed by remote writeObject storage (TSDB blocks)
VictoriaMetricsEfficient, simple database fed by remote write or scrapingLocal disk (proprietary blocks)

2. Detailed comparison #

Criterion by criterion.

Table #

CriterionThanosMimirVictoriaMetrics
Entry pointSidecar or ReceiveRemote write, OTLPRemote write, scrape, many protocols
StorageObjectObjectLocal disk (backups to object storage)
DownsamplingYes (5 min, 1 h)NoEnterprise version
Multi-tenantWith ReceiveNative, per-tenant limitsCluster version
HA deduplicationAt query timeAt ingestion (HA tracker)At query time or at ingestion
LanguagePromQLPromQLMetricsQL (superset)
ComponentsManyMany (+ caches)1 (single) or 3 (cluster)
ResourcesMediumHigh at large scaleLow
LicenseApache 2.0AGPLv3Apache 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 #

ContextRecommended choiceWhy
A few existing Prometheus servers, need for a global view and historyThanos (sidecar)No changes to the Prometheus servers, cheap object storage
Internal observability platform for dozens of teamsMimirMulti-tenancy, limits, Grafana integration
Small team, tight budget, large volumeVictoriaMetricsSimplicity and efficiency
Isolated clusters (edge, separate networks)Thanos Receive or vmagentPush 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.

Related articles

VictoriaMetrics: why and how, from single node to cluster

What VictoriaMetrics brings compared with Prometheus alone, its components (single-node, vmagent, vmalert, vm…

Ingesting metrics into VictoriaMetrics: scraping, vmagent and remote write

All the ways to feed VictoriaMetrics: remote write from Prometheus, built-in scraping, vmagent and its disk b…

MetricsQL: PromQL with superpowers

The differences between MetricsQL and PromQL: implicit windows, extra functions (range, rollup, label), WITH …

Keep learning

Support us

♥ SUPPORT US

Support RousselTM Learning

Courses, articles, labs and certificates stay free with no intrusive ads. A voluntary contribution, of any amount you choose, pays for hosting, lab environments and new content.

Contribute with PayPal Any amount · card or PayPal accountLearn more
QR code PayPal
Or scan this QR code with your phone

Thank you, every contribution counts!