1. 课程导论:Prometheus 日志检索与跨集群查询的背景、目标与整体架构概览
1.1 背景:从指标监控到日志检索的必然演进
在云原生与微服务架构大规模普及的今天,单一 Prometheus 实例已无法满足企业级可观测性需求。核心痛点集中在以下三个维度:
| 维度 | 传统单集群模式 | 跨集群查询挑战 |
|---|---|---|
| 数据孤岛 | 每个 Kubernetes 集群或业务域独立部署 Prometheus,数据彼此隔离 | 故障排查时需手动切换多个 Grafana 数据源,无法全局关联 |
| 日志与指标割裂 | Prometheus 仅存储时序指标,日志依赖 ELK/Loki 独立系统 | 指标告警后无法快速跳转到对应日志上下文,MTTR 居高不下 |
| 准入与安全 | 跨集群查询缺乏统一鉴权,接口暴露风险高 | 多租户场景下,查询接口需严格校验身份与资源范围 |
核心矛盾: 业务连续性要求分钟级定位故障,而现有工具链在跨集群日志检索与指标关联上存在断层,且缺乏统一的准入控制层。
1.2 课程目标:构建统一的日志检索准入门禁与跨集群查询能力
本课程旨在解决上述矛盾,最终交付一套生产可用的 Prometheus 日志检索准入门禁跨集群查询接口。具体目标拆解如下:
- 统一查询入口: 通过反向代理与路由层,将多个 Prometheus 集群的 HTTP API 聚合为单一端点。
- 日志检索增强: 在 Prometheus 查询接口中嵌入日志上下文检索能力(对接 Loki/Elasticsearch),实现“指标→日志”一键跳转。
- 准入门禁控制: 基于 OAuth2 / JWT 的认证鉴权,支持多租户资源隔离,防止越权查询。
- 跨集群联邦查询: 实现 PromQL 的透明分发与结果合并,支持全局聚合查询。
适用人群: SRE 工程师、平台架构师、可观测性平台开发者。建议具备 Prometheus 基础运维经验与 Go/Python 编程能力。
1.3 整体架构概览
系统采用分层解耦设计,从上到下依次为:接入层 → 准入层 → 路由与聚合层 → 数据源层。下图展示了核心组件与调用流程:
1.4 核心模块与职责
系统由以下五个核心模块构成,各模块职责清晰、可独立扩展:
| 模块 | 职责 | 关键技术 |
|---|---|---|
| API 网关 | 统一入口、限流、协议转换、TLS 终止 | Nginx / Kong / Envoy |
| 准入控制器 | JWT 校验、RBAC 鉴权、操作审计日志 | OAuth2 Proxy / Casbin |
| 查询路由器 | 解析 PromQL,按集群标签分发子查询 | Thanos Query / Cortex Querier |
| 结果聚合器 | 合并多集群返回的瞬时向量/区间向量 | 自定义 Merge 引擎 |
| 日志桥接器 | 根据指标时间戳与标签,检索关联日志 | Loki API / ES Scroll |
1.5 课程路线图
全课程共 30 章,按“基础→核心→进阶→实战”四阶段递进:
- 基础篇(第 1-5 章): 环境搭建、Prometheus HTTP API 详解、日志检索基础。
- 核心篇(第 6-15 章): 准入门禁实现、跨集群路由与聚合、日志上下文注入。
- 进阶篇(第 16-25 章): 性能优化、高可用部署、多租户隔离、安全加固。
- 实战篇(第 26-30 章): 生产级部署、混沌工程测试、故障演练与复盘。
前置要求: 请确保已部署至少 2 个 Prometheus 实例(版本 ≥ 2.40),并拥有 Kubernetes 集群操作权限。日志存储建议提前安装 Loki 或 Elasticsearch。