prometheus中通过node-exporter中的--collector.textfile.directory这一选项参数自定义监控指标

简述node-exporter中该选项参数的作用。

--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日志文件大小,在日志文件过大时需要进行自动报警。

使用流程

1. 环境配置

需要在linux服务器中下载安装prometheus、node-exporter和grafana。

Prometheus是一个开源的系统监控和警报工具,可以收集和处理时间序列数据,并提供查询语言、图形化界面和告警功能。它支持多种数据模型,包括度量值、日志文件和事件等。

Node Exporter是一个Prometheus的客户端,用于监测服务器资源使用情况,例如CPU、内存、磁盘和网络等指标。它能够以Prometheus格式公开指标,并将它们暴露给Prometheus服务器采集。
(由于node-exporter需要监测服务器资源的使用情况,所以不推荐使用docker安装。并且下文中所提到的node-exporter也是直接安装在服务器上的)

Grafana是一个开源的数据可视化和分析平台,支持多种数据源,其中包括Prometheus。它提供了强大的查询和可视化功能,可以创建漂亮的交互式仪表板、图表和报表。Grafana与Prometheus集成得非常紧密,可以轻松地创建仪表板并展示Prometheus中收集到的指标数据。

2. node-exporter启动设置

2.1. 创建node-exporter系统服务

创建系统服务的时候就要设置好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

2.2. 启动 node-exporter

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结点了,不再赘述了)

2.3. 示例展示

2.3.1. 创建disk.prom文件

/root目录下创建disk.prom文件,添加下述内容。
prometheus中通过node-exporter中的--collector.textfile.directory这一选项参数自定义监控指标_第1张图片

所有自定义生成的指标需要按照如下的方式进行存储:

# 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路径下显示的内容.

2.3.2. 查看node-exporter中是否包含自定义数据

prometheus中通过node-exporter中的--collector.textfile.directory这一选项参数自定义监控指标_第2张图片
可见其中包含我们自定义的一个指标。

2.3.3. 查看grafana中展示是否正常

prometheus中通过node-exporter中的--collector.textfile.directory这一选项参数自定义监控指标_第3张图片
可见出现了我们想要的指标信息。

3. 补充说明

对于disk.prom文件,我们可以自己编写一些脚本文件自动更新。

自定义采集,需要自己写crontab定时任务,定时执行。所以仿照刚刚实例中的定时任务格式写就好了,sponge是写入管道传来的数据到文件中。tee也可以,tee会输出内容。

之前碰到过一种现象,就是加入数据正在写入,但是prometheus正好拉取,可能会出现拉取出现问题,这里呢,需要先将自定义指标写入一个临时文件,然后将文件mv一下到正式的文件。

可以参考下面解决方案(可在https://github.com/prometheus/node_exporter中找到)
prometheus中通过node-exporter中的--collector.textfile.directory这一选项参数自定义监控指标_第4张图片

你可能感兴趣的:(prometheus,linux,运维)