Prometheus Exporter 实战:使用 Node Exporter 与 Blackbox Exporter 监控主机和服务

2026-07-25
3
-
- 分钟

Prometheus 本身负责抓取、存储和查询时序指标,Exporter 负责把系统或服务状态转换为 Prometheus 指标。Node Exporter 采集 Linux 主机内部指标,Blackbox Exporter 从外部探测 HTTP、TCP、ICMP 和 DNS,两者解决的问题不同。

## Node Exporter:观察主机内部

Node Exporter 默认监听 9100,提供 CPU、内存、磁盘、文件系统、网络和内核指标。建议使用专用系统账号运行,校验官方发布包,并通过 systemd 管理。

```ini

[Unit]

Description=Prometheus Node Exporter

After=network-online.target

[Service]

User=node_exporter

Group=node_exporter

ExecStart=/usr/local/bin/node_exporter

Restart=on-failure

NoNewPrivileges=true

[Install]

WantedBy=multi-user.target

```

Prometheus 抓取配置:

```yaml

scrape_configs:

- job_name: linux-nodes

static_configs:

- targets:

- node01.example.internal:9100

- node02.example.internal:9100

```

验证:

```bash

curl http://127.0.0.1:9100/metrics

promtool check config /etc/prometheus/prometheus.yml

```

常用查询包括 CPU 非 idle 使用率、可用内存、磁盘空间、inode、磁盘 I/O 和网络错误。告警必须排除伪文件系统,并给出持续时间,避免瞬时波动造成噪声。

```promql

100 - avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100

node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100

node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes * 100

```

## Blackbox Exporter:从外部探测

Blackbox Exporter 使用 multi-target exporter 模式。Prometheus 把目标地址作为参数传给 Exporter,Exporter 执行探测并返回 probe_* 指标。

```yaml

modules:

http_2xx:

prober: http

timeout: 5s

http:

valid_status_codes: [200, 204]

preferred_ip_protocol: ip4

tcp_connect:

prober: tcp

timeout: 3s

```

Prometheus 配置:

```yaml

- job_name: blackbox-http

metrics_path: /probe

params:

module: [http_2xx]

static_configs:

- targets:

- https://example.com/health

relabel_configs:

- source_labels: [__address__]

target_label: __param_target

- source_labels: [__param_target]

target_label: instance

- target_label: address

replacement: blackbox-exporter:9115

```

重点指标:probe_successprobe_duration_seconds、HTTP 状态码、TLS 证书到期时间和 DNS/连接各阶段耗时。

## 告警建议

- Node Exporter 不可达和主机不可用要区分。

- HTTP 探测连续失败一段时间再告警。

- TLS 到期设置多级阈值,如 30 天、14 天、7 天。

- 同时监控 Exporter 自身资源与抓取错误。

- 外部探测应从多个网络位置执行,避免只代表监控服务器的视角。

不要把 9100、9115 直接暴露公网;用防火墙、私网、反向代理认证或 Prometheus Agent 限制访问。Blackbox 配置可能访问任意目标,也应限制谁能调用探测接口。

## 排障顺序

1. 直接 curl Exporter 的 metrics 或 probe 接口。

2. 检查 Prometheus Targets 页面和抓取错误。

3. 查看服务日志、DNS、路由、防火墙和 SELinux。

4. 检查 relabel 后的实际 target 和 module。

5. 使用 PromQL 验证标签是否符合告警规则。

参考资料:

- https://prometheus.io/docs/guides/node-exporter/

- https://prometheus.io/docs/guides/multi-target-exporter/

- https://github.com/prometheus/blackbox_exporter

原创

Prometheus Exporter 实战:使用 Node Exporter 与 Blackbox Exporter 监控主机和服务

本文链接: Prometheus Exporter 实战:使用 Node Exporter 与 Blackbox Exporter 监控主机和服务

本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

评论交流

文章目录