mimir

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Grafana Mimir

Grafana Mimir

Horizontally scalable, highly available, multi-tenant, long-term storage for Prometheus and OpenTelemetry metrics.
面向Prometheus和OpenTelemetry指标的水平可扩展、高可用、多租户长期存储系统。

Quick Start (Monolithic Mode)

快速开始(单体模式)

yaml
undefined
yaml
undefined

demo.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.yaml
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

向Mimir发送指标

Prometheus remote_write

Prometheus remote_write

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

Grafana 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: true
yaml
multitenancy_enabled: true

All requests require: X-Scope-OrgID: <tenant-id>

All requests require: X-Scope-OrgID: <tenant-id>

undefined
undefined

Architecture

架构

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

组件

ComponentRole
DistributorValidates & routes incoming samples via hash ring
IngesterIn-memory storage, WAL, flushes blocks to object store
CompactorMerges blocks, enforces retention
QuerierExecutes PromQL across ingesters + object store
Query-frontendRequest splitting, caching, parallelization
Store-gatewayProvides access to blocks in object storage
RulerEvaluates recording and alerting rules
AlertmanagerRoutes 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-blocks
yaml
blocks_storage:
  backend: gcs
  gcs:
    bucket_name: mimir-blocks

Azure

Azure

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

Deployment Modes

部署模式

bash
undefined
bash
undefined

Monolithic

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
undefined
mimir -target=write # distributor + ingester mimir -target=read # query-frontend + querier mimir -target=backend # store-gateway + compactor + ruler
undefined

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
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

HTTP API 端点

MethodEndpointDescription
POST/api/v1/pushRemote write
POST/otlp/v1/metricsOTLP ingestion
GET/api/v1/queryInstant PromQL query
GET/api/v1/query_rangeRange PromQL query
GET/api/v1/labelsList labels
GET/api/v1/seriesList series
GET/api/v1/rulesList rules
GET/readyReadiness probe
GET/metricsSelf metrics
方法端点描述
POST/api/v1/push远程写入
POST/otlp/v1/metricsOTLP 指标摄入
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自身指标