首先简要说明一下:
使用Zabbix进行系统监控,我尝试了解是否/如何使用Zabbix来运行重要的计划任务,我需要报告的OK / PROBLEM值(即:通过电子邮件)。
我已经使用由cron
调用的自定义脚本来报告程序执行的错误。 然而,这样一种方法是开放的快速重复,但失败,计划的任务“淹没”。 我真正想要的是在“边缘变化”上得到通知 – 即:从正常(OK)到失败(PROBLEM)执行,反之亦然。
从这里开始,我有了尝试Monit的想法,而且效果非常好。 但是,已经部署了Zabbix, 如果我能够使用现有的设置合理地完成我的目标,我想避免使用其他工具。
好的,回到主要问题:
从我的研究/testing中,基本的方法是将待执行的任务视为循环检查/数据查询。 存在两种可能性:
第一种方法需要login每个命令执行,这往往会“污染”日志不必要的条目,所以我倾向于第二种方法。 也就是说, 这两种方法都有一个严重的问题:只捕获命令的输出, 而不捕获命令的退出值
所以,我的问题是:
一般来说,Zabbix不是一个任务调度程序 – Rundeck,Ansible / AWX或其他解决scheme可能更适合。 话虽如此,仍然有可能使用Zabbix,特别是如果它是一次性的任务。
关于退出代码的解决scheme是使用包装脚本。 使脚本捕获输出,退出代码,以及任何你需要的东西(也许是运行你的命令的时间)。 然后这个脚本可以把所有这些值发送给你可以提醒的Zabbix trapper项目。
请记住,长时间运行的任务不应该直接作为Zabbix用户参数执行。 如果您的命令可能运行时间超过几秒钟,请使用atd
或类似方法执行。
默认超时是:
Max是30秒,但是你真的不应该增加默认值。