Grafana Mimir开源版如何创建默认租户以外的新租户?
Grafana Mimir开源版多租户配置方案
一、开源版支持情况说明
Grafana Mimir开源版原生支持多租户功能,核心通过租户ID(Tenant ID)实现数据隔离,所有写入、查询请求均需携带租户ID标识完成校验。
二、基于现有MTLS环境的租户配置步骤
1. 配置mimir-gateway提取租户ID
mimir-gateway作为入口服务,负责从客户端证书中提取租户ID并注入请求头,转发给后端组件。修改gateway配置文件:
gateway: server: http_listen_port: 8080 tls_config: cert_file: /path/to/gateway-cert.pem key_file: /path/to/gateway-key.pem client_ca_file: /path/to/ca-cert.pem client_auth_type: RequireAndVerifyClientCert tenant_id: source: "certificate" certificate_field: "common_name" # 从客户端证书的CN字段提取租户ID,也可使用subject_alt_name等字段 # 可选:字段映射规则,比如将证书CN的"agent-tenant1"映射为"tenant1" # mappings: # - source_value: "agent-tenant1" # target_tenant_id: "tenant1"
2. 后端Mimir组件启用多租户校验
所有后端核心组件(distributor、ingester、querier、store-gateway等)需开启多租户验证,以distributor为例:
distributor: multitenancy_enabled: true # 强制开启多租户校验 # 可选:限制允许的租户ID列表,拦截非法租户请求 # allowed_tenant_ids: # - "tenant1" # - "tenant2"
其他组件需同步设置multitenancy_enabled: true。
3. 为新租户生成专属客户端证书
每个租户对应独立的客户端证书,将证书CN字段设为租户ID。示例生成命令:
# 生成租户tenant1的私钥 openssl genrsa -out tenant1-key.pem 2048 # 生成CSR,CN指定为tenant1 openssl req -new -key tenant1-key.pem -out tenant1-csr.pem -subj "/CN=tenant1" # 用CA签署证书 openssl x509 -req -in tenant1-csr.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out tenant1-cert.pem -days 365
4. 配置Grafana Agent使用租户证书写入
修改Agent配置,指定对应租户的客户端证书,确保写入请求携带正确租户标识:
metrics: wal_directory: /var/lib/grafana-agent/wal configs: - name: tenant1-metrics remote_write: - url: https://mimir-gateway:8080/api/v1/push tls_config: cert_file: /path/to/tenant1-cert.pem key_file: /path/to/tenant1-key.pem ca_file: /path/to/ca-cert.pem
三、查询请求的租户ID验证
- Grafana数据源配置:在Mimir数据源的「Custom HTTP Headers」中添加
X-Scope-OrgID: 目标租户ID - curl查询示例:
curl -H "X-Scope-OrgID: tenant1" https://mimir-gateway:8080/api/v1/query -d 'query=up'
四、可选:API密钥方式的租户认证
若需替代MTLS,可通过API密钥映射租户ID,修改gateway配置:
gateway: tenant_id: source: "header" header_name: "X-API-Key" mappings: - source_value: "tenant1-secret-key" target_tenant_id: "tenant1" - source_value: "tenant2-secret-key" target_tenant_id: "tenant2"
请求时携带X-API-Key: tenant1-secret-key即可映射到对应租户。
内容的提问来源于stack exchange,提问作者user3436288
相关产品推荐
相关产品推荐

