我有一个每天早上运行的 cron 作业,成功运行时会生成一个输出文件。我希望有一个后续流程来验证作业是否正确执行,如果没有执行,则触发 Nagios 警报。
我觉得我可以使用 Nagios check_file_age 服务检查来实现这一点,通过仔细构建服务定义中的 check_interval 和 check_period 将检查限制为每天早上只发生一次,但我想知道是否有更简单的方法?
答案1
我想到了一些选择:
- 使用被动检查结果让验证脚本告诉 Nagios 发出警报,如果您想知道验证脚本是否不运行,则设置一个略大于 24 小时的新鲜度间隔,并让主动检查命令始终处于关键状态;或者
- 让 cron 作业本身在成功完成时提交 OK 被动检查结果,但在失败时不执行任何操作。然后,再次使用自动关键主动检查命令检查新鲜度,以便在一切不顺利时发出警报。
答案2
可以考虑让 cronjob 向日志输出错误代码,然后让 nagios 查看日志。如果 cronjob 报告错误,那就好了。或者,更简单但不太精确的是,让 cronjob 脚本的最后一行写入日志文件。让 nagios 检查日志文件的修改日期。如果超过 25 小时,则发出警报。