问题出现得很突然,日志倒是留得挺全。Prometheus 2.45 抓 node_exporter 1.6,业务指标写到 /var/lib/node_exporter/textfile/ 下,Prometheus 里查不到,node_exporter 日志正常,9100/metrics 里也没有那几行。
刚开始盯着「目录权限不对,node_exporter 用户读不到文件」,折腾了半个多小时,排掉了。
原因不止一个,得分开看。启动参数里没加 collector.textfile.directory,采集器默认是关的。少数情况下是文件名不是 .prom 后缀,textfile 采集器直接忽略。
另外,文件内容格式不合法,整份文件被跳过而不是跳过单行。
动手时先看采集器有没有开
ps -ef | grep node_exporter | grep -o -- '--collector[^ ]*'
再往下确认目录和文件后缀
ls -l /var/lib/node_exporter/textfile/
然后加参数重启并本地验证
systemctl cat node_exporter | grep ExecStart && curl -s 127.0.0.1:9100/metrics | grep -c '^app_'
末了用 promtool 校验指标格式
promtool check metrics < /var/lib/node_exporter/textfile/app.prom
我习惯把每一步的执行时间和结果记在一边,后面复盘省事。
怎么算真的好了,看的是同一批现象。curl 9100/metrics 能看到自定义指标,Prometheus 的 targets 显示 up,查询 app_ 前缀有数据。
提醒一点。textfile 是周期性扫描,写文件要先写临时文件再 mv,保证原子替换;后缀写错是被忽略的最常见原因。这类问题最好一次改到位,反复小改反而容易把原因搅混。
