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

news/2024/5/18 22:44:04 标签: prometheus, linux, 运维

简述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文件,添加下述内容。
在这里插入图片描述

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

# 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中是否包含自定义数据

在这里插入图片描述
可见其中包含我们自定义的一个指标。

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

在这里插入图片描述
可见出现了我们想要的指标信息。

3. 补充说明

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

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

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

可以参考下面解决方案(可在https://github.com/prometheus/node_exporter中找到)
在这里插入图片描述


http://www.niftyadmin.cn/n/318763.html

相关文章

条款34:优先考虑lambda而非std::bind

1.很重要的原因是lambda表达式更加简洁易读。 实现一个函数&#xff0c;它返回其实参是否在最小值&#xff08;low&#xff09;和最大值&#xff08;high&#xff09;之间的结果&#xff0c;其中low和high是局部变量。 int low10; int high345; //C14 使用lamdba auto betwe…

猜谜游戏、彩云词典爬虫、SOCKS5代理的 Go(Golang) 小实践,附带全代码解释

猜谜游戏在编程语言实践都已经和 HelloWord 程序成为必不可少的新手实践环节&#xff0c;毕竟&#xff0c;它能够让我们基本熟悉 for 循环、变量定义、打印、if else 语句等等的使用&#xff0c;当我们基本熟悉该语言基础之后&#xff0c;就要学会其优势方面的程序实践&#xf…

springboot+vue银行OA系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的银行OA系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&…

第十三届蓝桥杯青少组省赛Python真题,包含答案

目录 一、选择题 二、编程题 第十三届蓝桥杯青少组省赛Python真题,包含答案 一、选择题 第 1 题 单选题 下列关于函数的说法正确的是 () 。 答案&#xff1a;C 第 2 题 单选题 十进制数55转换成十六进制是 () 。 答案&#xff1a;C 第 3题 单选题 下列方法中&#xff0c;哪…

100篇带你入门——嵌入式系统的应用领域

嵌入式系统作为一种特殊的计算机系统&#xff0c;其主要特点是集成度高、功耗低、体积小、性能高等。随着科技的发展和进步&#xff0c;嵌入式系统被广泛应用于各个领域&#xff0c;为社会的发展和进步做出了巨大的贡献。本文将重点探讨嵌入式系统的应用领域&#xff0c;为读者…

Linux高级---k8s之service服务

文章目录 一、service基本概念二、service类型三、service的使用1、实验环境准备2、ClusterIP类型的Service3、HeadLiness类型的Service4、NodePort类型的Service5、LoadBalancer类型的Service6、ExternalName类型的Service 一、service基本概念 在kubernetes中&#xff0c;pod…

68.建立手风琴组件第一部分

本节目标 使用的文件 本次使用的文件可私信我获取&#xff0c;本次就只有两张图片 ● 我们导入两个照片至我们的项目文件夹&#xff0c;并新建一个HTML文件 ● 之后我们输入感叹号&#xff0c;让他自动为什么生成初始代码 ● 之后我们修改下title&#xff0c;导入字体、…

第一章 集合框架

文章目录 什么是集合框架集合接口Set和List的区别 集合实现类&#xff08;集合类&#xff09;集合算法 什么是集合框架 官方教程 Java 集合框架 Java Collection Framework &#xff0c;又被称为容器container&#xff0c;是定义在java.util包下的一组接口 interfaces和其实现…