mimir
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGrafana Mimir
Grafana Mimir
Horizontally scalable, highly available, multi-tenant, long-term storage for Prometheus and OpenTelemetry metrics.
面向Prometheus和OpenTelemetry指标的水平可扩展、高可用、多租户长期存储系统。
Quick Start (Monolithic Mode)
快速开始(单体模式)
yaml
undefinedyaml
undefineddemo.yaml - single binary, no external dependencies
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.yamltarget: 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.yamlSending Metrics to Mimir
向Mimir发送指标
Prometheus remote_write
Prometheus remote_write
yaml
remote_write:
- url: http://localhost:9009/api/v1/push
headers:
X-Scope-OrgID: tenant1yaml
remote_write:
- url: http://localhost:9009/api/v1/push
headers:
X-Scope-OrgID: tenant1Grafana Alloy
Grafana Alloy
alloy
prometheus.remote_write "mimir" {
endpoint {
url = "http://mimir:9009/api/v1/push"
headers = { "X-Scope-OrgID" = "tenant1" }
}
}alloy
prometheus.remote_write "mimir" {
endpoint {
url = "http://mimir:9009/api/v1/push"
headers = { "X-Scope-OrgID" = "tenant1" }
}
}Multi-tenancy
多租户
yaml
multitenancy_enabled: trueyaml
multitenancy_enabled: trueAll requests require: X-Scope-OrgID: <tenant-id>
All requests require: X-Scope-OrgID: <tenant-id>
undefinedundefinedArchitecture
架构
Write Path
写入路径
Client → Distributor → Ingester (WAL) → Object Storage (blocks)
客户端 → Distributor → Ingester(WAL) → 对象存储(blocks)
Read Path
读取路径
Client → Query-frontend (cache/sharding) → Query-scheduler → Querier ← Store-gateway
客户端 → Query-frontend(缓存/分片) → 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 |
| 组件 | 职责 |
|---|---|
| Distributor | 通过哈希环验证并路由传入的样本数据 |
| Ingester | 内存存储、WAL、将blocks刷新到对象存储 |
| Compactor | 合并blocks、强制执行数据保留策略 |
| Querier | 在ingester和对象存储上执行PromQL查询 |
| Query-frontend | 请求拆分、缓存、并行处理 |
| Store-gateway | 提供对对象存储中blocks的访问 |
| Ruler | 评估记录规则和告警规则 |
| Alertmanager | 路由并去重告警 |
Storage Configuration
存储配置
S3
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}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
GCS
yaml
blocks_storage:
backend: gcs
gcs:
bucket_name: mimir-blocksyaml
blocks_storage:
backend: gcs
gcs:
bucket_name: mimir-blocksAzure
Azure
yaml
blocks_storage:
backend: azure
azure:
account_name: storageaccountname
account_key: ${AZURE_STORAGE_KEY}
container_name: mimir-blocksyaml
blocks_storage:
backend: azure
azure:
account_name: storageaccountname
account_key: ${AZURE_STORAGE_KEY}
container_name: mimir-blocksDeployment Modes
部署模式
bash
undefinedbash
undefinedMonolithic
Monolithic
mimir -config.file=mimir.yaml -target=all
mimir -config.file=mimir.yaml -target=all
Kubernetes (Helm)
Kubernetes (Helm)
helm repo add grafana https://grafana.github.io/helm-charts
helm install mimir grafana/mimir-distributed -f values.yaml
helm repo add grafana https://grafana.github.io/helm-charts
helm install mimir grafana/mimir-distributed -f values.yaml
Read-Write mode
Read-Write mode
mimir -target=write # distributor + ingester
mimir -target=read # query-frontend + querier
mimir -target=backend # store-gateway + compactor + ruler
undefinedmimir -target=write # distributor + ingester
mimir -target=read # query-frontend + querier
mimir -target=backend # store-gateway + compactor + ruler
undefinedKey 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: trueyaml
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: trueHTTP API Endpoints
HTTP API 端点
| 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 |
| 方法 | 端点 | 描述 |
|---|---|---|
| POST | /api/v1/push | 远程写入 |
| POST | /otlp/v1/metrics | OTLP 指标摄入 |
| GET | /api/v1/query | 即时PromQL查询 |
| GET | /api/v1/query_range | 范围PromQL查询 |
| GET | /api/v1/labels | 列出标签 |
| GET | /api/v1/series | 列出序列 |
| GET | /api/v1/rules | 列出规则 |
| GET | /ready | 就绪探针 |
| GET | /metrics | 自身指标 |