2

我们在 AWS ECS 上运行了一个小型 Java 调度程序。它正在做 cron 过去在我们旧的单体架构上所做的事情。它在 docker 容器中启动(fargate)任务。我们有一个每小时运行的任务,这对我们来说非常重要。我想知道它是否因任何原因崩溃或无法运行(例如,java 调度程序失败,或者有人关闭了任务)。

我正在寻找一种服务,如果它没有得到通知,它会提醒我。每次脚本成功运行时,我都想调用通知系统。然后,如果警报系统没有按预期收到“OK”通知,它就会发出警报。

我认为这种服务必须存在,我不想重新发明轮子试图自己构建它。我想我的问题是,它叫什么?我在哪里可以得到那种东西?(我们显然在使用 AWS,并且我们有一个 pagerDuty 帐户)。

4

2 回答 2

1

OpsGene 有一个心跳服务,它基本上是一个看门狗定时器。如果您在 x 分钟内没有 ping 它们,您可以将其配置为给您打电话。

不幸的是,我不会推荐他们。我已经使用它们 4 年了,他们已经更改了两次帐户系统,并且默默地让我的付费帐户成为孤儿。只要我有空闲时间,我就必须找到一个新的供应商。

于 2020-05-18T04:57:05.063 回答
1

我们使用这种方法来解决这些类型的问题。首先,该任务必须将时间戳写入 S3 或 EFS 中的文件。该文件是任务运行完成的外部证据。然后,您需要一个基于 http 的服务,该服务将读取该文件并计算时间戳是否有效,即在过去一小时内已更新。这可能是一个简单的 php 或 nodejs 脚本。此过程公开给公共网络,例如https://example.com/heartbeat.php。如果时间戳文件存在且有效,则此脚本返回 http 响应代码 200,否则返回 500。然后我们使用 StatusCake 监控 url,如果有事件发生,通过它的 Pager Duty 集成通知我们。我们通常在响应中包含一条消息,以便人们可以看到错误的性质。

这可能看起来很乏味,但它是万无一失的。沿线任何地方的任何故障都将立即得到通知。StatusCake 的免费服务水平很高。这种方法可用于以相同方式监控任何关键任务。我们已经了解了关键 cron 类型的任务和流程可能由于多种原因而失败的艰难方式,并且您想在它成为客户关键之前知道。对这些类型的任务进行 24x7x365 全天候监控是必要的,这有助于我们在晚上睡得更好。

注意:我们总是有一个每日系统测试事件,每天上午 9 点触发寻呼机值班通知。对于真正偏执的人来说,这可以确保寻呼机任务本身没有以某种方式失败,例如配置错误等。我们的支持团队知道如果他们没有每天收到测试警报,通知系统本身就有问题。值班技术人员必须按照 SOP 确认事件。如果他们不知道,那么它会升级到下一层,我们知道我们必须讨论响应时间。它让人们保持警觉。这是确保您拥有强大的监控基础架构的最后一部分。

于 2018-05-12T01:11:14.060 回答