我们使用这种方法来解决这些类型的问题。首先,该任务必须将时间戳写入 S3 或 EFS 中的文件。该文件是任务运行完成的外部证据。然后,您需要一个基于 http 的服务,该服务将读取该文件并计算时间戳是否有效,即在过去一小时内已更新。这可能是一个简单的 php 或 nodejs 脚本。此过程公开给公共网络,例如https://example.com/heartbeat.php。如果时间戳文件存在且有效,则此脚本返回 http 响应代码 200,否则返回 500。然后我们使用 StatusCake 监控 url,如果有事件发生,通过它的 Pager Duty 集成通知我们。我们通常在响应中包含一条消息,以便人们可以看到错误的性质。
这可能看起来很乏味,但它是万无一失的。沿线任何地方的任何故障都将立即得到通知。StatusCake 的免费服务水平很高。这种方法可用于以相同方式监控任何关键任务。我们已经了解了关键 cron 类型的任务和流程可能由于多种原因而失败的艰难方式,并且您想在它成为客户关键之前知道。对这些类型的任务进行 24x7x365 全天候监控是必要的,这有助于我们在晚上睡得更好。
注意:我们总是有一个每日系统测试事件,每天上午 9 点触发寻呼机值班通知。对于真正偏执的人来说,这可以确保寻呼机任务本身没有以某种方式失败,例如配置错误等。我们的支持团队知道如果他们没有每天收到测试警报,通知系统本身就有问题。值班技术人员必须按照 SOP 确认事件。如果他们不知道,那么它会升级到下一层,我们知道我们必须讨论响应时间。它让人们保持警觉。这是确保您拥有强大的监控基础架构的最后一部分。