2. 可观测性平台基础架构回顾:Prometheus、Grafana、Loki、Tempo、Alertmanager 的核心组件与数据流

在将可观测性平台纳入 Argo CD 管理之前,必须清晰理解其底层组件的职责与数据流转路径。本章回顾五个核心开源项目——Prometheus、Grafana、Loki、Tempo、Alertmanager——的架构定位与协作关系,为后续的模板化 GitOps 管理奠定基础。

2.1 核心组件一览

组件 类型 核心职责 数据来源 存储后端
Prometheus 指标系统 采集、聚合、告警规则评估 Exporter / Pushgateway / 服务端点 TSDB(本地磁盘)
Grafana 可视化层 仪表盘渲染、告警可视化、多数据源统一 Prometheus / Loki / Tempo 等 无状态(依赖外部数据源)
Loki 日志系统 日志采集、索引、查询 Promtail / Fluent Bit / 容器 stdout 对象存储(S3/GCS/MinIO)
Tempo 链路追踪 Trace 接收、存储、查询 OpenTelemetry Collector / Jaeger Agent 对象存储 + 本地缓存
Alertmanager 告警管理 告警去重、分组、静默、路由通知 Prometheus Alertmanager API 无状态(内存 + 可选持久化)
关键认知: 这五个组件并非孤立部署,而是通过标准 API 和协议形成“指标 → 日志 → 链路”三位一体的可观测性数据平面。Argo CD 管理的模板必须覆盖每个组件的配置、数据源连接以及存储路径。

2.2 数据流全景

下图展示了从数据采集到告警通知的完整数据流。箭头方向代表数据推送或拉取关系,颜色分组标识不同的数据域。

可观测性平台数据流全景 数据源层 Exporter / Promtail OTel Collector / SDK Prometheus 指标采集 / TSDB 告警规则评估 Loki 日志索引 / 存储 LogQL 查询 Tempo Trace 接收 / 存储 TraceQL 查询 Alertmanager 去重 / 分组 / 静默 路由通知 Grafana 仪表盘 / 告警 UI 多数据源统一 通知渠道 Slack / PagerDuty Email / Webhook 数据流说明 Prometheus 通过 HTTP 拉取指标;Loki 通过 gRPC/HTTP 接收日志;Tempo 通过 OTLP 接收 Trace。 Grafana 作为统一查询入口,Alertmanager 独立处理告警路由。

2.3 组件间协议与端口

跨组件通信依赖标准协议。下表列出关键端口与协议,在 Kubernetes 环境下需通过 Service 和 NetworkPolicy 显式开放。

源组件 目标组件 协议 默认端口 用途
Prometheus Exporter / 应用 HTTP 9100 / 8080 指标拉取(/metrics)
Prometheus Alertmanager HTTP 9093 推送告警
Promtail Loki gRPC / HTTP 9095 / 3100 日志推送
OTel Collector Tempo gRPC 4317 Trace 上报(OTLP)
Grafana Prometheus / Loki / Tempo HTTP 9090 / 3100 / 3200 数据源查询
Alertmanager 通知接收方 HTTP / SMTP 443 / 587 告警通知

2.4 存储与持久化策略

可观测性平台对存储有显著差异。Argo CD 管理的 Helm 模板必须为每个组件声明正确的 PVC 或对象存储配置。

  • Prometheus TSDB: 本地块存储,推荐 SSD。默认保留 15 天。通过 --storage.tsdb.retention.time 调整。
  • Loki 存储: 对象存储(S3 / GCS / MinIO)存储日志块和索引。支持多租户隔离。
  • Tempo 存储: 对象存储存储 Trace 数据,本地缓存加速查询。支持 backend: s3 或 backend: gcs。
  • Alertmanager: 无状态,告警静默和抑制规则可持久化到本地文件或数据库。
  • Grafana: 无状态,仪表盘和配置通过数据库(SQLite / MySQL / PostgreSQL)持久化。
模板化注意事项: 在跨团队移植时,存储后端类型(如 MinIO 地址、S3 bucket 名称)必须作为模板参数暴露,不能硬编码。Argo CD 的 ApplicationSet 可通过集群级变量注入这些差异。

2.5 告警路由与通知链

Alertmanager 是告警流的核心枢纽。其数据流可拆解为三个阶段:

  1. 接收: Prometheus 根据告警规则评估后,通过 Alertmanager API 推送告警。
  2. 处理: Alertmanager 执行去重(重复告警合并)、分组(按标签聚合)、静默(匹配静默规则)、抑制(高优先级告警抑制低优先级)。
  3. 路由: 根据 route 配置匹配标签,将告警发送到对应接收器(Slack、PagerDuty、Email、Webhook)。

下图展示告警路由的内部决策流程:

Alertmanager 告警路由决策流程 告警输入 来自 Prometheus 去重 指纹 + 标签去重 分组 按 severity / cluster 静默检查 匹配静默规则 路由匹配 按标签匹配 route 树 通知发送 Slack / PagerDuty / Email 静默匹配的告警直接丢弃;未匹配的告警进入路由树,按优先级和标签选择接收器。

2.6 跨团队移植的配置要点

模板化清单: 在 Argo CD 管理场景下,以下配置项必须参数化,避免硬编码:

  • 数据源 URL(Prometheus / Loki / Tempo 的 Service 地址)
  • 存储后端类型与连接信息(S3 endpoint / bucket / region)
  • 告警接收器凭证(Slack / PagerDuty routing key)
  • 保留策略(指标保留天数、日志保留时长、Trace 保留时长)
  • 资源限制(CPU / 内存 / 存储大小)

通过本章回顾,团队应能识别每个组件的配置边界与数据依赖关系。下一阶段将基于此架构设计 Helm Chart 模板结构,使 Argo CD 能够以 GitOps 方式统一管理多集群的可观测性栈。