Mimir
grafana.com- Category
- Developer Tools
- Rank
- No. 893Tools index
- Pricing
- Open Source
- Type
- TOOL
- Use case
- Deployment & Operations
- Builder
- grafana
- GitHub
- 5.3k stars
- Latest release
- mimir-3.2.4
- Date
About
Scalable Prometheus storage. Open-source, horizontally scalable long-term storage for Prometheus metrics. Self-host for free, or use it managed inside Grafana Cloud.
What it does
Mimir takes the samples a Prometheus server collects and writes them out as compressed blocks to an external backend such as S3, GCS, or Azure Blob, instead of keeping everything on local disk. A query hits the same HTTP endpoints Prometheus already exposes, but gets split across separate ingester, compactor, and store-gateway components that can each grow independently. Everything can also run as one binary for simpler setups. A separate command-line tool, shipped alongside it, handles operational tasks: validating config files, backfilling historical data, and managing alerting rules per tenant.
Why it's ranked here
It carries AGPL-3.0 licensing, a documented multi-maintainer governance process with formal voting, and a lineage traceable through code comments to Cortex and Thanos, the two projects it absorbed ideas and code from. That heritage shows in how much of the read path, like block verification and out-of-order chunk detection, was carried over nearly verbatim with attribution intact. A project with a formal governance charter and named release shepherds per version is built for institutional use, not a side project.
What's good
The storage tier accepts any S3-compatible backend, not just AWS, along with Google Cloud Storage and Azure Blob, so teams are not locked into one cloud vendor for the expensive part of the system. Multi-tenancy is built into the architecture rather than bolted on, with per-tenant limits enforced at the API layer. The block-repair tooling can detect out-of-order chunks, duplicate chunks, and unsupported index formats before they cause query errors, which is the kind of maintenance code most databases leave to operators to write themselves.
Tradeoffs
None of this comes free: running it as separate ingester, compactor, and store-gateway services means operating a distributed system with its own failure modes, not a single Prometheus binary. The license is AGPL-3.0-only, which some companies avoid for anything they might modify and run as a network service without contributing changes back. The command-line tool ships as a second binary with its own subcommands, so operators are learning two tools' worth of flags, not one.
How to use it well
It fits teams that have already outgrown a single Prometheus instance's retention or query load and need one queryable view across many source servers or tenants. Start in the single-binary mode to learn the configuration surface before splitting components out for independent scaling. Use the bundled CLI for config validation and historical backfills rather than hand-rolling those against the API. It is not a fit for a small setup that just wants Prometheus with longer retention; the multi-component design is overhead you pay for scale you may not need yet.
Technical notes+
cmd/mimir/main.go wires up flag parsing, YAML config loading with dec.KnownFields(true) enforcing a strict schema, and computes a SHA-256 hash of the loaded config for a cortex_config_hash metric; a -modules flag prints the module dependency graph via t.ModuleManager. cmd/mimirtool/main.go is a separate kingpin-based CLI registering commands such as AccessControlCommand, AlertCommand, BackfillCommand, BlocksCommand, and RuntimeConfigCommand, each namespaced under a MIMIR environment-variable prefix. cmd/query-tee/main.go implements an HTTP proxy (querytee.NewProxy) that mirrors Prometheus-API-shaped read routes, including query, query_range, series, labels, rules, and alerts, to two backends and diffs the responses with a configurable tolerance. pkg/storage/tsdb/block/index.go carries a Thanos-derived VerifyBlock/GatherBlockHealthStats pair that walks TSDB postings to flag out-of-order series, duplicated chunks, and chunks outside a block's declared time range, and only recognizes index.FormatV2. pkg/storage/tsdb/bucketindex/index.go defines the per-tenant Index struct (Blocks, BlockDeletionMarks) that store-gateways read to discover blocks in object storage without listing the bucket directly. go.mod shows heavy reliance on grafana/dskit for clustering primitives, thanos-io/objstore for the storage abstraction, and the twmb/franz-go family, indicating Kafka is a supported ingestion path alongside the push API. GOVERNANCE.md and MAINTAINERS.md document a formal team/maintainer structure with supermajority voting, and LICENSE contains the full AGPL-3.0 text; RELEASE.md lays out a per-minor-version release-branch workflow.
Observed
- License
- AGPL-3.0-only (full text present in LICENSE).
- Language
- Go, packaged as a single module.
- Packaging
- one binary that runs all components together in monolithic mode, or splits into independent services (ingester, compactor, store-gateway, query frontend, etc.).
- Interfaces
- a CLI server binary, a separate management CLI (mimirtool) with subcommands for access control, alerting, and config validation, and an HTTP API shaped after Prometheus's own query endpoints.
- Structural
- Ships a standalone comparison-proxy tool (query-tee) that mirrors read requests to two backends and diffs the responses.
- Structural
- Storage backend is pluggable object storage: AWS S3, Google Cloud Storage, Azure Blob Storage, OpenStack Swift, or any S3-compatible store.
- Architecture
- Multi-tenant by design, with tenant isolation and per-tenant limits built into the architecture.
- Structural
- The TSDB block index reader only recognizes index format v2.
- Structural
- Source files carry explicit provenance headers attributing shared components to the Cortex and Thanos projects.
- Governance
- Formal written governance (GOVERNANCE.md) defines team membership, maintainer roles, and a supermajority voting procedure.
Read from README.md, go.mod, cmd/mimir/main.go, cmd/mimirtool/main.go, cmd/query-tee/main.go, pkg/storage/tsdb/block/index.go, pkg/storage/tsdb/bucketindex/index.go, docs/README.md, CONTRIBUTING.md, ADOPTERS.md, MAINTAINERS.md, LICENSE, GOVERNANCE.md, RELEASE.md.
Tags
Tech Stack
Media

Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.