3. 配置静态服务发现

任务目标

在 prometheus.yml 中通过静态服务发现配置多个节点导出器(node_exporter)目标,使 Prometheus 能够周期抓取这些目标的主机指标,并通过 Targets 页面验证抓取状态。

环境准备

本案例假设你已有:

  • Prometheus 二进制(v2.x)已安装,或使用 Docker 运行 prom/prometheus 镜像
  • 至少两台运行 node_exporter 的主机(或本机两个不同端口模拟多节点),node_exporter 默认监听 :9100

实现步骤

创建或修改 prometheus.yml,在 scrape_configs 下定义一个 job,通过 static_configs 列出所有目标地址。以下配置包含两个真实节点和一个本机验证节点:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['192.168.1.101:9100', '192.168.1.102:9100']
        labels:
          env: 'production'
      - targets: ['localhost:9100']
        labels:
          env: 'dev'

若使用 Docker 启动 Prometheus,需将配置文件挂载进容器:

docker run -d --name prometheus \
  -p 9090:9090 \
  -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus

验证方法

  1. 启动 Prometheus 后,访问 http://localhost:9090/targets。
  2. 在 Targets 页面中确认 node_exporter job 下出现三个端点,且 State 均为 UP。
  3. 若某个端点显示 DOWN,检查该主机防火墙是否放行 9100 端口,以及 node_exporter 进程是否正常运行。
  4. 在 Graph 页面执行查询 up{job="node_exporter"},预期返回三个序列且值均为 1(仅当所有目标健康时)。

通过条件:所有配置的目标在 Targets 页面中显示为 UP,且 up 指标查询结果与配置的目标数量一致。

关键说明

  • static_configs 支持在 targets 下直接写地址列表,也可通过 labels 为整组目标附加标签,便于后续查询时区分环境。
  • 若需为单个目标单独加标签,可拆分为多个 static_configs 条目(如上方示例),每个条目独立设置 targets 和 labels。
  • 修改配置文件后需重启 Prometheus 或发送 SIGHUP 信号使其重新加载配置。
Prometheus :9090 prometheus.yml static_configs node_exporter 192.168.1.101:9100 node_exporter 192.168.1.102:9100 node_exporter localhost:9100 env="production" env="production" env="dev" scrape_interval: 15s 周期抓取 /metrics

上图展示了本案例的抓取拓扑:Prometheus 根据 prometheus.yml 中定义的静态目标列表,周期性地从三个 node_exporter 端点拉取指标。不同环境通过 labels 区分,便于后续配置告警或查询时按环境过滤。