技术杂谈

Node Exporter Textfile Collector 功能

node-exportertextfile 收集器 是 Node-exporter 最核心、最实用的高级功能,没有之一,也是运维必会的功能。它的核心价值是:让你可以自定义任何业务 / 系统指标,以 Prometheus 标准格式写入文本文件,由 Node-exporter 自动采集并暴露,实现「无侵入自定义监控」,比如监控进程存活、端口监听、磁盘使用率阈值、业务服务状态、自定义脚本指标等,解决原生 Node-exporter 指标覆盖不到的所有场景。

版本说明:适配 node-exporter 0.16+ 所有新版本(目前主流 v1.0+、v1.8 + 都完美支持)

一、核心基础:textfile 是什么 & 核心作用

1,核心定义

textfile 是 Node-exporter 的一个内置收集器插件(Collector),默认是关闭状态,需要手动启用;

它的工作逻辑:

你通过 脚本 / 定时任务 / 手动 生成符合 Prometheus 文本指标格式 的文件 → 放到指定目录 → Node-exporter 定时读取该目录下的所有文件 → 将这些自定义指标和原生指标(cpu / 内存 / 磁盘)一起,在 9100/metrics 端口暴露 → Prometheus 统一拉取。

2,解决的核心痛点

Node-exporter 原生只能采集系统级指标(CPU、内存、磁盘、网络、进程数、句柄数等),但运维中一定会遇到这些需求:

  • 监控 系统自定义阈值(比如某个挂载盘使用率、某个用户密码过期天数)
  • 监控 某个业务进程是否存活(比如你的 process-exporterpython3 wsnedd.py 进程)
  • 监控 自定义业务指标(接口调用量、日志错误数)
  • 所有原生指标覆盖不到的自定义监控需求,都能用 textfile 完美实现。

3,核心优势

✅ 无侵入:不需要修改业务代码、不需要修改 Node-exporter 源码,纯文件读写;

✅ 通用性强:任何能写文件的脚本(shell/python/bash)都能生成指标,不限语言;

✅ 轻量高效:Node-exporter 读取本地文件,性能损耗可以忽略不计;

✅ 无缝集成:自定义指标和原生指标在同一个端口暴露,Prometheus 无需新增采集配置;

✅ 稳定可靠:生产环境最常用的自定义指标方案,没有之一,比第三方 exporter 更轻量。

二、前置必做:开启 textfile 收集器(关键步骤,缺一不可)

步骤 1:创建 textfile 的指标存放目录

固定规范,建议统一创建这个目录,所有自定义指标文件都放这里:

步骤 2:启动 Node-exporter 时,开启 textfile 收集器

textfile默认关闭的,必须在启动命令中通过 --collector.textfile.directory 指定目录来启用,这是核心启动参数,两种启动方式的完整配置(你一定会用到,全部复制即用)

【生产推荐】systemctl 系统服务启动 Node-exporter(带 textfile,永久生效)

编辑你的 node-exporter 服务文件:

修改 ExecStart 行,追加 textfile 参数即可,完整内容如下:

步骤 3:验证 textfile 是否开启成功

三、核心规范:必须遵守的「Prometheus 文本指标格式」

这是 textfile 的灵魂核心,也是唯一的硬性要求:你写入文件的指标内容,必须符合 Prometheus 的文本格式规范,否则 Node-exporter 会直接忽略该文件,采集不到指标。

1,格式核心四要素(通用所有自定义指标)

2,最常用的 2 种指标类型

gauge(瞬时值):最常用!数值可以增加 / 减少 / 不变,比如进程存活状态 (1/0)、端口状态 (1/0)、内存使用率、在线人数、剩余天数 → 你的所有自定义监控,优先用 gauge

counter(累计值):数值只能递增,比如接口调用次数、日志错误数、请求总数,适合统计累计量。

3,命名 / 格式硬性规范(避坑必看,绝对不能错)

  1. 指标名:必须以字母开头,只能包含 字母、数字、下划线(_)、冒号(:),建议小写,比如 process_wsnedd_runningport_9256_listenuser_password_expire_days
  2. 标签名:格式和指标名一致,标签值必须用双引号包裹,多个标签用逗号分隔;
  3. 指标数值:必须是纯数字(整数 / 小数都可以),比如 1053.281256
  4. 文件后缀:建议所有自定义指标文件都以 .prom 结尾(比如 wsn_status.prom),Node-exporter 会自动识别,非必须但规范;
  5. 空行 / 注释:文件中可以有空行,# 开头的行是注释,会被忽略;
  6. 特殊字符:标签值中不能有双引号、换行符,避免解析失败。

4,正确的格式示例案例,可以根据自己实际需求写脚本自动获取

创建文件 /var/lib/node_exporter/textfile_collector/demo.prom

写入后,直接访问验证:curl http://localhost:9100/metrics | grep -E "process_wsnedd|port_9256|user_deployer",能查到这三个指标,说明格式正确、采集成功!

总结:textfile 核心价值 & 适用场景

textfile 是 Node-exporter 的「瑞士军刀」,让 Node-exporter 从「只能监控系统指标」升级为「能监控任何指标」,是运维实现自定义监控的最优解,没有之一。它轻量、稳定、无侵入,生产环境中几乎所有的自定义监控需求都能通过它实现。

Prev
No Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注