【问题标题】:How can I monitor failed rsync job with Zabbix?如何使用 Zabbix 监控失败的 rsync 作业?
【发布时间】:2016-04-29 02:26:10
【问题描述】:

如果 rsync 作业执行失败,我需要监控(使用 Zabbix)。

我想在源文件中插入退出代码并对其进行监控,但我还没有找到这样做的好方法。

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

【问题讨论】:

  • 您是在运行 rsync 作为守护进程(服务)还是只是命令行?
  • 嗨,我有一个 cron 作业,它每 24 小时运行一次 rsync。 scipt 将一些目录备份到另一台机器。

标签: monitoring rsync zabbix


【解决方案1】:

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

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 触发器上看到的那样,每个检查都有成功运行的预期值,因为我看到没有满足任何触发器条件,所以我不应该触发触发器。

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

有人发现它有问题吗?

【讨论】:

    【解决方案2】:

    我通过 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 ... 仍然让我感到困惑

    【讨论】:

    • 非常感谢 Joao。我会实施这个解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多