node_exporter启动失败主因是权限与配置不当:需创建专用用户、正确配置systemd服务文件;采集器默认禁用需手动启用;监听地址应设为0.0.0.0:9100并放行防火墙;高负载下应精简采集器避免超时。

node_exporter 启动失败:找不到 systemd 或权限被拒
常见现象是执行 ./node_exporter 直接报错 failed to open /proc/sys/kernel/osrelease: permission denied,或用 systemctl start node_exporter 提示 Unit node_exporter.service not found。根本原因不是二进制坏了,而是没按 Linux 服务惯例配置运行身份和文件权限。
- 不要用
root直接跑(除非明确需要所有采集器),创建专用用户:useradd --no-create-home --shell /bin/false node_exporter -
node_exporter默认只读/proc和/sys,但某些采集器(如textfile、netstat)需要额外路径可读,用--path.procfs或--path.sysfs显式指定时注意挂载点实际路径 - 如果 systemd 报找不到 service 文件,别急着重装,先检查是否漏了这步:
cp contrib/systemd/node_exporter.service /etc/systemd/system/,再改里面User=和ExecStart=路径
指标采集不全:collector.systemd 或 collector.ntp 显示 disabled
启动日志里看到类似 INFO disabled collector: systemd,不代表功能坏掉了,只是默认关闭——因为这些采集器要么依赖特定环境(如必须用 systemd),要么开销大(如 ntp 需要网络请求),node_exporter 不会盲目启用。
Magento是一套专业开源的PHP电子商务系统。Magento设计得非常灵活,具有模块化架构体系和丰富的功能。易于与第三方应用系统无缝集成。Magento开源网店系统的特点主要分以下几大类,网站管理促销和工具国际化支持SEO搜索引擎优化结账方式运输快递支付方式客户服务用户帐户目录管理目录浏览产品展示分析和报表Magento 1.6 主要包含以下新特性:•持久性购物 - 为不同的
- 启用前先确认依赖存在:
systemctl list-unit-files | head -3看有没有输出,没输出说明压根没跑 systemd;ntpq -p能连上 NTP 服务器才值得开collector.ntp - 开启方式统一用命令行参数,不是配置文件:
--collector.systemd --collector.ntp;注意顺序无关,但重复加不会报错 -
collector.textfile是例外:它永远启用,但只在--collector.textfile.directory指定目录下扫描.prom文件,目录不存在或无读权限就静默跳过,不会报错
暴露端口被拒绝或 metrics 返回空:防火墙与 --web.listen-address 冲突
浏览器访问 http://localhost:9100/metrics 正常,但从其他机器 curl 却超时或连接被拒,大概率是监听地址绑死了 127.0.0.1,或者系统防火墙拦了 9100 端口。
- 默认
--web.listen-address=":9100"其实等价于[::]:9100(IPv6 any),但很多老内核或 Docker 容器里 IPv6 被禁用,结果监听失败却没报错,降级成只听127.0.0.1:9100—— 解决办法是显式写成--web.listen-address="0.0.0.0:9100" - CentOS/RHEL 8+ 默认用
firewalld,得加规则:firewall-cmd --permanent --add-port=9100/tcp && firewall-cmd --reload - 如果跑在容器里,别只信
-p 9100:9100,还要确认容器内netstat -tlnp | grep :9100确实监听在0.0.0.0上,否则宿主机映射无效
高负载下 scrape 超时:CPU 和磁盘 I/O 采集拖慢整体响应
Prometheus 报 context deadline exceeded,node_exporter 自身 CPU 占用飙高,特别是启用了 collector.diskstats 或 collector.filesystem 时。这不是 bug,是设计使然:这些采集器要遍历整个 /sys/block/ 或 /proc/mounts,设备越多越慢。
- 优先关掉非必要采集器:
--no-collector.diskstats --no-collector.filesystem,用filesystem就够查根分区,真要细粒度用mount命令临时查 -
collector.netdev在网卡特别多的机器上也会卡,可限定只采关键接口:--collector.netdev.device-blacklist="^(docker|veth|br-).*$" - 如果必须全量采集,把
--web.telemetry-path="/metrics"改成带参数的路径(如/metrics?collect[]=cpu&collect[]=meminfo),让 Prometheus 按需拉取,但要注意:这要求客户端支持 query 参数,且不能和scrape_timeout冲突
--collector.systemd 就可能让单次 scrape 从 100ms 涨到 3s。









