4、日志平台组件拓扑图概述:典型云原生日志平台(如Loki+Promtail+Grafana)的组件拓扑
在云原生环境中,日志平台通常采用轻量级、可水平扩展、与Kubernetes深度集成的架构。以 Loki + Promtail + Grafana 为核心的技术栈已成为业界事实标准。本章将拆解该组合的组件拓扑,明确各模块职责与数据流向,为后续基于Helm快照的拓扑回退演练奠定基础。
4.1 核心组件与职责
典型云原生日志平台由以下四个核心组件构成,它们各自承担独立职责,并通过标准HTTP/gRPC接口进行通信:
| 组件 | 角色 | 核心职责 | 部署形态 |
|---|---|---|---|
| Promtail | 日志采集器 | 从节点文件、journald、容器标准输出等源抓取日志,添加标签并推送至Loki | DaemonSet(每节点一个) |
| Loki | 日志存储与查询引擎 | 接收日志流,按标签索引并压缩存储;提供LogQL查询接口 | StatefulSet(可水平扩展) |
| Grafana | 可视化与告警面板 | 连接Loki数据源,展示日志仪表盘;配置基于日志的告警规则 | Deployment(通常单副本或HA) |
| MinIO / S3 | 对象存储后端 | 持久化存储Loki的日志块(chunks)与索引(boltdb-shipper) | Deployment / 外部服务 |
架构要点: Promtail 不负责日志持久化,仅做采集与转发;Loki 不负责日志可视化,仅做存储与查询;Grafana 不存储日志数据,仅做展示与告警。这种职责分离设计使得每个组件都可以独立扩缩容与升级。
4.2 组件拓扑关系与数据流
下图展示了典型云原生日志平台在Kubernetes集群内的组件拓扑关系,包含数据采集、存储、查询与可视化的完整链路:
4.3 组件间通信协议与端口
各组件之间通过明确的协议与端口进行通信,理解这些端口对于后续Helm配置与网络策略管理至关重要:
| 通信链路 | 协议 | 默认端口 | 说明 |
|---|---|---|---|
| Promtail → Loki | HTTP/gRPC | 3100 (HTTP) / 9095 (gRPC) | Promtail 通过 push API 发送日志流 |
| Grafana → Loki | HTTP | 3100 | Grafana 通过 LogQL 查询日志数据 |
| Loki → MinIO/S3 | HTTPS (S3 API) | 443 / 9000 | Loki 使用 boltdb-shipper 存储索引与chunks |
| 用户 → Grafana | HTTP/HTTPS | 3000 | 浏览器访问 Grafana 仪表盘 |
4.4 拓扑回退的关键观察点
在进行Helm快照回退演练时,需要特别关注以下拓扑层面的依赖关系:
- 存储层依赖: Loki 强依赖 MinIO/S3 对象存储的可用性。如果存储后端在回退过程中发生配置变更(如bucket名称、endpoint地址),可能导致Loki无法读取历史日志块。
- 采集层连续性: Promtail 作为DaemonSet,其配置(如标签映射、scrape配置)直接影响日志数据的完整性。回退Promtail配置时需确保与Loki的标签schema兼容。
- 查询层兼容性: Grafana 的Loki数据源配置(URL、认证方式)必须与Loki服务版本匹配。回退Grafana版本时需验证LogQL语法兼容性。
- 网络策略影响: 在Kubernetes NetworkPolicy环境下,回退可能导致组件间通信中断,需提前验证网络策略是否覆盖回退后的Pod标签。
演练提示: 在后续章节的Helm快照回退演练中,我们将重点验证Loki存储配置回退与Promtail采集配置回退两个高风险场景。请牢记上述拓扑依赖关系,以便在回退失败时快速定位根因。
4.5 组件拓扑的Helm Chart结构映射
在Helm部署中,上述组件拓扑对应以下Chart结构(以 grafana/loki-stack 为例):
loki-stack/
├── charts/
│ ├── loki/ # Loki StatefulSet + Service + ConfigMap
│ │ ├── templates/
│ │ │ ├── statefulset.yaml
│ │ │ ├── service.yaml
│ │ │ └── configmap.yaml
│ ├── promtail/ # Promtail DaemonSet + ConfigMap
│ │ ├── templates/
│ │ │ ├── daemonset.yaml
│ │ │ └── configmap.yaml
│ ├── grafana/ # Grafana Deployment + Service + DataSource
│ │ ├── templates/
│ │ │ ├── deployment.yaml
│ │ │ └── datasources.yaml
│ └── minio/ # MinIO Deployment + Service + PVC
│ ├── templates/
│ │ ├── deployment.yaml
│ │ └── pvc.yaml
├── values.yaml # 全局配置参数
└── Chart.yaml # Chart元数据
每个子Chart对应拓扑图中的一个核心组件,values.yaml 中的配置项(如 loki.config、promtail.config)直接控制组件行为。Helm快照将捕获这些配置的完整状态,为回退提供精确的恢复点。