背景
我们在使用Zabbix的时候,可以自己写自定义脚本。在使用Promethues的时候,有很多的exporter,但是有一些特殊的情况没有,比如,我需要监控进程一启动就告警,但是进程没启动,是使用process_exporter监控不了的,在process_exporter官网找了一圈,也问了一圈,发现还是只有自己动手才行。但是自定义的脚本有一个缺点就是,你不知道他有什么缺点,你光是想要完成这个任务的话,有很多办法,但是想要他至少没有啥副作用,是有挑战的。
步骤
1)自定义脚本并把内容以key:value的形式写入以.prom结尾的文件
2)定时任务执行自定义脚本
3)添加启动参数,node_exporter采集数据(采集频率为定时任务的频率)
1、配置启动
通过textfile采集用户自己生成的指标,参数--collector.textfile.directory
,如下:
./node_exporter --collector.textfile.directory='/path/'
2、输出格式
#HELP example_metric read from /path/example.prom
#TYPE example_metric untyped
example_metric 1
3、任务执行
一般脚本任务(输出指标到.prom文件)会被放入crontab中,按照需求设置指标采集时间,同时node_exporter采集的时候文件执行写入操作,可能导致文件出现问题。我们可以将任务先转移到一个临时文件,然后通过临时文件的重命名进行操作。
*/2 * * * * sh test.sh && mv /path/example.promm /path/example.prom
4、指标采集
指标采集的时间是根据你的crontab的定时任务的时间来的,可以根据通过这个指标来判断数据是否上报node_textfile_mtime_seconds;也可以对这个指标监控, node_textfile_mtime_seconds这个key值表示的是textfile最后一次采集文件的时间,如
node_textfile_mtime_seconds{file="process_counts.prom"}
写在最后
李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷。喜欢钻研底层技术,认为底层基础才是王道。一切新技术都离不开操作系统(CPU、内存、磁盘)、网络等。坚持输入输出,记录自己学习的点滴,在平凡中坚持前行,总有一天会遇见不一样的自己。