--collector.textfile.directory
是 Node Exporter 的一个命令行选项,用于指定从 textfile 收集器中收集数据的目录。
Node Exporter 会通过各种方式收集主机的度量值,并将这些度量值暴露给 Prometheus。其中之一是 textfile 收集器,它允许您从文本文件中收集指标。这些文本文件通常由其他程序生成,并以固定格式存储在指定的目录中。
使用 --collector.textfile.directory
选项,您可以告诉 Node Exporter 去哪个目录下查找这些文本文件。当 Node Exporter 拉取度量值时,它会扫描该目录下所有符合规则的文件,并将它们解析为度量样本,然后传递给 Prometheus Server。
例如,您可以执行以下命令来启动 Node Exporter 并指定 textfile 目录:
node_exporter --collector.textfile.directory /path/to/textfile/directory
需要注意的是,textfile 收集器并不会自动监控目录中的新文件。相反,它会根据时间表(如 cron 作业)或其他外部机制启动更新。因此,为了确保及时更新数据,请确保您的文本生成进程能够按照预期地更新文本文件。
遇到一个需求,需要监控mongoDB中的log日志文件大小,在日志文件过大时需要进行自动报警。
需要在linux服务器中下载安装prometheus、node-exporter和grafana。
Prometheus是一个开源的系统监控和警报工具,可以收集和处理时间序列数据,并提供查询语言、图形化界面和告警功能。它支持多种数据模型,包括度量值、日志文件和事件等。
Node Exporter是一个Prometheus的客户端,用于监测服务器资源使用情况,例如CPU、内存、磁盘和网络等指标。它能够以Prometheus格式公开指标,并将它们暴露给Prometheus服务器采集。
(由于node-exporter需要监测服务器资源的使用情况,所以不推荐使用docker安装。并且下文中所提到的node-exporter也是直接安装在服务器上的)
Grafana是一个开源的数据可视化和分析平台,支持多种数据源,其中包括Prometheus。它提供了强大的查询和可视化功能,可以创建漂亮的交互式仪表板、图表和报表。Grafana与Prometheus集成得非常紧密,可以轻松地创建仪表板并展示Prometheus中收集到的指标数据。
创建系统服务的时候就要设置好node-exporter的启动选项了。
下述代码直接复制粘贴到linux的命令行中即可。
其中--collector.textfile.directory=/root
的意思为:在/root
目录下的所有以.prom
结尾的文件都会被载入node-exporter
的监控结果中,并且会一起被prometheus
获取到。
cat > /etc/systemd/system/node_exporter.service <<"EOF"
[Unit]
Description=Prometheus node_exporter
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=simple
User=root
Group=root
ExecStart=/opt/prometheus/node_exporter/node_exporter --web.listen-address=0.0.0.0:9100 --collector.textfile.directory=/root
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start node_exporter.service
systemctl enable node_exporter.service
systemctl status node_exporter.service
systemctl daemon-reload:重新加载systemd管理的所有服务配置文件,使新添加的或修改过的服务配置文件生效。
systemctl start node_exporter.service:启动名为"node_exporter"的服务。
systemctl enable node_exporter.service:将名为"node_exporter"的服务开机自启动。
systemctl status node_exporter.service:显示名为"node_exporter"的服务的当前状态,包括服务是否正在运行、最近启动时间、进程ID等信息。
到这里就可以获取到/root
目录下以.prom
结尾文件中的自定义监控指标了。
(这里默认prometheus中已经配置好node-exporter结点了,不再赘述了)
disk.prom
文件在/root
目录下创建disk.prom
文件,添加下述内容。
所有自定义生成的指标需要按照如下的方式进行存储:
# HELP disk_free Amount of free space on the disk.
# TYPE disk_free gauge
disk_free{mountpoint="/opt/prometheus/node_exporter"} 123456789
如果没有写help的话,系统会帮助生成一个简单的help描述,但是如果有多个文件中出现相同的指标名称(example_metric),需要保证这些指标的help和type都一致,否则采集将出错. 基本格式也可以参考node_exporter/metrics路径下显示的内容.
对于disk.prom
文件,我们可以自己编写一些脚本文件自动更新。
自定义采集,需要自己写crontab定时任务,定时执行。所以仿照刚刚实例中的定时任务格式写就好了,sponge是写入管道传来的数据到文件中。tee也可以,tee会输出内容。
之前碰到过一种现象,就是加入数据正在写入,但是prometheus正好拉取,可能会出现拉取出现问题,这里呢,需要先将自定义指标写入一个临时文件,然后将文件mv一下到正式的文件。
可以参考下面解决方案(可在https://github.com/prometheus/node_exporter中找到)