1. 程式人生 > >zabbix以trapper監控備份文件

zabbix以trapper監控備份文件

zabbix trapper 采集器 zabbix_sender vfs.file.exists

背景:

生產上有臺mysql服務器每天以定時任務方式用mysqldump命令進行數據庫邏輯備份,定時任務執行時間為23:30,備份時長5分鐘左右,生成的備份文件命名方式為‘mysql-$(date +%Y-%m-%d).sql’,大小3G左右,備份文件保留3份,即執行完mysqldump命令後對大前天備份文件進行刪除操作。

需求:

對備份文件進行檢查監控,若文件生產異常則觸發告警。



1.模擬生產備份文件

[root@zabbix-agent ~]# cd /data/backup/
[root@zabbix-agent backup]# dd if=/dev/zero of=mysql-2018-05-15.sql bs=1M count=1000
[root@zabbix-agent backup]# dd if=/dev/zero of=mysql-2018-05-16.sql bs=1M count=1000
[root@zabbix-agent backup]# dd if=/dev/zero of=mysql-2018-05-17.sql bs=1M count=1000

技術分享圖片


2.監控腳本編寫

腳本屬主為zabbix:zabbix,腳本功能為檢查前一天是否生產備份文件並判斷文件大小。

[root@zabbix-agent script]# 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”

技術分享圖片


4.新建監控項

模板中新建監控項“file status check”

技術分享圖片


5.新建觸發器

技術分享圖片

返回值如果為fail則觸發告警

技術分享圖片


6.模板綁定主機

綁定主機172.27.9.65,可見名為‘業務系統.客戶端zabbix-test-centos7’

技術分享圖片


7.查看檢查結果

運行腳本,查看執行結果,由於模擬的備份文件日期為15、16、17三天的,今天執行會報錯

[root@zabbix-agent ~]# sh /etc/zabbix/script/file_check.sh

技術分享圖片


技術分享圖片


8.編寫定時任務

每天零點1點鐘執行文件檢查腳本

[root@zabbix-agent script]# crontab -l
0 1 * * * /etc/zabbix/script/file_check.sh &>/dev/null 2>&1


對於第八步,如果不想用定時任務方式推送監控消息,可以再新建一個監控項:

1.新建監控項

技術分享圖片


2.修改配置文件

修改配置文件zabbix_agentd.conf

[root@zabbix-agent zabbix]# view zabbix_agentd.conf
UserParameter=file.check.send,/etc/zabbix/script/file_check.sh

重啟zabbix-agent服務

[root@zabbix-agent zabbix]# systemctl restart zabbix-agent


至此備份文件檢查監控完成


ps:曾想過用內置監控項‘vfs.file.exists[file]’、‘vfs.file.size[file]’、‘vfs.file.time[file,<mode>]’來直接監控檢查文件是否存在/大小/生成時間,但是文件名不確定,監控項中的‘key’不支持{DATE}和{TIME}內置宏,所以作罷。


zabbix以trapper監控備份文件