17.4.1 Exporter类型与生态概览

Exporter类型与生态概览#

Prometheus通过Exporter将各类系统、应用与中间件的指标统一暴露为/metrics端点,实现多样化指标采集。本节从类型、生态与接入流程出发,给出安装示例、验证命令、排错思路与练习。

原理草图:Prometheus与Exporter协作#

文章图片

Exporter主要类型与典型场景#

  • 官方与核心Exporter:Node、Blackbox、SNMP等,通用性强,稳定性高。
  • 应用与中间件Exporter:Nginx、Redis、Kafka、ZooKeeper、HAProxy、ProxySQL等。
  • 云与平台Exporter:Kubernetes组件、云资源指标。
  • 自定义Exporter:自研业务指标,SDK或自写HTTP服务暴露。

快速安装示例(以Node Exporter为例)#

环境:Linux x86_64
目的:提供系统级指标

# 1) 下载与解压
cd /opt
curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar -xf node_exporter-1.7.0.linux-amd64.tar.gz
ln -s /opt/node_exporter-1.7.0.linux-amd64 /opt/node_exporter

# 2) 运行
/opt/node_exporter/node_exporter --web.listen-address=":9100"

# 3) 验证
curl -s http://127.0.0.1:9100/metrics | head -n 5

预期效果:返回# HELP node_cpu_seconds_total ...等指标说明。

Prometheus抓取配置示例#

# /etc/prometheus/prometheus.yml
scrape_configs:
  - job_name: "node"
    static_configs:
      - targets: ["127.0.0.1:9100"]

命令解释
- job_name:抓取任务名称,用于PromQL标签。
- targets:目标Exporter地址列表。
- 修改后重载:

curl -X POST http://127.0.0.1:9090/-/reload

生态选择与评估维度(配套示例)#

  • 维护活跃度:优先选择GitHub issues活跃、版本更新频繁的Exporter。
  • 指标覆盖度:通过/metrics检查关键指标:
curl -s http://127.0.0.1:9100/metrics | grep -E "cpu|mem|disk" | head
  • 资源占用:观察Exporter进程资源:
ps -eo pid,cmd,%cpu,%mem --sort=-%cpu | head
  • 兼容性:确认系统与依赖版本要求。

常见故障排错清单(快速定位)#

  1. 抓取失败
# Prometheus目标状态检查
curl -s http://127.0.0.1:9090/api/v1/targets | grep -A2 node
  • state: down,检查端口与防火墙:
ss -lntp | grep 9100
iptables -L -n | grep 9100
  1. 指标为空或缺失
curl -s http://127.0.0.1:9100/metrics | wc -l
  • 行数异常少:检查Exporter参数或权限。
  1. 高基数标签导致内存上涨
    - 通过Prometheus自监控指标定位:
topk(5, prometheus_tsdb_head_series)

练习#

  1. 安装Node Exporter并在Prometheus中添加抓取任务,验证node_cpu_seconds_total存在。
  2. 替换目标为另一台服务器,观察Prometheus Targets状态变化。
  3. 手工关闭Exporter进程,确认Prometheus目标变为DOWN并记录恢复时间。
  4. /metrics中找出3个磁盘相关指标并写出其含义。

小结#

选择Exporter时应综合维护活跃度、指标覆盖、性能影响与兼容性;接入流程遵循“安装—暴露—抓取—验证—排错”。后续子节将展开具体Exporter实践与自定义扩展方式。