其他
需要长期、多租户、可水平扩展的…
在本地或 Kubernetes 上搭建 Grafana Mimir,接收 Prometheus remote_write/OTLP 指标,并配置多租户、对象存储与处理 503/429 等常见问题。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 35/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 38/100 ×0.15
适用场景
需要长期、多租户、可水平扩展的 Prom特定
解决思路
- 本地快速启动单体 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;compactor/distributor/ingester 的 ring/sharding_ring 使用 kvstore: { store: memberlist };distributor/ingester 的 instance_addr: 127.0.0.1;ingester.ring.replication_factor: 1;server.http_listen_port: 9009、grpc_listen_port: 9095、log_level: error。
- 用 Docker 运行单体 Mimir:docker run --rm -p 9009:9009 -v $(pwd)/demo.yaml:/etc/mimir/demo.yaml grafana/mimir:latest --config.file=/etc/mimir/demo.yaml
- 验证就绪:curl -sf http://localhost:9009/ready,期望 HTTP 200,响应体 ready。
- 验证 API 可用:curl -s http://localhost:9009/api/v1/labels | jq '.status',期望 success。
- 验证自身指标可抓取:curl -s http://localhost:9009/metrics | grep -E '^mimir_(distributor|ingester)_' | head。
- 用 Prometheus remote_write 发送指标:在 remote_write 中配置 url: http://localhost:9009/api/v1/push;headers 配置 X-Scope-OrgID: tenant1;当 multitenancy_enabled: true 时该 header 必填。
- 验证样本写入:curl -s -H 'X-Scope-OrgID: tenant1' 'http://localhost:9009/api/v1/query?query=up' | jq '.data.result | length',期望 Prometheus 抓取后约 30s 内大于 0。
- 用 Grafana Alloy 发送指标:配置 prometheus.remote_write "mimir" 的 endpoint.url = "http://mimir:9009/api/v1/push",headers = { "X-Scope-OrgID" = "tenant1" }。
- 在 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。
- 验证 Kubernetes Pod:kubectl get pods -n mimir,确认 distributor、ingester、querier、query-frontend、store-gateway、compactor、ruler 等 Pod 全部 Running/Ready。
- 验证 Mimir 网关就绪:kubectl port-forward -n mimir svc/mimir-nginx 9009:80 &,然后 curl -sf http://localhost:9009/ready。
- 启用多租户:设置 multitenancy_enabled: true;所有请求必须包含 header X-Scope-OrgID: <tenant-id>。
- 按规模选择部署模式:单体(target: all)、read-write 拆分或 microservices;本地快速验证用单体,生产/Kubernetes 可用 Helm mimir-distributed 的微服务模式。
- 配置块存储:生产使用 S3/GCS/Azure 对象存储,开发才用 filesystem;具体存储后端配置见 references/storage.md。
- 查看组件角色、ring 选项、limits 和 API endpoint 细节:参考 references/architecture.md。
- 排障 /ready 503:通常是 ingester 仍在加入 ring;检查 mimir_ring_members 和 ingester 日志。
- 排障 push 返回 429 Too Many Requests:提高 limits.ingestion_rate / ingestion_burst_size。
- 排障写入成功但查询为空:确认写入和读取使用相同的 X-Scope-OrgID。
- 排障查询旧数据为空:检查 compactor 日志,并确认 store-gateway 已同步 blocks。
适用边界 · 注意事项
- 不需要长期存储、多租户或水平扩展,单机 Prometheus 已足够时,不要引入 Mimir。
- 没有对象存储却面向生产长期存储时,不要用 filesystem 作为块存储后端。
- 只想做本地一次性验证时,不必直接部署 Helm 微服务模式。