2. Exporter 基础架构:工作原理、Pull vs Push 模式与常见类型

Exporter 是可观测性体系中的“传感器层”,负责将目标系统的内部状态转换为 Prometheus 等监控系统能够抓取的指标格式。理解 Exporter 的基础架构,是分析数据采集异常对误差预算影响的前提。

2.1 Exporter 工作原理

Exporter 本质上是一个轻量级的 HTTP 服务,遵循以下工作流程:

  1. 采集:通过系统调用、API 请求、文件读取或协议解析,从目标系统中获取原始数据。
  2. 转换:将原始数据映射为 Prometheus 指标格式(Metric Family),包括指标名称、标签(Label)、时间戳和样本值。
  3. 暴露:在 /metrics 端点以纯文本格式暴露指标数据,等待 Prometheus Server 拉取。
关键指标格式示例:
# HELP node_cpu_seconds_total Seconds the cpus spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="idle"} 123456.78
node_cpu_seconds_total{cpu="0",mode="system"} 2345.67
Exporter 工作原理流程图 目标系统 (OS / App / DB) 采集模块 (系统调用 / API) 转换模块 (指标映射) /metrics 端点 (HTTP 暴露) 💡 采集异常可能发生在任一环节:目标不可达、采集超时、转换失败或端点响应错误。

2.2 Pull vs Push 模式对比

Prometheus 生态以 Pull(拉取)模式为主,但 Push(推送)模式在特定场景下也有应用。两种模式对 Exporter 的部署和采集可靠性有直接影响。

对比维度 Pull 模式(Prometheus 默认) Push 模式(Pushgateway)
数据流向 Prometheus Server 主动拉取 Exporter Exporter 主动推送数据到 Pushgateway
Exporter 状态 Exporter 必须持续运行并暴露端口 Exporter 可临时运行,推送后退出
采集可靠性 依赖网络可达性与 Exporter 可用性 依赖 Pushgateway 可用性,数据易堆积
适用场景 长期运行的服务、基础设施监控 批处理任务、短生命周期作业
误差预算影响 Exporter 宕机直接导致数据缺口 推送失败可能导致数据丢失或延迟
SRE 建议: 核心服务监控优先使用 Pull 模式,便于通过 up 指标直接判断 Exporter 存活状态。Push 模式仅用于无法暴露端口的临时任务,且需配置超时和重试机制。
Pull vs Push 架构对比 Pull 模式 Prometheus Server (拉取) Exporter (暴露 /metrics) HTTP GET Push 模式 Pushgateway (接收推送) 批处理任务 (推送数据) HTTP POST ⚠️ Pull 模式下 Exporter 不可用直接导致采集失败;Push 模式下需关注 Pushgateway 单点与数据过期问题。

2.3 常见 Exporter 类型

不同 Exporter 针对不同的目标系统设计,其采集方式、指标类型和常见异常模式各不相同。

Exporter 名称 监控目标 采集方式 关键指标示例 常见采集异常
Node Exporter Linux/Windows 主机 读取 /proc、/sys 文件系统 node_cpu_seconds_total
node_memory_MemAvailable_bytes
文件句柄耗尽、内核接口变更
Blackbox Exporter 网络端点(HTTP/HTTPS/TCP/ICMP) 主动探测(Probe) probe_success
probe_duration_seconds
DNS 解析失败、TLS 握手超时
MySQL Exporter MySQL/MariaDB 数据库 SQL 查询 SHOW STATUS mysql_global_status_connections 数据库连接池耗尽、慢查询阻塞
cAdvisor 容器与 Pod 资源 cgroups 文件系统 + Docker API container_cpu_usage_seconds_total 容器运行时接口超时
JMX Exporter Java 应用(JVM) JMX MBean 反射 jvm_memory_bytes_used GC 暂停导致 JMX 响应延迟

2.4 Exporter 采集异常对误差预算的传导路径

Exporter 采集异常会通过以下路径影响误差预算:

  • 数据缺口:Exporter 宕机或网络不可达导致 Prometheus 无法拉取数据,SLI 指标缺失,无法计算 SLO 达成率。
  • 数据延迟:采集超时或重试导致指标时间戳滞后,影响误差预算的实时性判断。
  • 数据错误:Exporter 版本升级或配置错误导致指标语义变化(如单位变更、标签丢失),造成误判。
  • 指标膨胀:Exporter 暴露了过多高基数标签(如动态 Pod 名称),导致 Prometheus 存储压力增大,间接影响采集稳定性。
误差预算台账警示: 若 Exporter 采集异常未被及时发现,误差预算可能因数据缺失而“虚假达标”,掩盖真实的服务降级。建议为每个 Exporter 配置 up 告警,并设置采集成功率 SLO(如 ≥99.5%)。