【问题标题】:Do we need to test, Is cron job running or not? or Is Health check of cron job needed?我们是否需要测试,cron 作业是否正在运行?或者是否需要对 cron 作业进行健康检查?
【发布时间】:2019-11-28 07:14:43
【问题描述】:

我们正在使用每 1 小时运行一次的 spring boot cron 作业。我们是否需要测试它的健康状况以检查它是否正在运行?

【问题讨论】:

  • 也许您可以在每次成功运行后发送电子邮件或打印一些日志并检查它们?
  • 您可以创建一个带有执行时间的数据库记录
  • 谢谢@Ahmet Amasyali.. 是的,我们正在使用 LOG4J 进行日志记录,但是我们希望自动对 cron 进行健康检查,因为我们有很多 cron 作业每小时运行一次,所以这是不可能的每次检查日志。所以我们认为我们可以在 cron 作业停止运行后收到邮件。
  • 谢谢@Somil Garg。我们已经在 cron 启动时创建了 DB 记录,但是如果 cron 停止运行,我们应该收到警报邮件,我们有很多 cron 作业每小时运行一次,因此不可能每次都检查 DB。所以我们认为我们可以在 cron 作业停止运行后收到邮件。

标签: java spring-boot cron health-monitoring


【解决方案1】:

如果您询问是否需要测试 cron 作业是否运行,由您决定

  • 不运行有关系吗?
  • 是否正确运行重要吗?
  • 您想收到通知吗?
  • (在您安排的休息日凌晨 4 点?)

假设您已经决定确实需要知道,有很多方法可以检测 cron 作业是否已运行。例如:

  • 让作业将消息附加到日志文件中
  • 让作业编写报告文件
  • 让作业将记录写入数据库
  • 让作业向 syslog(或等效项)发送消息。

接下来,您需要某种监控来检查日志消息是否已写入等,并以适当的方式通知某人。有很多现有的系统可以做到这一点。例如Nagios、Checkmk、Remedy 等。有些是免费的。

【讨论】:

  • 感谢您的快速回复...@Stephen C. .......我们正在使用 cron 作业来发送每小时运行的电子邮件。如果它没有运行,那么我们应该使用 Opsgenie 获得通知。我们对此有何想法? ==> 我们将在启动 cron 时将时间记录在 DB 中,并创建一个将在 SecurityConfig.java 中注册的服务,它会检查上次记录时间与当前时间之间的差异,如果超过 2 小时,那么我们应该得到警报。你认为这是检查 CRON 健康状况的正确方法吗?
猜你喜欢
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
  • 2014-08-25
  • 2015-02-22
相关资源
最近更新 更多