应用场景: windows的sql数据库每日会自动产生bak文件,但是我们没必要通过be进行所有的bak进行异地备份(太慢),一般只备份当天的bak文件即可,但是通过windows的任务计划管理器进行备份又经常失败,所以我们必须通过监控机制进行监控时候备份成功。 原理: 我们可以通过bat提取当天的bak进行备份出来,其中zabbix进行bak文件的check,如果文件不存在就zabbix自动执行bat进行bak的复制,再通过be(也可以用veeam或者rsync)把bak文件进行异地备份。 zabbix监控项---zabbix agent的config(userparameter)--bat ----zabbix触发器 前提工作:先用数据库自带的功能做好每天自动备份数据库,比如mysql的mysqldump ,mssql的维护计划,oracle也有相应的备份机制。

1、被监控服务器上面新建一个bat(自动从bak中挑出当天最新的bak复制到指定文件夹比如从backup到backup-be),脚本如下: 2、把bat添加到任务计划中,比如每天1点执行。

3、再被监控服务器安装zabbix-agent for windows(https://blog.51cto.com/hzcto/2501575) 并修改conf文件(几个目录就加几条UserParameter,分别新建file.exists,file2.exists,file3.exists)。 4、回到zabbix控制台--配置--主机--监控项--新建监控项(上面3个UserParameter,那就建3个监控项目): 注意:自定义时间间隔一定要在你的bat执行时间之后,否则bat还没执行,你的zabbix就开始报警了,比如我的时间是 1-7,01:20-01:30就是周1-周日,每天1:20-1:30之间进行监控。

5、配置--主机--触发器--新建触发器(严重性定义级别和action的级别有关,要注意,否则报警了也不给你发邮件) 6、执行zabbix脚本和阶梯报警: https://blog.51cto.com/hzcto/2336141