zabbix以trapper監控備份文件
阿新 • • 發佈:2018-06-01
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監控備份文件