如何使用 Zabbix 监控失败的 rsync 作业?
How can I monitor failed rsync job with Zabbix?
如果 rsync 作业执行失败,我需要监控(使用 Zabbix)。
虽然我想在源文件上插入退出代码并对其进行监控,但我还没有找到执行此操作的好方法。
有人知道我可以执行此监视的方法吗?
我通过 3 件事解决了这个问题。
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 - 检查日志文件中的 OK 消息。
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" 消息,则表示它们执行时出现错误(失败)或未执行 运行(可能是 cron 问题)
抱歉英语不好 - 使用 has, have, they ... 仍然让我感到困惑
我正在尝试使用此技术来监视一些备份日志。他们打印出这样的日志文件:
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
备份脚本工作正常 运行ning 每天 4:10am:
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 触发器上看到的那样,每个检查都具有成功 运行 的预期值,正如我所看到的那样 none 触发条件得到满足,所以我不t 触发器不应该被触发。
另一个问题是当备份修复后确实有问题并且备份运行没问题时,触发器没有被清除。
有没有人看出它有什么问题?
如果 rsync 作业执行失败,我需要监控(使用 Zabbix)。
虽然我想在源文件上插入退出代码并对其进行监控,但我还没有找到执行此操作的好方法。
有人知道我可以执行此监视的方法吗?
我通过 3 件事解决了这个问题。
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 - 检查日志文件中的 OK 消息。
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" 消息,则表示它们执行时出现错误(失败)或未执行 运行(可能是 cron 问题)
抱歉英语不好 - 使用 has, have, they ... 仍然让我感到困惑
我正在尝试使用此技术来监视一些备份日志。他们打印出这样的日志文件:
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
备份脚本工作正常 运行ning 每天 4:10am:
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 触发器上看到的那样,每个检查都具有成功 运行 的预期值,正如我所看到的那样 none 触发条件得到满足,所以我不t 触发器不应该被触发。
另一个问题是当备份修复后确实有问题并且备份运行没问题时,触发器没有被清除。
有没有人看出它有什么问题?