Thanos vs Grafana Mimir vs VictoriaMetrics: which fits a small platform team
A small platform team whose single Prometheus server has run out of retention or failed at the wrong moment usually needs the long-term store that adds the least new operating surface. For most teams in that position, VictoriaMetrics is the simplest starting point, and Thanos is the better fit only if the team wants to keep its existing Prometheus servers and already runs object storage. Grafana Mimir suits a team that already runs Kubernetes, can operate microservices and needs a multi-tenant remote-write cluster for several groups, so the answer depends on what the team already operates.
Thanos fits a team that wants to keep its current Prometheus servers in place. The sidecar sits beside each server, uploads TSDB blocks to object storage, and the Query component provides one view across them. The Thanos getting started guide states that it is built as a distributed system and is not recommended for production on a single node, so plan for several components. Mimir fits a team that can run its distributed components and a Kafka-based ingest path, which the Mimir architecture docs describe as the preferred option from version 3.0. Its tenant ID header requirement and external authentication also mean the team must supply that layer. VictoriaMetrics fits a team that wants one small binary configured through command-line flags, with a cluster version available when a single node is no longer enough.
Before deciding, confirm three things in your own environment: whether you already operate object storage, whether the team has run Kubernetes and Kafka in production, and how many Prometheus servers need one query view. Then run a proof of concept against one real workload and test a restore of its data. Ask each vendor to confirm the storage backend and failure behavior you plan to use. License and Enterprise tier questions are covered below, so this section focuses on operating fit.
Which platform fits which scenario
This table matches each common requirement to the platform that fits it best and names the condition under which the alternative wins. Read each row against your own estate, and treat the first column as the question to answer before choosing.
| Scenario | Best fit and reason | When the alternative wins |
|---|---|---|
| Keeping existing Prometheus servers unchanged | Thanos. The sidecar sits beside each running Prometheus and uploads its blocks, so the scrape and rule configuration stays where it is. | Mimir or VictoriaMetrics win when you are willing to change Prometheus to remote write, because they accept pushed data without a sidecar on every server. |
| Many independent teams sharing one store with tenant isolation | Grafana Mimir. Its multi-tenant design isolates each tenant's data and queries, and it requires a tenant ID header on every request. | Thanos Receive also tags tenants by header, but Mimir leaves authentication to a reverse proxy in both cases, so pick Mimir if you want tenancy built around the store itself. |
| A small platform team wanting the fewest moving parts | VictoriaMetrics single-node. It ships as one small binary configured by command-line flags, with no separate cluster to run. | Thanos wins if you already run Prometheus and need only a global view across a few servers. Mimir is the heaviest option and suits teams with Kubernetes and capacity to operate it. |
| Object storage as a hard requirement | Thanos or Mimir. Both keep history in object storage, and Mimir supports S3, Google Cloud Storage, Azure Storage and OpenStack Swift. | VictoriaMetrics fits when block storage is the only option, and its README notes support for NFS-based storage such as Amazon EFS and Google Filestore. |
| Built-in downsampling of historical data | Thanos. The open-source compactor downsamples to 5-minute and 1-hour resolutions, and the Thanos compactor must run as a singleton per bucket. | VictoriaMetrics offers downsampling only in its Enterprise tier, so the open-source build is the wrong choice if you need it. Mimir does not support Thanos downsampling, so confirm the approach before migrating. |
| An AGPL-3.0 constraint on the license | Thanos or VictoriaMetrics. Thanos is Apache-2.0 and VictoriaMetrics open-source builds are Apache 2.0 as well. | Mimir is AGPL-3.0-only. Teams that can accept AGPL obligations for an unmodified or modified service can still use it, so have counsel confirm your obligations before deploying. |
How Thanos, Mimir and VictoriaMetrics attach to Prometheus
The three platforms attach to Prometheus in different places, and that choice decides what you change on your existing servers. Thanos keeps Prometheus as the scraper and adds components beside it. The Thanos sidecar reads the TSDB blocks each Prometheus server produces and uploads them to object storage, and the Thanos docs describe that upload as happening every 2 hours. The sidecar depends on one setting in the Prometheus configuration: the min and max block duration must be set to equal values to disable local compaction, because the sidecar docs warn that otherwise uploaded data can be corrupted. Thanos Receive takes the other route, accepting Prometheus remote write, so the servers push instead of being read. Thanos is built to run as a distributed system, and its getting started guide does not recommend production use on a single node. Plan at least a small set of components, not one process. The Thanos compactor also has a hard constraint: it must run as a singleton against each object storage bucket. Confirm that your scheduler will never start a second instance against the same bucket during a rollout or failover.
Grafana Mimir replaces the Prometheus storage path with its own cluster. Prometheus writes through the remote write API to the distributor, and PromQL queries go to the query frontend, so every server that feeds Mimir needs a remote write configuration and every query consumer needs the Mimir query path. Mimir requires a tenant ID header on every HTTP request and leaves authentication to an external reverse proxy, so you must build that proxy layer yourself. Internally, the classic architecture uses stateful ingesters with local write-ahead logs. From Mimir 3.0, the preferred ingest storage architecture uses Kafka as a central pipeline that decouples reads from writes. Choosing the ingest path is a decision you make before deployment, because it determines whether you must operate a Kafka cluster. Mimir components compile into a single binary, and the -target parameter selects which components run, with monolithic mode running all of them in one process for smaller installs.
VictoriaMetrics has the simplest attachment model of the three. Prometheus, or a Prometheus-compatible agent, sends data with remote write to a single small binary configured through command-line flags, with no external dependencies. The README also lists ingestion from many other protocols, so the same endpoint can receive other sources. The main decision is whether one single-node instance is enough or whether you need the cluster version, which is also Apache License 2.0 licensed. Confirm the storage target before you commit, because the README says VictoriaMetrics supports NFS-based storage such as Amazon EFS and Google Filestore. Remember that VictoriaMetrics keeps data on the volumes it manages, so your backup and retention runbook must cover those volumes directly, not an object bucket. Also check your remote write buffering and retry settings on each Prometheus server, since those determine how much data is at risk if the endpoint is unavailable.
What each license and edition means for your team
Thanos is licensed under Apache-2.0, a permissive license that lets your team run, modify and redistribute the software without a copyleft obligation on your own services. The project describes itself as a highly available Prometheus setup with long-term storage capabilities and is a CNCF Incubating project, so its governance sits under the CNCF rather than a single vendor. The open-source compactor includes downsampling, so historical data can be kept at 5-minute and 1-hour resolution without a paid tier.
- License posture: Apache-2.0 applies to the Thanos components you deploy beside Prometheus, with no commercial edition required to get downsampling.
- Governance: CNCF Incubating status means the project is hosted by a neutral foundation, which many procurement teams treat as a lower vendor lock-in risk.
- Downsampling: the open-source compactor handles 5-minute and 1-hour resolutions, so the feature is available in the same build you run for storage.
- Support: no vendor-run paid edition is described in the supplied material, so support comes from your internal team, a contractor or the community.
Confirm with your counsel and your chosen integrator which Thanos release you will pin, and check the thanos-io/thanos repository for any notice that changes the terms before deployment.
Grafana Mimir is distributed under AGPL-3.0-only. The AGPL requires that if you modify Mimir and make it available to users over a network, you must offer those users the corresponding source of your modified version. Running an unmodified build for internal use creates a different obligation profile than patching the code, embedding it in a product or offering it as a service to outside customers. Mimir's own terms are the starting point, but how the license applies to your deployment depends on facts that counsel should review.
- Unmodified internal use: running the published binaries or the mimir-distributed Helm chart without code changes is the simplest case to document.
- Modified deployments: patches, custom forks or bundled wrappers may trigger the AGPL network source offer, so record every change you make.
- Service offerings: if you expose Mimir-backed metrics to external customers through your product, have counsel confirm the position.
- Licensing scope: the supplied material covers the core project license only, so any commercial agreement Grafana Labs offers for Mimir must be confirmed directly with the vendor.
- Support: community support and any paid support terms are not described in the supplied material and must be requested from Grafana Labs.
Before you choose Mimir, ask counsel to review your intended modifications and hosting model against AGPL-3.0-only, and confirm the current paid support terms in writing.
VictoriaMetrics single-node and cluster versions are both open source under the Apache License 2.0, so the core database you deploy for long-term Prometheus storage carries the same permissive terms as Thanos. The Enterprise tier is a separate offering that adds anomaly detection, backup automation, multiple retentions, downsampling, long-term support (LTS) release lines and support from the core team. Enterprise and LTS releases are publicly available and can be evaluated with a free trial license.
- Open-source core: Apache-2.0 covers both single-node and cluster versions, with no feature gate on the basic storage and query path.
- Enterprise features: downsampling, multiple retentions and backup automation sit in the paid tier, so a downsampling plan must account for that edition.
- LTS lines: the Enterprise LTS releases give a longer and more predictable patch window than the regular release cadence, which matters if you run a regulated change process.
- Trial access: a free trial license lets you test Enterprise features in your own environment before any purchase decision.
- Pricing: the supplied material does not give Enterprise pricing or contract terms, so request a written quote and the support terms from VictoriaMetrics.
Before you rely on downsampling or backup automation, confirm in writing which edition includes them, the trial conditions and the LTS support window you would receive.
What drives the running cost of each platform
Running costs for all three platforms come from the same places: how much history you keep, how many series you ingest, and how many engineers must keep the stack healthy. The cards below separate what you pay once from what recurs, and what to request in a written quote so the figures can be compared on equal terms.
Object storage volume and retention
Thanos and Grafana Mimir both keep long-term history in object storage, so the bill grows with series count, scrape interval and retention period. Thanos also keeps downsampled copies (5-minute and 1-hour resolutions), which adds stored volume. Ask the vendor or integrator for the expected series count, retention period, and whether downsampled data is included in the storage estimate. Your own object store pricing, not the software license, usually sets this line.
Mimir ingest pipeline compute
In Mimir 3, the preferred ingest path uses Kafka as a central pipeline, while the classic path uses stateful ingesters with local write-ahead logs. Either way, ingesters or the Kafka layer need compute, memory and disks sized for peak write load, and they recur every month whether or not queries run. Ask for the chosen ingest architecture, node counts per component, and whether the quote includes a Kafka cluster or assumes an existing one.
Thanos singleton compactor and query nodes
The Thanos compactor must run as a singleton against each object storage bucket, so it cannot be scaled out to speed up compaction and needs a dependable node of its own. Querier, store gateway and query frontend nodes add recurring compute as query load grows. Ask how the compactor is hosted and restarted, how long a compaction backlog would take to clear on the chosen sizing, and which components the quote counts as recurring.
Block storage and memory in VictoriaMetrics
VictoriaMetrics keeps data on local or NFS-based block storage, so the main recurring line is disk capacity and the memory needed for the working set of series. Because it runs as a single binary configured by flags, hardware is often lighter than a multi-component cluster, but volume still grows with retention. Ask for disk size and type, memory per node, retention settings, and whether the quote assumes single-node or cluster deployment.
Enterprise tier decision
VictoriaMetrics Enterprise adds features such as downsampling, multiple retentions, backup automation and LTS release lines, and its Enterprise and LTS releases can be evaluated with a free trial license. Thanos includes downsampling in its open-source compactor, so the Enterprise decision is different there. Ask any vendor which features are behind a paid tier, what the license term is, and whether a trial is included before comparing the open-source build with a licensed build.
Staff time to operate each stack
The largest recurring cost is often the hours a platform team spends on upgrades, capacity planning, object storage lifecycle rules and incident response. Thanos is built as a distributed system and is not recommended on a single node, and Mimir runs many microservices, while VictoriaMetrics has fewer moving parts. Ask your integrator for a written scope covering installation, upgrades, backup testing and handover, then compare that scope and its support terms against your in-house hours.
What implementing each platform involves
Implementing Thanos is mostly configuration across several components that you run beside existing Prometheus servers. The Thanos sidecar needs each Prometheus instance to upload blocks, and the Thanos docs require min-block-duration and max-block-duration to be set to equal values so local compaction is disabled, otherwise uploaded data can be corrupted. You then create one object storage bucket, and the Thanos compactor must run as a singleton against that bucket. Plan the retention and downsampling rules at the same time: the compactor downsamples raw data older than 40 hours to 5-minute resolution and 5-minute data older than 10 days to 1-hour resolution. Store gateways, Query and Query Frontend also need sizing and placement, and the getting started guide says Thanos is not recommended for production on a single node, so budget for several hosts.
Implementing Mimir is a Kubernetes project. Grafana publishes the mimir-distributed Helm chart for installing, configuring and upgrading the cluster, so the team needs working Kubernetes skills, persistent storage classes and an object storage bucket with credentials that the pods can reach. Mimir requires a tenant ID header on every HTTP request and leaves authentication and authorization to an external reverse proxy, so you must design and operate that proxy, including how tenant identity maps to the header. From Mimir 3.0, the preferred ingest path uses Kafka, which adds a broker tier to operate. The migration path from Thanos is the step most often underestimated. Grafana's migration guide covers moving Thanos or Prometheus data into Mimir, but Mimir does not support Thanos downsampling, so downsampled blocks and duplicate HA blocks must be removed. Confirm with Grafana exactly what your data set will lose before you cut over.
Implementing VictoriaMetrics starts with the smallest moving part set. The single-node binary is configured through command-line flags and needs no external dependencies, so a single host with a Prometheus remote_write block is a common first deployment. Moving to the cluster version means deciding the topology of its components and how remote write reaches them, and this is where Kubernetes or configuration management skills matter. Storage is local block storage or NFS-based storage such as Amazon EFS, so confirm storage latency and capacity with your own tests instead of assuming them. Downsampling is an Enterprise feature, so if your retention plan depends on it, confirm the license terms and evaluation options with VictoriaMetrics before you design around it. In every option, your team must supply the Prometheus configuration changes, access to the object storage or block storage, and a migration test that compares query results on a copy of real data before anything goes live.
Questions buyers ask before choosing a Prometheus scaling platform
What does it cost to run Thanos, Grafana Mimir or VictoriaMetrics beyond one Prometheus server?
The software licenses are the smallest part of the bill for all three options: Thanos and VictoriaMetrics single-node and cluster versions are Apache-2.0, and Mimir is AGPL-3.0, so none of them charges a per-node license fee to run the open-source build. The recurring costs are the object storage or block storage bill, the compute for ingesters, stores, compactors or the VictoriaMetrics nodes, and the engineering time to operate them. Ask any implementation partner for a written scope that lists the components, storage sizing assumptions, retention periods, high availability layout and the upgrade and backup work, because those items drive the quote. Ask each vendor separately whether its Enterprise tier is needed for the features you require, since downsampling and multiple retentions are listed as VictoriaMetrics Enterprise features.
How long does a typical rollout take, and why does it vary so much?
A rollout length depends on the number of Prometheus servers, the volume of active series, whether you already run object storage, and how many existing dashboards and alerting rules must be moved and verified. Thanos can be added beside existing Prometheus servers, so the first step is often a sidecar or Receive setup, while Mimir expects remote write into a distributed cluster and VictoriaMetrics expects remote write into a single node or cluster. Each path has different integration work for authentication, tenancy and retention. This guide does not state a duration. Ask for a timeline in the written scope, with milestones for the pilot, the cutover and the decommissioning of old storage.
Can a small platform team run one of these without outside help?
A small team can run the single-node VictoriaMetrics option with fewer moving parts, because its README describes a single small binary configured through command-line flags. Thanos is built to run as a distributed system and its getting started guide says it is not recommended for production on a single node, so the sidecar, store gateway, querier and compactor each need monitoring and capacity planning. Mimir is a set of microservices compiled into one binary, and the preferred ingest path in version 3 uses Kafka, which adds another system to operate. Honest assessment depends on your skills, on-call coverage and whether you need high availability from day one. Many teams bring in outside help for the first design and upgrades, then operate it internally. DeployOpen plans, implements, upgrades and supports self-hosted platforms in your own infrastructure under fixed-scope engagements or retainers.
Does moving Thanos blocks into Mimir lose downsampled data?
Yes, you should plan for it. Grafana's migration documentation says Mimir does not support Thanos downsampling, so downsampled blocks cannot be carried over as they are. The migration guide describes removing downsampled and duplicate high availability blocks as part of the process. Raw data that remains can be migrated, but historical views that depended on 5-minute or 1-hour resolution will need a different plan, such as keeping the Thanos store available for older data, re-creating aggregates, or accepting a shorter history at lower resolution. Confirm with Grafana which data you can migrate and what remains queryable, and ask your implementation partner to document the cutover window and rollback path in writing.
Does the AGPL-3.0 license of Grafana Mimir affect how we can use it?
The AGPL-3.0 license of Mimir allows you to run it internally, but its network clause is the point to review with counsel. Under AGPL-3.0, if you modify Mimir and make it available to users over a network, you may need to offer the corresponding source of those modifications. Running an unmodified build for internal dashboards and alerting generally raises a different question than offering a modified service to customers. Thanos and VictoriaMetrics single-node and cluster versions are Apache-2.0, which carries no comparable network-use obligation. Ask your legal team to confirm what applies to your deployment model, and confirm with Grafana whether any commercial license is available if you need one.
What should we confirm with each vendor before committing?
Before choosing, confirm the following in writing for each project:
- The license of the exact version you will deploy, and which features sit behind a paid tier.
- Current release cadence and maintained lines. Mimir 3.2.2 and 3.1.7 were listed as current on October 7 and October 6, 2026, and VictoriaMetrics v1.154.0 was published on October 12, 2026, according to their GitHub release pages.
- Whether downsampling, multiple retentions and the features you need are open source or Enterprise.
- Required components and their resource footprint at your expected series count.
- Authentication and tenant isolation, since Mimir leaves authentication to an external reverse proxy.
- Backup, restore and upgrade procedures, tested against your own data.
Record the answers so the comparison reflects your environment rather than a general claim.
A decision path for choosing among the three
This sequence turns the three-way shortlist into a documented choice by checking your current Prometheus footprint, storage target, tenancy and downsampling needs, license position, and performance under your own query load before any commitment is made.
Inventory existing Prometheus servers and retention
List every Prometheus server, its scrape scale, the number of active series it holds, how long data must be kept, and which teams own each server. Note whether any pair runs as an HA pair, because deduplication behaves differently across the three options. Record the query consumers, including dashboards and alert rules, since they determine which query language and API surface must keep working. The step is done when the team has a single table of servers, series counts, retention targets and owners that every later step refers to.
Choose object storage or block storage as the target
Decide where long-term data should live. Thanos and Grafana Mimir both keep historical data in object storage, and Mimir also supports a local filesystem only for single-node use. VictoriaMetrics single-node and cluster versions store data on local or block storage, and its README also lists NFS-based storage such as Amazon EFS and Google Filestore. Ask your storage team which durability, replication and backup services are available in your environment, and confirm them with each vendor's documentation. The step is done when the team has a written storage decision and a list of approved storage services.
Check tenancy and downsampling requirements
Determine whether separate teams or business units need isolated data and query paths, and whether historical data must be downsampled. Thanos includes downsampling in its open-source compactor at 5-minute and 1-hour resolutions. Grafana's migration guide states that Mimir does not support Thanos downsampling, and the VictoriaMetrics README lists downsampling among its Enterprise features. Mimir requires a tenant ID header on every request and leaves authentication to an external reverse proxy, so the team must plan that proxy. The step is done when each requirement is marked as needed in the open-source build, needed in an Enterprise tier, or handled by a component you will build.
Review license and Enterprise needs with counsel
Take the shortlist to counsel and procurement. Thanos is Apache-2.0, Grafana Mimir is AGPL-3.0-only, and VictoriaMetrics single-node and cluster are Apache-2.0 with an Enterprise tier. Ask counsel how AGPL-3.0 obligations apply if you modify and offer the software to users over a network, and whether an internal-only deployment changes that analysis. Confirm which features your downsampling and tenancy requirements depend on, and whether those features sit behind the VictoriaMetrics Enterprise license. The step is done when counsel has signed off on the license position for each option you plan to test.
Map operating effort and skills for each option
Write down the components each option needs to run. Thanos adds sidecars or Receive, Query, Store and Compact components, and its compactor must run as a singleton per bucket. Mimir runs as a microservices deployment, commonly installed with the mimir-distributed Helm chart, and from version 3.0 its preferred ingest path uses Kafka. VictoriaMetrics is a small binary in single-node form and a cluster in larger form. Name the people who will operate each option and the Kubernetes or VM skills they need. The step is done when the team has a comparison of moving parts and a named owner for each.
Run a proof of concept against real query loads
Deploy the two or three shortlisted options side by side in a non-production environment that receives a copy of production remote-write traffic. Replay representative dashboards and alert rules, measure query latency, ingestion stability and storage growth at your real series counts, and test a restore from backup. If you plan a migration from existing Thanos blocks, test that path separately, because Grafana's migration guide describes removing downsampled and duplicate HA blocks first. The step is done when the team has a written results record for each option that the owners have reviewed.
Record the decision and the exit path
Document the chosen option, the requirements it satisfies, the Enterprise features (if any) it depends on, and the trade-offs the team accepted. Include the migration path if you later move between options, including what is lost, such as downsampling or query-language compatibility. Ask your DeployOpen or internal architects to confirm the scope of any implementation support in a written, fixed-scope agreement before work begins. The step is done when the decision record is approved and stored with the platform documentation.
Where to confirm the facts behind this comparison
Check the figures in this comparison against the primary sources before you commit to a design. For Thanos, start with the thanos-io/thanos GitHub releases page, which lists v0.42.0 (July 8, 2026) and v0.42.4 (July 30, 2026), and the component pages for Sidecar, Receive and Compact. For Grafana Mimir, the grafana/mimir GitHub releases page shows the current 3.2 line and the 3.1 line that is still receiving fixes, and the Mimir architecture documentation explains the classic and ingest storage paths. For VictoriaMetrics, the VictoriaMetrics releases page shows the roughly two-week cadence, and the README is the place to read the current edition boundaries. Each project's own changelog and release notes are the authority on what a given version changed.
Some points cannot be settled from public documentation alone. Ask VictoriaMetrics for the current list of Enterprise features and confirm which of them, such as downsampling, multiple retentions and backup automation, your team would need in production. Confirm the LTS release lines, their support windows and the trial license terms for Enterprise and LTS builds. Ask Grafana whether Mimir's release support windows and the Kafka-based ingest path meet your requirements, and confirm the status of the Thanos migration guidance for your Mimir version. For Thanos, confirm the support expectations for the Thanos version you pick, since the project is a CNCF Incubating project and its maintenance policy is set by the maintainers.
Verify the licensing position in writing before procurement. Thanos is Apache-2.0, Mimir is AGPL-3.0-only and VictoriaMetrics single-node and cluster are Apache-2.0, but your legal team should check how AGPL-3.0 obligations apply if you modify Mimir and offer it to users. Ask any vendor that sells support or Enterprise tiers for the written feature matrix and the support terms, and keep those documents with your evaluation record. DeployOpen can help you map these questions to your environment and scope the checks as part of a written plan, but the authoritative answers come from the projects and vendors named here.
How DeployOpen works on this
DeployOpen plans, implements, integrates, hardens, documents and supports self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For Prometheus scaling, that means starting from your existing Prometheus servers, retention and tenancy needs, and the object storage or block storage you already operate, then building the option your team can run.
How we scope
- We confirm which Prometheus servers, retention periods and tenant boundaries the written scope covers before any build starts.
- We record whether the scope needs Thanos sidecars, Receive, Mimir remote write or VictoriaMetrics, and why each fits your estate.
- Engagements are fixed-scope, with deliverables and timelines agreed in writing, and a quote follows from that written scope.
How we build
- We deploy the chosen option in your environment, including storage backends, Prometheus remote write or sidecar configuration, and query paths.
- We test ingest, query, deduplication and downsampling behavior against your retention rules and any licensing constraints you have set.
- Where a candidate depends on Enterprise features or an AGPL-3.0 component, we document the licensing position and confirm it with your legal team.
How we hand over
- We document the architecture, configuration, backup and upgrade steps, and the runbooks your platform team will use day to day.
- We walk your engineers through alerting on ingest lag, compaction health and storage growth so the team can operate the stack.
- We deliver a migration note for any existing Thanos blocks or Prometheus data, listing what carries over and what does not.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer, scoped separately from the original build.
- We track release and support windows for the chosen components so upgrade work is planned against published policies.
- We prepare the systems and evidence your compliance assessors may ask for, while independent auditors issue any formal opinion.

