我们在 AWS ECS 上运行了一个小的 Java 调度程序。它正在做 cron 曾经在我们的旧巨石上做的事情。它在 Docker 容器中启动 (Fargate( 任务。我们有一个每小时运行一次的任务,这对我们来说非常重要。我想知道它是否由于任何原因崩溃或无法运行(例如,java调度程序失败,或者有人关闭了任务(。
我正在寻找一种服务,如果没有通知,它会提醒我。我想在每次脚本成功运行时调用通知系统。然后,如果警报系统未按预期收到"确定"通知,则会发出警报。
我认为这种服务必须存在,我不想重新发明轮子试图自己构建它。我想我的问题是,它叫什么?我能去哪里买那种东西?(我们显然正在使用AWS,并且我们有一个PagerDuty帐户(。
我们将这种方法用于这些类型的问题。首先,任务必须将时间戳写入 S3 或 EFS 中的文件。此文件是任务运行完成的外部证据。然后,您需要一个基于 http 的服务来读取该文件并计算时间戳是否有效,即在过去一小时内已更新。这可以是一个简单的php或nodejs脚本。此过程暴露在公共网络上,例如 https://example.com/heartbeat.php。如果时间戳文件存在且有效,则此脚本返回 http 响应代码 200,如果不存在,则返回 500。然后我们使用 StatusCake 来监控 URL,并在发生事件时通过其寻呼机职责集成通知我们。我们通常在响应中包含一条消息,以便人们可以看到错误的性质。
这可能看起来很乏味,但它是万无一失的。生产线上任何地方的任何故障都将立即得到通知。StatusCake有一个很好的免费服务水平。此方法可用于以相同的方式监视任何关键任务。我们已经了解到,关键的 cron 类型的任务和进程可能由于多种原因而失败,您希望在它成为客户关键任务之前知道。对这些类型的任务进行 24x7x365 全天候监控是必要的,可以帮助我们在晚上睡得更好。
注意:我们始终有一个每日系统测试事件,在每天上午 9 点触发寻呼机值班通知。对于真正的偏执狂来说,这确保了寻呼机职责本身不会以某种方式失败,例如配置错误等。我们的支持团队知道,如果他们没有每天收到测试警报,则通知系统本身存在问题。值班技术人员必须根据SOP了解事件。如果他们不知道,那么它会升级到下一层,我们知道我们必须讨论响应时间。它让人们保持警惕。 这是确保您拥有强大的监视基础结构的最后一部分。
OpsGene 有一个心跳服务,基本上是一个看门狗计时器。您可以将其配置为在 x 分钟内未 ping 他们时呼叫您。
不幸的是,我不会推荐他们。我已经使用它们 4 年了,他们已经更改了两次帐户系统,让我的付费帐户默默地成为孤儿。我必须尽快找到新的供应商,只要我有一些空闲时间。