如何使用Zabbix监视失败的rsync作业?

时间:2016-01-22 13:10:31

标签: monitoring rsync zabbix

我有一种情况需要监视(使用Zabbix)rsync作业是否无法执行。

我虽然要在源文件中插入一个退出代码并对其进行监控,但我还没有找到一个好方法。

任何人都知道我可以执行此监控的方法吗?

2 个答案:

答案 0 :(得分:7)

我解决了这个问题。

1 - 创建一个脚本以在cron上执行rsync

#!/bin/bash +x
# Put your own rsync command on line below 
rsync -rlptv --delete-after root@serverA:/some_dir/ /another_dir/ > /lalla_dir/my.log

# Check if rsync was executed with success
if [ $? = 0 ];then
# If true, send a random number to log file and status=ok message
echo $[ 1 + $[ RANDOM % 1000 ]] >> /lalla_dir/my.log
echo "Status = OK" >> /lalla_dir/my.log
# If false, send a random number to log file and status=ERROR message
else
echo $[ 1 + $[ RANDOM % 1000 ]] >> /lalla_dir/my.log
echo "Status = ERROR" >> /lalla_dir/my.log
fi

2 - 在Zabbix上创建两个Itens

A - 检查my.log的check_sum(这就是为什么脚本必须有随机数的原因,这样你确定自上次检查后日志文件已被修改

Zabbix密钥

vfs.file.cksum[]

B - 检查日志文件以获取确定消息。

Zabbix密钥

vfs.file.regmatch[/lalla_dir/my.log,Status = OK]

3 - 创建触发器。

{my-server:vfs.file.cksum[/lalla_dir/my.log].change()}=0
or
{my-server:vfs.file.regmatch[/lalla_dir/my.log,Status = OK].last()}=0

因此,如果您的日志文件未更改或未显示“Status = OK”消息,则表示它们是以erro(失败)执行的,或者它未运行(可能是cron问题)

抱歉英语不好 - 使用has,have,他们......还是让我感到困惑

答案 1 :(得分:0)

我正在尝试使用此技术来监控某些备份日志。他们打印出一个像这样的日志文件:

897
Status=OK,Message=

zabbix触发器的定义如下:

{svr1.xxxx.com:vfs.file.exists[/data/logs/db-backup.log].change()}=0 or {svr1.xxxx.com:vfs.file.cksum[/data/logs/db-backup.log].change()}=0 or {svr1.xxxx.com:vfs.file.regmatch[/data/logs/db-backup.log,Status=ERROR].last()}=1

备份脚本每天凌晨4:10正常运行:

jbaptiste@svr1:/data/logs$ ls -lth
total 12K
-rw-r--r-- 1 root root  23 Mar 20 04:10 db-backup.log

并且zabbix每天凌晨5点检查日志文件,但它会触发,就好像备份有问题:

Trigger: DB - Check backup last run status 
Trigger status: PROBLEM 
Trigger severity: Warning 
Trigger URL: 

Item values: 

1. Backup file exists check (svr1.xxxx.com:vfs.file.exists[/data/logs/db-backup.log]): 1 
2. Backup file checksum (svr1.xxxx.com:vfs.file.cksum[/data/logs/db-backup.log]): 1864703203 
3. Backup run status code (svr1.xxxx.com:vfs.file.regmatch[/data/logs/db-backup.log,Status=ERROR]): 0 

正如您在zabbix触发器上看到的那样,每个检查都具有成功运行的预期值,因为我看到它没有满足任何触发条件,因此我不应该触发该触发器。

另一个问题是,当修复备份确实存在问题并且备份运行正常后,触发器不会被清除。

有人看到它有问题吗?