通过Zabbix执行重复任务

首先简要说明一下:

使用Zabbix进行系统监控,我尝试了解是否/如何使用Zabbix来运行重要的计划任务,我需要报告的OK / PROBLEM值(即:通过电子邮件)。

我已经使用由cron调用的自定义脚本来报告程序执行的错误。 然而,这样一种方法是开放的快速重复,但失败,计划的任务“淹没”。 我真正想要的是在“边缘变化”上得到通知 – 即:从正常(OK)到失败(PROBLEM)执行,反之亦然。

从这里开始,我有了尝试Monit的想法,而且效果非常好。 但是,已经部署了Zabbix, 如果我能够使用现有的设置合理地完成我的目标,我想避免使用其他工具。

好的,回到主要问题:

从我的研究/testing中,基本的方法是将待执行的任务视为循环检查/数据查询。 存在两种可能性:

  • configurationSSH检查以执行该命令;
  • 用特定的命令扩展Zabbix代理来执行。

第一种方法需要login每个命令执行,这往往会“污染”日志不必要的条目,所以我倾向于第二种方法。 也就是说, 这两种方法都有一个严重的问题:只捕获命令的输出, 而不捕获命令的退出值

所以,我的问题是:

  • 任何人都知道如何捕获命令的退出值? 注意:我想避免包装脚本。
  • 有人使用类似的方法? 如果是这样,你有任何反馈?
  • 我应该简单地“辞职”使用Monit吗?

一般来说,Zabbix不是一个任务调度程序 – Rundeck,Ansible / AWX或其他解决scheme可能更适合。 话虽如此,仍然有可能使用Zabbix,特别是如果它是一次性的任务。

关于退出代码的解决scheme是使用包装脚本。 使脚本捕获输出,退出代码,以及任何你需要的东西(也许是运行你的命令的时间)。 然后这个脚本可以把所有这些值发送给你可以提醒的Zabbix trapper项目。

请记住,长时间运行的任务不应该直接作为Zabbix用户参数执行。 如果您的命令可能运行时间超过几秒钟,请使用atd或类似方法执行。

默认超时是:

  • 代理人3秒钟
  • 在Zabbix 3.0之前的3秒钟之前,在默认的服务器configuration文件中是4秒
  • 如果在configuration文件中没有指定,则在服务器中为3秒

Max是30秒,但是你真的不应该增加默认值。