关于Grafana Tempo多租户的疑问:目标、搜索影响及示例需求
Grafana Tempo多租户机制解析
核心目标
Grafana Tempo的多租户机制本质是解决多团队/多项目共享追踪系统时的数据隔离、权限管控和资源分配问题,具体目标包括:
- 数据安全隔离:不同租户(比如公司内的不同业务线、外部客户)的追踪数据完全分隔,避免敏感数据泄露或误访问。
- 资源按需分配:管理员可以为不同租户分配独立的存储、查询资源,防止某个租户的大量追踪数据挤占其他租户的系统资源。
- 简化运维:无需为每个团队单独部署一套Tempo,通过多租户机制复用一套系统,降低运维成本。
- 权限精细化管控:可以基于租户维度设置查询、写入权限,比如只允许租户自己的人员查询本租户的追踪数据。
对追踪搜索结果的影响
启用多租户后,追踪搜索的结果会严格绑定到当前租户身份,核心影响有:
- 数据可见性隔离:每个租户只能查询到自己上报的追踪数据,完全看不到其他租户的链路信息。比如电商租户的运维人员搜索订单相关追踪时,不会出现支付租户的交易链路。
- 查询自动过滤:在Grafana或Tempo查询API中,系统会自动携带当前租户的标识作为过滤条件,无需手动添加,避免误查询到其他租户数据。
- 权限拦截:如果租户尝试访问不属于自己的追踪数据(比如通过篡改请求中的租户ID),Tempo会直接返回权限错误,拒绝查询。
简单示例理解
假设公司有两个业务团队:电商团队(租户ID:ecommerce)和支付团队(租户ID:payment),我们通过三个环节看多租户的工作逻辑:
1. 数据上报阶段
使用OpenTelemetry Collector采集追踪数据时,为两个团队的服务分别添加租户标识:
- 电商团队的Collector配置:
processors: attributes: actions: - key: tenant value: ecommerce action: insert service: pipelines: traces: processors: [attributes] exporters: [otlp/tempo]
- 支付团队的Collector配置:
processors: attributes: actions: - key: tenant value: payment action: insert service: pipelines: traces: processors: [attributes] exporters: [otlp/tempo]
2. 存储阶段
Tempo启用多租户配置后,会将两个租户的追踪数据按租户ID进行逻辑分区存储,彼此完全独立,不会出现数据混合。
3. 查询阶段
- 电商团队的运维人员在Grafana中查询追踪时,系统会自动注入
tenant=ecommerce的查询条件,返回的结果只有电商团队的订单创建、商品库存等链路数据。 - 支付团队的人员查询时,只能看到支付网关、交易对账等属于
payment租户的追踪链路,无法访问电商团队的任何数据。
内容的提问来源于stack exchange,提问作者Mandroid
相关产品推荐
相关产品推荐

