Zabbix以trapper方式监控MySQL备份文件
背景:生产上有台mysql服务器每天以定时任务方式用mysqldump命令进行数据库逻辑备份,定时任务执行时间为23:30,备份时长5分钟左右,生成的备份文件命名方式为‘mysql-$(date +%Y-%m-%d).sql’,大小3G左右,备份文件保留3份,即执行完mysqldump命令后对大前天备份文件进行删除操作。
需求:
对备份文件进行检查监控,若文件生产异常则触发告警。
1.模拟生产备份文件
# cd /data/backup/
# dd if=/dev/zero of=mysql-2018-05-15.sql bs=1M count=1000
# dd if=/dev/zero of=mysql-2018-05-16.sql bs=1M count=1000
# dd if=/dev/zero of=mysql-2018-05-17.sql bs=1M count=1000http://s1.运维网.com/images/20180518/1526612736268079.png
2.监控脚本编写
脚本属主为zabbix:zabbix,脚本功能为检查前一天是否生产备份文件并判断文件大小。
# more file_check.sh
#/bin/bash
file_path=/data/backup
ZABBIX_SENDER=/usr/bin/zabbix_sender
zabbix_server=172.27.9.63
zabbix_agent=172.27.9.65
DuCheck(){
date=$(date -d "yesterday" +%Y-%m-%d)
file=$file_path/mysql-$date.sql
du=$(cd $file_path && du -sm *|grep mysql-$date.sql|awk {'print $1'})
if [[ $du -ge 1000 ]] #生产库每天都有新数据产生,备份量会越来越大
then
echo 0
else
${ZABBIX_SENDER} -z ${zabbix_server} -s ${zabbix_agent} -k file.check -o "fail" &> /dev/null
exit 1
fi
}
Sender(){
if [ $(DuCheck) -eq 0 ]
then
${ZABBIX_SENDER} -z ${zabbix_server} -s ${zabbix_agent} -k file.check -o "sucess" &> /dev/null
else
return 0
fi
}
[ $# -eq 0 ] && Sender || echo Usage: $0 3.新建模板
新建模板“File Check”
http://s1.运维网.com/images/20180522/1526975934758846.png
4.新建监控项
模板中新建监控项“file status check”
http://s1.运维网.com/images/20180524/1527128757960527.png
5.新建触发器
http://s1.运维网.com/images/20180524/1527127234822080.png
返回值如果为fail则触发告警
http://s1.运维网.com/images/20180524/1527127154443358.png
6.模板绑定主机
绑定主机172.27.9.65,可见名为‘业务系统.客户端zabbix-test-centos7’
http://s1.运维网.com/images/20180524/1527128416320586.png
7.查看检查结果
运行脚本,查看执行结果,由于模拟的备份文件日期为15、16、17三天的,今天执行会报错
# sh /etc/zabbix/script/file_check.shhttp://s1.运维网.com/images/20180524/1527128344829502.png
http://s1.运维网.com/images/20180524/1527128855436590.png
8.编写定时任务
每天零点1点钟执行文件检查脚本
# crontab -l
0 1 * * * /etc/zabbix/script/file_check.sh &>/dev/null 2>&1 对于第八步,如果不想用定时任务方式推送监控消息,可以再新建一个监控项:
1.新建监控项
http://s1.运维网.com/images/20180601/1527843526810245.png
2.修改配置文件
修改配置文件zabbix_agentd.conf
# view zabbix_agentd.conf
UserParameter=file.check.send,/etc/zabbix/script/file_check.sh 重启zabbix-agent服务
# systemctl restart zabbix-agent 至此备份文件检查监控完成
ps:曾想过用内置监控项‘vfs.file.exists’、‘vfs.file.size’、‘vfs.file.time’来直接监控检查文件是否存在/大小/生成时间,但是文件名不确定,监控项中的‘key’不支持{DATE}和{TIME}内置宏,所以作罢。
页:
[1]