Prometheus(中文名:普罗米修斯)是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB). 使用Go语言开发, 基本原理是通过HTTP协议周期性抓取被监控组件的状态. Prometheus获取数据的策略是Pull而不是Push, 也就是说, 它会自己去抓取, 而不用你来推送. 抓取使用的是HTTP协议, 在配置文件中指定目标程序的端口, 路径及间隔时间即可.
目前互联网公司常用的组件大部分都有exporter可以直接使用, 比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等).
当Prometheus的node_exporter中没有我们需要的一些监控项时,就可以如zabbix一样添加一些自定义的metrics,让其支持我们所需要的监控项。node_exporter 可在启动时指定路径,并将该路径下的 *.prom 识别为监控数据文件。
准备获取metrics的脚本
$ cat /opt/monitor/get_info.sh
#! /bin/bash
echo Logical_CPU_core_total `cat /proc/cpuinfo| grep processor| wc -l`
echo logined_users_total `who | wc -l`;
echo procs_total `ps aux|wc -l`
echo procs_zombie `ps axo pid=,stat=|grep Z|wc -l`
测试脚本执行情况
$ bash get_info.sh
Logical_CPU_core_total 2
logined_users_total 1
procs_total 148
procs_zombie 0
设置定时任务
* * * * * bash /opt/monitor/get_info.sh > /opt/monitor/get_info.prom
启动 node_exporter
启动 node_exporter 时指定*.prom 数据文件的路径
./node_exporter --collector.textfile.directory=/opt/monitor/
验证metrics
$ curl 127.0.0.1:9100/metrics|grep -E Logical_CPU_core_total|logined_users_total|procs_total|procs_zombie
# TYPE Logical_CPU_core_total untyped
Logical_CPU_core_total 2
# HELP logined_users_total Metric read from /opt/monitor/get_info.prom
# TYPE logined_users_total untyped
logined_users_total 1
# HELP procs_total Metric read from /opt/monitor/get_info.prom
# TYPE procs_total untyped
procs_total 151
# HELP procs_zombie Metric read from /opt/monitor/get_info.prom
# TYPE procs_zombie untyped
procs_zombie 0
参考文档:
Prometheus 自定义exporter 监控key