用 node_exporter 采集主机指标
在你的服务器上装 node_exporter,把 CPU、内存、磁盘、网络等主机指标暴露给 Prometheus 抓取。
当你想知道 VPS 到底忙不忙、磁盘还剩多少、内存是不是快爆了,靠 top 一次次登录看并不现实。nodeexporter 是 Prometheus 官方提供的一个采集器,专门把 Linux 主机的硬件与内核指标(CPU、内存、磁盘、文件系统、网络、负载等)通过 HTTP 暴露成 Prometheus 能识别的文本格式。它本身只读、不改系统,资源占用极小,是搭建主机监控的第一块基石。
本文以 Ubuntu / Debian 为主,带你从零跑起来。
一、下载并安装二进制
nodeexporter 是单个静态二进制,无需依赖,直接下载解压即可。到官方 Releases 页找到对应架构(一般是 linux-amd64),然后:
# 请把版本号换成官网最新的 releases 版本
VER=1.8.2
cd /tmp
curl -fsSLO https://github.com/prometheus/node_exporter/releases/download/v${VER}/node_exporter-${VER}.linux-amd64.tar.gz
tar xzf node_exporter-${VER}.linux-amd64.tar.gz
sudo cp node_exporter-${VER}.linux-amd64/node_exporter /usr/local/bin/
建议用一个无登录权限的专用系统账号来跑它,减小攻击面:
sudo useradd --no-create-home --shell /usr/sbin/nologin node_exporter
二、用 systemd 跑成后台服务
新建 /etc/systemd/system/nodeexporter.service:
[Unit]
Description=Prometheus node_exporter
After=network.target
[Service]
User=node_exporter
Group=node_exporter
ExecStart=/usr/local/bin/node_exporter --web.listen-address=127.0.0.1:9100
Restart=on-failure
[Install]
WantedBy=multi-user.target
启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
验证是否正常监听 9100 端口、能吐出指标:
curl -s localhost:9100/metrics | head
看到大量 nodecpusecondstotal、nodememory 之类的行,就说明成功了。
三、让 Prometheus 来抓取
在 Prometheus 的 prometheus.yml 里,把这台机器加为一个 scrape target:
scrape_configs:
- job_name: node
static_configs:
- targets:
- "10.0.0.5:9100" # 换成你服务器的内网 IP
labels:
instance: web-1
改完 reload Prometheus(kill -HUP 或调 /-/reload),在 Prometheus 的 Targets 页面确认该 target 状态是 UP。
四、安全:别把 9100 裸露到公网
/metrics 里包含主机名、内核版本、挂载点、网卡等信息,不应对公网开放。两条原则任选或叠加:
- 只监听内网:如上例用 --web.listen-address=<内网IP>:9100 或 127.0.0.1(同机 Prometheus 时)。
- 防火墙限制:只放行 Prometheus 服务器的 IP。
sudo ufw allow from 10.0.0.10 to any port 9100 proto tcp
五、常见指标含义
- nodecpusecondstotal:各 CPU 各模式累计秒数,用 rate() 算使用率。
- nodememoryMemAvailablebytes:可用内存,比 MemFree 更能反映真实余量。
- nodefilesystemavailbytes:文件系统剩余空间,配合 size 算使用率。
- nodeload1 / nodeload5 / nodeload15:系统平均负载。
- nodenetworkreceivebytestotal / transmit:网卡收发字节,用 rate() 算带宽。
- nodediskiotimesecondstotal:磁盘繁忙时间,判断 IO 瓶颈。
小结
装 nodeexporter 只需三步:下载二进制、用 systemd 跑成监听 9100 的服务、在 Prometheus 加一个 scrape target。务必把端口收在内网或用防火墙限制,避免泄露主机信息。跑通之后,你就有了 CPU、内存、磁盘、网络的持续时序数据,后续接 Grafana 出图或配告警都水到渠成。