2. 核心概念:OpenTelemetry Collector 架构与 Prometheus 基础组件

在云原生可观测性体系中,OpenTelemetry Collector 与 Prometheus 是两个核心支柱。Collector 负责数据的采集、处理与导出,而 Prometheus Server 与 Alertmanager 则构成指标存储与告警的闭环。理解它们的内部架构是构建可靠日志平台的前提。

2.1 OpenTelemetry Collector 三阶段架构

Collector 采用管道(Pipeline)模式,数据流经 Receiver → Processor → Exporter 三个核心阶段。每个阶段均可独立配置与扩展,支持多种数据格式(Traces、Metrics、Logs)。

关键设计原则: Collector 不存储数据,仅做路由、转换与批处理。所有持久化由后端(如 Prometheus、Elasticsearch)完成。

2.1.1 组件职责对比

组件 职责 常见实现 数据方向
Receiver 接收来自应用、Agent 或其他系统的遥测数据 OTLP Receiver、Jaeger Receiver、Prometheus Receiver 入站
Processor 数据过滤、采样、转换、批处理、属性修改 Batch Processor、Attributes Processor、Filter Processor 中间处理
Exporter 将处理后的数据发送到后端存储或分析系统 Prometheus Exporter、OTLP Exporter、Loki Exporter 出站

2.1.2 Collector 内部数据流

下图展示了单个 Pipeline 中数据从接收到导出的完整路径。实际部署中可定义多个 Pipeline 实现数据隔离。

OpenTelemetry Collector 三阶段架构图 OpenTelemetry Collector 管道架构 数据源 App / Agent Receiver OTLP / Jaeger Processor Batch / Filter Exporter Prometheus 后端存储 配置热加载 / 健康检查 Pipeline 可并行:Metrics Pipeline + Logs Pipeline 每个 Pipeline 独立配置 Receiver / Processor / Exporter
生产建议: 在 Collector 配置中始终启用 batch Processor。它可以将多条数据合并为一批发送,显著降低 Exporter 的连接开销和下游存储的写入压力。

2.2 Prometheus Server 核心组件

Prometheus Server 是 Prometheus 生态的中央组件,负责指标抓取、存储与查询。其内部模块化设计保证了高可用与扩展性。

2.2.1 组件清单与功能

组件 功能 关键配置项
Retrieval 根据 scrape_config 定时拉取目标端点(/metrics) scrape_interval、scrape_timeout、honor_labels
TSDB 时序数据库,存储指标数据,支持压缩与保留策略 retention.time、retention.size、wal_compression
HTTP API 提供 PromQL 查询接口,供 Grafana 等消费 --web.listen-address、--web.enable-admin-api
Rule Manager 评估告警规则与记录规则,生成告警或预聚合 rule_files、evaluation_interval
Service Discovery 动态发现抓取目标(Kubernetes、Consul、DNS) kubernetes_sd_configs、consul_sd_configs

2.2.2 Prometheus Server 内部模块关系

Prometheus Server 内部模块架构 Prometheus Server 核心模块 Service Discovery Retrieval TSDB HTTP API Rule Manager 读取规则 Alertmanager 告警推送 数据流:Service Discovery → Retrieval → TSDB → HTTP API 告警流:Rule Manager 读取 TSDB 数据 → 推送至 Alertmanager
注意: Prometheus Server 默认不提供日志存储能力。日志数据需通过 Collector 的 Exporter 发送到 Loki、Elasticsearch 等专用日志系统。Prometheus 仅处理指标(Metrics)与告警。

2.3 Alertmanager 基础组件

Alertmanager 负责接收 Prometheus Server 推送的告警,执行去重、分组、静默与路由,最终通过多种渠道(Email、PagerDuty、Webhook)发送通知。

2.3.1 Alertmanager 核心流程

  1. 接收告警: 通过 Alertmanager API 接收来自 Prometheus 或其他源的告警。
  2. 分组(Grouping): 按标签(如 severity、cluster)将相似告警合并为一个通知,避免告警风暴。
  3. 静默(Silencing): 根据静默规则屏蔽特定告警(如计划内维护)。
  4. 抑制(Inhibition): 当高等级告警触发时,自动抑制低等级相关告警。
  5. 路由(Routing): 根据 route 配置将告警发送到不同的接收器(Receiver)。
  6. 通知(Notification): 调用接收器(Email、Slack、Webhook 等)发送最终告警消息。

2.3.2 配置示例:告警路由与接收器

route:
  receiver: 'default-receiver'
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h
  routes:
    - match:
        severity: critical
      receiver: 'pagerduty-critical'
    - match:
        severity: warning
      receiver: 'email-warning'

receivers:
  - name: 'pagerduty-critical'
    pagerduty_configs:
      - routing_key: '<your-key>'
  - name: 'email-warning'
    email_configs:
      - to: 'ops@example.com'
最佳实践: 在 Alertmanager 中设置合理的 group_interval 与 repeat_interval。生产环境建议 group_interval 为 5-10 分钟,repeat_interval 为 4-6 小时,避免重复通知干扰值班人员。

2.4 组件协同关系总结

在云原生日志平台中,OpenTelemetry Collector 与 Prometheus 生态的协同关系可概括为:

  • Collector 负责统一采集日志、指标、链路数据,通过 Processor 进行预处理,再通过 Exporter 分发到不同后端。
  • Prometheus Server 专注于指标存储与查询,通过 Service Discovery 动态发现目标,Retrieval 模块拉取指标,TSDB 持久化。
  • Alertmanager 接收 Prometheus 的告警,执行分组与路由,确保告警准确送达。
  • 日志数据(Logs)通常由 Collector 导出到 Loki 或 Elasticsearch,而指标数据(Metrics)流向 Prometheus,形成完整的可观测性数据平面。
架构要点: Collector 是数据入口的统一抽象层,Prometheus 是指标存储与告警引擎,Alertmanager 是告警治理中心。三者通过标准协议(OTLP、Prometheus Remote Write、Alertmanager API)解耦协作。