textfile 采集器是什么
textfile 采集器是 node_exporter 的内置采集器,每次抓取时扫描指定目录下的 .prom 文件,把其中的指标与常规指标一并暴露。它解决的是「脚本算出来的事实怎么变成可监控指标」:备份是否成功、证书还剩多少天、批处理跑了多久,脚本写一行文本就能被 Prometheus 抓走,不必自己写 exporter。适合变化不频繁、由脚本判定的外部状态。
基本信息
| 归属组件 | node_exporter(--collector.textfile.directory) |
|---|---|
| 文件格式 | Prometheus 文本格式,后缀必须是 .prom |
| 读取时机 | 每次抓取时重新扫描目录 |
| 适用平台 | Linux,权限需允许 node_exporter 用户读取该目录 |
| 典型指标类型 | gauge(时间戳、剩余天数、数量) |
典型使用场景
- 备份任务监控:成功时写入完成时间戳,配合规则判断「超过 26 小时没有成功备份」
- 证书到期提醒:用脚本读取剩余有效天数,提前 30 天触发续期提醒
- 数据同步与批处理:记录最后成功时间、处理条数、耗时,替代人工巡检
- 无 exporter 的组件:通过脚本探测结果转成指标,避免为单个组件开发采集器
- 配额与容量:对象存储配额、非标准挂载点用量等外部事实定期落成指标
启动与文件写法
启动与文件写法
node_exporter --collector.textfile.directory=/var/lib/node_exporter/textfile
# 文件:/var/lib/node_exporter/textfile/backup.prom
# HELP backup_last_success_timestamp_seconds 上次备份成功完成时间
# TYPE backup_last_success_timestamp_seconds gauge
backup_last_success_timestamp_seconds 1755000000
# HELP cert_days_remaining 证书剩余有效天数
# TYPE cert_days_remaining gauge
cert_days_remaining{domain="api.example.com"} 47
# 脚本落盘建议:先写临时文件再原子重命名,避免采集端读到半截内容
# printf ... > backup.prom.tmp && mv backup.prom.tmp backup.prom文件要素与写法
| 要素 | 写法 | 说明 |
|---|---|---|
| 文件名 | 以 .prom 结尾 | 其他后缀的文件会被直接忽略 |
| HELP 与 TYPE | 注释行 | 缺失不影响抓取,影响可读性与界面提示 |
| 时间戳指标 | 用 Unix 秒 | 便于用 time() 减去它算出「多久没更新」 |
| 显式时间戳 | 行尾追加毫秒时间戳 | 可让停止更新的脚本指标自然过期 |
文件更新发生在抓取周期之外,指标永远滞后一个抓取间隔;告警阈值要留出这段缓冲,别把阈值卡在脚本刚跑完的时间点上。
目录里残留的 .prom 文件会持续暴露旧指标:任务下线或脚本删除后忘记清理文件,监控会一直显示陈旧数据,掩盖真实故障,排查时先确认文件是否还在被更新。