node exporter部署需下载官方二进制包、创建专用用户、配置systemd服务(含--web.listen-address=:9100和textfile目录)、开放9100端口,并在prometheus中以真实ip而非localhost配置target,验证metrics可访问且targets状态为up。

Node Exporter 是 Prometheus 生态中专用于 Linux 主机指标采集的核心组件,它不依赖额外开发就能覆盖 CPU、内存、磁盘、网络等基础指标,还能通过扩展机制采集硬件温度、风扇转速等关键健康数据。部署本身不复杂,但几个关键点没配对,指标就出不来。
下载与权限配置要一步到位
直接用 wget 获取官方二进制包最稳妥,注意 URL 必须带 /download/ 路径,否则 404:
- wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
- tar -xf node_exporter-1.8.2.linux-amd64.tar.gz -C /usr/local/
- ln -sf /usr/local/node_exporter-1.8.2.linux-amd64 /usr/local/node_exporter
别用 root 运行。创建专用用户并赋权:
- useradd --no-create-home --shell /bin/false node_exporter
- chown -R node_exporter:node_exporter /usr/local/node_exporter
- chmod 755 /usr/local/node_exporter/node_exporter
systemd 服务必须带关键参数
服务文件里漏掉以下任一配置,启动后可能无响应或指标缺失:
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
- --web.listen-address=":9100":冒号前不能写 IP,否则外部无法访问
- --collector.textfile.directory="/var/lib/node_exporter/textfile_collector":启用自定义指标(如温度、风扇)的必要开关
- --no-collector.wifi --no-collector.xfs:在 CentOS 7 等老系统上防止因内核模块缺失卡住
- Restart=always 和 LimitNOFILE=65536:避免连接数不足导致抓取失败
启动后务必验证:
- ps aux | grep node_exporter 确认进程存在
- curl -s http://localhost:9100/metrics | head -10 查看是否返回 HELP 行
- firewall-cmd --permanent --add-port=9100/tcp && firewall-cmd --reload(CentOS)
硬件温度与风扇转速靠 textfile 实现
不用写代码,只要脚本能输出标准格式的 .prom 文件即可:
- mkdir -p /var/lib/node_exporter/textfile_collector
- 脚本每分钟执行一次,生成 /var/lib/node_exporter/textfile_collector/hw_metrics.prom,内容示例:
node_hw_fan_rpm{fan="fan1"} 2850
- 文件权限设为 node_exporter 可读:chown node_exporter:node_exporter /var/lib/node_exporter/textfile_collector/*.prom
- 确保指标名符合 Prometheus 命名规范(小写字母、下划线),标签值加双引号
Prometheus 配置必须匹配真实网络拓扑
targets 写 localhost:9100 是常见错误——这只在 Prometheus 和 node_exporter 同机时有效。跨机器监控必须写被监控机的真实 IP:
- job_name: "physical-servers"
static_configs:
- targets: ["192.168.1.102:9100", "192.168.1.103:9100"] - 检查 Prometheus UI 的 Status > Targets 页面,确认状态为 UP,错误信息会明确提示 connection refused 或 timeout
- 若用旧版 Grafana 面板(如 ID 1860),注意其默认过滤 instance=~".*",而你的 job 名称需与 prometheus.yml 中的 job_name 完全一致










