Z.S.K.'s Records

Prometheus学习(Node-Exporter采集自定义Metrics)

如果使用Prometheus做监控系统的话, node-exporter一定是不能绕过的采集工具, 开箱即用的实用性让运维同学节省很多时间, 最近也是发现了一个比较有意思的功能, NodeExporter可以采集额外的Metrics到Prometheus中

假如有时我们有自定义的Metrics需要上传到Promethues中,一般情况下, 我们会通过PushGateway来做采集,假如这个时候恰恰没有部署PushGateway, 有没有更快捷的办法, 这个时候NodeExporter就派上用场了.

启动参数

查看node-exporter的github描述,node-exporter启动的时候指定–collector.textfile.directory=/opt/exporter/node_exporter/key 即可, 这个参数会解析指定目录下的所有以prom结尾的文件.

即:

我们只需要把自定义脚本的输出Metrics数据写入到指定目录下的文件,并以Prom结尾即可, Prometheus在定时采集node exporter获取数据的时候,也会把这份数据一同上传, 非常方便

需要注意的是,要保证在Prometheus在一个周期内,自定义脚本将最新的数据写入文件中即可, 每次写入都需要覆盖之前的Metrics.如果文件内的Metrics没有更新,则会一直拿到之前的旧数据, 所以最好在执行之前执行旧数据的清理

自定义脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#! /bin/bash
prom_file=/opt/exporter/node_exporter/key/key.prom

IFS=";"

export TERM=vt100

key_value="
Logical_CPU_core_total `cat /proc/cpuinfo| grep "processor"| wc -l`;
logined_users_total `who | wc -l`;
procs_total `/bin/top -b -n 1|grep Tasks|sed 's/,/\n/g'|grep total|awk '{ print $(NF-1) }'`;
procs_zombie `/bin/top -b -n 1|grep Tasks|sed 's/,/\n/g'|grep zombie|awk '{ print $(NF-1) }'`"

for i in $key_value
do
IFS=" "
j=(`echo $i`)
key=${j[0]}
value=${j[1]}
echo $key $value >> "$prom_file".tmp
done

cat "$prom_file".tmp > $prom_file
rm -rf "$prom_file".tmp
IFS=$OLD_IFS

加上可执行权限.

Crontab

在系统的crontab上加上定时执行脚本

参考文章:

转载请注明出处https://izsk.me

Z.S.K. wechat
Scan Me To Read on Phone
I know you won't do this,but what if you did?