背景:生产环境需要数据跨网需求,因数据处理程序不完善,经常会出现数据文件拥堵在业务目录中,导致业务系统的数据更新不及时,给业务系统造成了一定影响。
一,搭建Prometheus监控平台。【此处不再过多介绍,可参考其他文章部署】
二,业务机器安装pushgateway。
tar -zxvf pushgateway-1.4.2.linux-amd64.tar.gz
cd pushgateway-1.4.2.linux-amd64
sh start.sh
netstat -uptln |grep 9091
三,Prometheus server端配置pushgateway,并添加告警配置。
vi prometheus.yml Prometheus配置文件配置
- job_name: "pushgateway"
honor_labels: true
static_configs:
- targets: ["192.168.48.130:9091"] //此处为被监控端ip+port
instance: pushgateway
vi alert_rules.yml Prometheus告警文件配置
- alert: in目录中的文件数,每分钟
expr: in > 100 #in 目录名,自定义即可,此处为每30s,如果目录内文件大于100即告警
for: 30s
labels:
severity: warning
annotations:
summary: "文件拥堵"
description: "文件拥堵,当前目录拥堵文件数:{{ $value }}"
./promtool check config prometheus.yml #检查配置Prometheus配置文件格式
执行Prometheus脚本,重启Prometheus server端。sh stop.sh ;sh start.sh
四,访问被监控端pushgateway web页面
【备注:文件没有超过告警限制数前pushgateway默认web界面是空的。】
如图:
五,编写shell脚本。用于监控业务目录。
#!/bin/bash
while true
do
fileName1=`ls -l /data/ |grep "^_" |wc -l`
#统计业务目录data目录下的文件数量
if [ $fileName1 -gt 100 ];then
#判断数量是否大于100,如果大于100,则请求pushgateway地址,将数据发送至web页面。
echo " in $fileName1" |curl --data-binary @- http://192.168.48.130:9091/metrics/job/test_job
fi
sleep 30s
#30s查询一次
done
#循环结束
给予脚本执行权限
chmod +x test.sh
后台运行脚本
nohup ./text.sh &
六,本地创建101个文件,模拟告警测试。
touch /data/{1..101}
web页面访问查看:192.168.48.130:9091
可以访问Prometheus server端的web页面,查看对应监控目录的文件数量折线图。
可以访问Prometheus 的告警界面,查看对应目录的告警显示图。