Skip to content
Back to skills

Mimir

ASecurity

Grafana Mimir scalable long-term metrics storage. Covers architecture (distributor/ingester/compactor/querier/ query-frontend/store-gateway/ruler), deployment modes (monolithic/microservices), configuration, Prometheus remote write, PromQL querying, multi-tenancy, compaction, and operations. Use when working with Mimir for metrics storage, scaling Prometheus, configuring Mimir clusters, writing PromQL, or debugging Mimir.

  • 268 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added June 11, 2026
devopsbashdockerkubernetesawsazuredebugginggitapifrontendbackend

Works with

  • cli
  • api

Security analysis

A100/100

Scanned June 11, 2026

npx -y skills add grafana/skills --skill mimir --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Mimir?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Mimir
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/grafana-mimir/badge)](https://www.skillsdirectory.com/skills/grafana-mimir)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: mimir
license: Apache-2.0
description: >
  Grafana Mimir scalable long-term metrics storage. Covers architecture (distributor/ingester/compactor/querier/
  query-frontend/store-gateway/ruler), deployment modes (monolithic/microservices), configuration, Prometheus
  remote write, PromQL querying, multi-tenancy, compaction, and operations. Use when working with Mimir for
  metrics storage, scaling Prometheus, configuring Mimir clusters, writing PromQL, or debugging Mimir.
---

# Grafana Mimir

> **Docs**: https://grafana.com/docs/mimir/latest/

Horizontally scalable, highly available, multi-tenant, long-term storage for Prometheus and OpenTelemetry metrics.

## Quick Start (Monolithic Mode)

```yaml
# demo.yaml - single binary, no external dependencies
target: all
multitenancy_enabled: false

blocks_storage:
  backend: filesystem
  bucket_store:
    sync_dir: /tmp/mimir/tsdb-sync
  filesystem:
    dir: /tmp/mimir/data/tsdb
  tsdb:
    dir: /tmp/mimir/tsdb

compactor:
  data_dir: /tmp/mimir/compactor
  sharding_ring:
    kvstore:
      store: memberlist

distributor:
  ring:
    instance_addr: 127.0.0.1
    kvstore:
      store: memberlist

ingester:
  ring:
    instance_addr: 127.0.0.1
    kvstore:
      store: memberlist
    replication_factor: 1

server:
  http_listen_port: 9009
  grpc_listen_port: 9095
  log_level: error
```

```bash
docker run --rm -p 9009:9009 -v $(pwd)/demo.yaml:/etc/mimir/demo.yaml \
  grafana/mimir:latest --config.file=/etc/mimir/demo.yaml
```

## Sending Metrics to Mimir

### Prometheus remote_write
```yaml
remote_write:
  - url: http://localhost:9009/api/v1/push
    headers:
      X-Scope-OrgID: tenant1
```

### Grafana Alloy
```alloy
prometheus.remote_write "mimir" {
  endpoint {
    url = "http://mimir:9009/api/v1/push"
    headers = { "X-Scope-OrgID" = "tenant1" }
  }
}
```

## Multi-tenancy

```yaml
multitenancy_enabled: true
# All requests require: X-Scope-OrgID: <tenant-id>
```

## Architecture

### Write Path
Client → Distributor → Ingester (WAL) → Object Storage (blocks)

### Read Path
Client → Query-frontend (cache/sharding) → Query-scheduler → Querier ← Store-gateway

### Components

| Component | Role |
|-----------|------|
| **Distributor** | Validates & routes incoming samples via hash ring |
| **Ingester** | In-memory storage, WAL, flushes blocks to object store |
| **Compactor** | Merges blocks, enforces retention |
| **Querier** | Executes PromQL across ingesters + object store |
| **Query-frontend** | Request splitting, caching, parallelization |
| **Store-gateway** | Provides access to blocks in object storage |
| **Ruler** | Evaluates recording and alerting rules |
| **Alertmanager** | Routes and deduplicates alerts |

## Storage Configuration

### S3
```yaml
blocks_storage:
  backend: s3
  s3:
    bucket_name: mimir-blocks
    endpoint: s3.us-east-1.amazonaws.com
    region: us-east-1
    access_key_id: ${AWS_ACCESS_KEY_ID}
    secret_access_key: ${AWS_SECRET_ACCESS_KEY}
```

### GCS
```yaml
blocks_storage:
  backend: gcs
  gcs:
    bucket_name: mimir-blocks
```

### Azure
```yaml
blocks_storage:
  backend: azure
  azure:
    account_name: storageaccountname
    account_key: ${AZURE_STORAGE_KEY}
    container_name: mimir-blocks
```

## Deployment Modes

```bash
# Monolithic
mimir -config.file=mimir.yaml -target=all

# Kubernetes (Helm)
helm repo add grafana https://grafana.github.io/helm-charts
helm install mimir grafana/mimir-distributed --version 6.0.6 -f values.yaml

# Read-Write mode
mimir -target=write    # distributor + ingester
mimir -target=read     # query-frontend + querier
mimir -target=backend  # store-gateway + compactor + ruler
```

## Key Configuration Options

```yaml
limits:
  ingestion_rate: 10000
  ingestion_burst_size: 200000
  max_global_series_per_user: 1500000
  max_label_names_per_series: 30
  compactor_blocks_retention_period: 30d
  ruler_max_rules_per_rule_group: 20

ingester:
  ring:
    replication_factor: 3

querier:
  max_concurrent: 20

frontend:
  max_outstanding_per_tenant: 100
  compress_responses: true
```

## HTTP API Endpoints

| Method | Endpoint | Description |
|--------|----------|-------------|
| POST | /api/v1/push | Remote write |
| POST | /otlp/v1/metrics | OTLP ingestion |
| GET | /api/v1/query | Instant PromQL query |
| GET | /api/v1/query_range | Range PromQL query |
| GET | /api/v1/labels | List labels |
| GET | /api/v1/series | List series |
| GET | /api/v1/rules | List rules |
| GET | /ready | Readiness probe |
| GET | /metrics | Self metrics |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.