直接用 wget 下载最新稳定版 v1.6.1 并解压至 /opt/:wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz && tar -xvzf node_exporter-1.6.1.linux-amd64.tar.gz -c /opt/,再建软链 ln -sf /opt/node_exporter-1.6.1.linux-amd64 /opt/node_exporter。

node_exporter 二进制怎么下载和解压才不踩坑
直接用 wget 下最新版最稳妥,别手动点 GitHub 页面右键复制链接——容易漏掉 /download/ 路径导致 404。当前稳定版是 v1.6.1,命令要带完整 URL:
wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz-
tar -xvzf node_exporter-1.6.1.linux-amd64.tar.gz -C /opt/(-C指定解压路径,避免散落当前目录) - 立刻建软链:
ln -sf /opt/node_exporter-1.6.1.linux-amd64 /opt/node_exporter,后续升级只需改链目标,不用动 service 文件
注意:ARM 架构机器(比如树莓派)得换 linux-arm64 后缀,硬套 amd64 会报 cannot execute binary file。
为什么不能用 root 直接跑 node_exporter
启动时看到 Node Exporter is running as root user. This exporter is designed to run as unprivileged user 这条 warn 就该停手。root 权限不是必须的,反而带来风险:
- 采集器如
--collector.systemd或--collector.bonding可能读取敏感路径,root 下出问题影响更大 - 部分 collector(比如
textfile)依赖文件系统权限,root 运行反而掩盖权限配置错误 - systemd 服务里写
User=root是懒办法,useradd --no-create-home --shell /bin/false node_exporter创建专用用户才是正解
设完用户后别忘两步:chown -R node_exporter:node_exporter /opt/node_exporter 和 chmod 755 /opt/node_exporter/node_exporter,否则 systemd 启动直接失败,日志里只有 Permission denied。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
systemd 服务文件里哪些参数最关键
关键不在“能不能启”,而在“启得稳、查得清”。下面这几项漏一个都可能让服务起不来或指标拉不到:
-
ExecStart必须带完整路径,比如/opt/node_exporter/node_exporter,不能只写node_exporter(PATH 不生效) -
--web.listen-address=":9100"建议显式写,别依赖默认值;如果改端口(比如避开 9100 冲突),记得同步更新 Prometheus 的scrape_configs -
--web.telemetry-path="/metrics"别乱改,Prometheus 默认只认这个路径,改了就得在prometheus.yml里配metrics_path -
Type=simple是必须的,Type=exec或留空会导致 systemd 认为进程已退出,反复重启
写完 service 文件后,一定执行 systemctl daemon-reload && systemctl enable --now node_exporter,--now 能立刻暴露配置错误,比先 enable 再 start 少一步排查。
怎么确认指标真被采集到了
别只看 systemctl status node_exporter 显示 active,那只是进程活着。真正验证得走三步:
- 本地 curl:
curl -s http://127.0.0.1:9100/metrics | head -20,能看到类似# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.才算通 - Prometheus targets 页面(
http://<prom-ip>:9090/targets</prom-ip>)里对应 job 状态是UP,且Last Scrape时间是秒级更新 - 在 Prometheus 表达式框输
count(node_cpu_seconds_total),有数字返回说明指标已入库;如果返回空,大概率是scrape_configs里的targetsIP 写错了(比如写了localhost却从另一台机器访问 Prometheus)
最容易忽略的是防火墙:CentOS 7+ 默认开 firewalld,9100 端口不放行,Prometheus 就永远收不到数据,但 curl 127.0.0.1:9100 依然成功——这个环路测试盲区得主动绕开。










