2. Exporter 基础架构:工作原理、Pull vs Push 模式与常见类型
Exporter 是可观测性体系中的“传感器层”,负责将目标系统的内部状态转换为 Prometheus 等监控系统能够抓取的指标格式。理解 Exporter 的基础架构,是分析数据采集异常对误差预算影响的前提。
2.1 Exporter 工作原理
Exporter 本质上是一个轻量级的 HTTP 服务,遵循以下工作流程:
- 采集:通过系统调用、API 请求、文件读取或协议解析,从目标系统中获取原始数据。
- 转换:将原始数据映射为 Prometheus 指标格式(Metric Family),包括指标名称、标签(Label)、时间戳和样本值。
- 暴露:在
/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
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 模式仅用于无法暴露端口的临时任务,且需配置超时和重试机制。
2.3 常见 Exporter 类型
不同 Exporter 针对不同的目标系统设计,其采集方式、指标类型和常见异常模式各不相同。
| Exporter 名称 | 监控目标 | 采集方式 | 关键指标示例 | 常见采集异常 |
|---|---|---|---|---|
| Node Exporter | Linux/Windows 主机 | 读取 /proc、/sys 文件系统 | node_cpu_seconds_totalnode_memory_MemAvailable_bytes |
文件句柄耗尽、内核接口变更 |
| Blackbox Exporter | 网络端点(HTTP/HTTPS/TCP/ICMP) | 主动探测(Probe) | probe_successprobe_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%)。