1. 课程导论:多租户隔离的背景与挑战
1.1 多租户隔离的背景与挑战
在大型采集作业平台中,多个业务团队、项目组或客户(即“租户”)共享同一套基础设施进行数据采集、指标上报与监控分析。这种共享模式带来了显著的资源效率提升,但也引入了核心的隔离问题:如何确保一个租户的异常流量、错误配置或高基数指标不会影响其他租户的可用性与数据准确性?
核心矛盾:共享基础设施的经济性 vs. 租户间数据与性能的强隔离需求。
多租户隔离面临的主要挑战可归纳为以下四个维度:
| 挑战维度 | 具体描述 | 典型风险 |
|---|---|---|
| 数据可见性 | 租户A的指标数据不应被租户B查询或访问 | 数据泄露、合规违规 |
| 资源争抢 | 单个租户的高写入量或复杂查询耗尽共享资源 | 查询超时、采集延迟、服务降级 |
| 基数爆炸 | 租户引入高基数标签(如 user_id、request_id)导致存储膨胀 | TSDB 性能崩溃、存储成本失控 |
| 配置冲突 | 不同租户的采集规则、告警策略互相覆盖或干扰 | 误告警、漏告警、采集任务失败 |
传统的解决方案——如为每个租户部署独立的 Prometheus 实例——虽然隔离彻底,但运维成本随租户数量线性增长,且无法实现全局聚合查询。因此,业界开始探索在共享 Prometheus 集群中,通过 PromQL 聚合查询与标签策略 实现逻辑多租户隔离。
1.2 Prometheus 在采集作业平台中的角色
Prometheus 作为云原生监控的事实标准,在采集作业平台中承担着 指标采集、存储、查询与告警 的核心职责。其角色可分解为以下关键环节:
- 指标采集(Scraping): 通过 Pull 模型定期从各作业节点抓取指标数据,支持服务发现与动态配置。
- 数据存储(TSDB): 以时间序列形式存储指标,每个序列由 metric name + labels 唯一标识。
- 查询引擎(PromQL): 提供强大的聚合、运算与过滤能力,是隔离策略的核心执行层。
- 告警管理(Alertmanager): 基于查询结果触发告警,需确保告警规则也遵循租户隔离。
关键洞察: PromQL 的
label 机制是实现逻辑多租户隔离的基石。通过为每个租户的指标注入唯一的 tenant_id 标签,并在查询时使用 {tenant_id="xxx"} 选择器,即可在共享存储上实现数据隔离。
然而,仅靠标签选择器并不足以解决所有隔离问题。当租户数量增长、查询复杂度上升时,必须引入 PromQL 聚合查询 的高级技巧,如 sum by (tenant_id)、topk 与 rate 的组合使用,以及 Recording Rules 的预聚合策略,才能同时保障隔离性、查询性能与资源公平性。
1.3 课程目标与学习路径
本课程旨在帮助 SRE、平台工程师与可观测性从业者掌握一套 基于 PromQL 聚合查询的多租户隔离方法论,能够独立设计、实施并优化采集作业平台的租户隔离方案。
课程目标
- 理解多租户隔离的底层原理: 标签模型、数据分片、查询路由与资源隔离机制。
- 掌握 PromQL 聚合查询的高级用法:
sum by、topk、quantile、rate在隔离场景中的组合技巧。 - 能够设计隔离策略: 从标签注入、Recording Rules 到查询网关的完整链路。
- 具备排障与优化能力: 识别基数爆炸、查询超时、数据泄露等典型问题并修复。
学习路径
课程共分为 6 个模块,建议按顺序学习:
| 模块 | 章节范围 | 核心内容 |
|---|---|---|
| 基础篇 | 第 1-5 章 | 多租户概念、PromQL 基础、标签模型与选择器 |
| 聚合进阶篇 | 第 6-12 章 | 聚合操作符、by/without 子句、子查询与 Recording Rules |
| 隔离实战篇 | 第 13-20 章 | 标签注入策略、查询网关设计、资源配额与限流 |
| 性能优化篇 | 第 21-25 章 | 基数控制、预聚合优化、TSDB 调优 |
| 排障与案例篇 | 第 26-28 章 | 典型故障排查、数据泄露溯源、性能瓶颈分析 |
| 总结与展望篇 | 第 29-30 章 | 最佳实践总结、未来趋势(OpenTelemetry、Cortex/Thanos 多租户) |
前置要求: 建议学习者具备基本的 Prometheus 部署与使用经验,了解 PromQL 基础语法(如
rate、sum、avg)。课程中会提供必要的代码示例与配置片段,但不会从头讲解 PromQL 语法。