通过 Zabbix 执行重复任务

通过 Zabbix 执行重复任务

首先简单解释一下:

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

我已经使用了一个自定义脚本,称为cron,来报告程序执行时的错误。但是,这种方法很容易被快速重复但失败的计划任务“淹没”。我真正想要的是收到“边缘变化”的通知 - 即:从正常(OK)到失败(问题)的执行,反之亦然。

从这里,我有了尝试 Monit 的想法 - 而且它运行得很好。但是,由于已经部署了 Zabbix,我想避免使用其他工具如果我可以使用现有的设置合理地实现我的目标。

好的,回到主要问题:

从我的研究/测试来看,基本方法是将要执行的任务视为重复检查/数据查询。存在两种可能性:

第一种方法要求每次执行命令时都登录,这往往会用不必要的条目“污染”日志,因此我倾向于第二种方法。也就是说,两个都方法有一个重大问题:它们只捕获命令的输出,没有捕获命令的退出值

所以,我的问题是:

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

答案1

总体而言,Zabbix 不是任务调度程序 - Rundeck、Ansible/AWX 或其他解决方案可能更合适。话虽如此,仍然可以使用 Zabbix 来执行此操作,尤其是当它是一次性任务时。

解决您对退出代码的担忧的方法是使用包装器脚本。让该脚本捕获输出、退出代码以及您需要的其他任何内容(可能是运行命令所花费的时间)。然后,此脚本可以将所有这些值发送到您可以发出警报的 Zabbix 捕获器项目。

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

默认超时时间为:

  • 代理上 3 秒
  • 自 Zabbix 3.0 以来,默认服务器配置文件中为 4 秒,之前为 3 秒
  • 如果配置文件中未指定,则服务器需要 3 秒

最大值为 30 秒,但您确实不应该增加默认值。

相关内容