UStackUStack
FerrisPulse icon

FerrisPulse

FerrisPulse 监控后台任务的心跳“ping”,当定时/队列/备份等未按预期执行停止时发送故障告警,并恢复后发恢复邮件。

FerrisPulse

FerrisPulse 是什么?

FerrisPulse 是一个用于后台任务和定时自动化的心跳监控服务。它不检查应用是否响应 HTTP 请求,而是期望从您的 cron 任务、队列工作者、备份和其他脚本接收成功“ping”。

如果在配置的节奏内未收到下一个预期心跳,FerrisPulse 会发送故障告警,并在 ping 恢复时自动发送恢复邮件。其目标是将“静默失败”(任务停止运行而系统其余部分看似正常)转化为可见事件,并提供事件时间线。

主要特性

  • 预期任务节奏的心跳监控:FerrisPulse 按计划(例如每小时或每晚)监听传入的成功 ping,将缺失 ping 视为故障状态。
  • 每个监控器的成功 ping URL:复制监控器专属的 ping URL,仅在任务成功完成后通过 HTTP POST 调用,确保“心跳”反映已完成的工作。
  • 故障告警加恢复邮件:心跳缺失时发送一次故障告警;下一个 ping 到达时发送恢复邮件并关闭事件。
  • 事件时间线和心跳历史:仪表板显示状态、心跳历史和事件窗口,而无需从日志中重建故障。
  • 可配置节奏和宽限期支持:监控器包含预期间隔,并可添加宽限期以应对运行时变异。

如何使用 FerrisPulse

  1. 为要跟踪的任务创建监控器,设置预期间隔(节奏),并在需要时添加宽限期。
  2. 复制监控器的 ping URL。
  3. 在您的自动化中,仅在任务成功完成后向 ping URL 发送 HTTP POST。
  4. 让 FerrisPulse 持续运行;它会检测缺失心跳、发送故障告警,并在 ping 恢复时发送恢复邮件。

使用场景

  • 应每小时运行的 cron 任务:设置每小时监控器,脚本完成后 ping 该 URL。如果脚本静默停止数小时,FerrisPulse 发送故障告警,包含预期节奏和仪表板链接。
  • 备份快照验证:对于每晚备份,配置每日监控器,仅在备份成功完成后发出 ping。这有助于捕获备份管道停滞但未触发更广泛应用正常运行时间告警的情况。
  • 队列工作者健康(已完成工作,而非仅服务器健康):使用队列工作者时,在处理完成后发送成功 ping。FerrisPulse 可在预期成功工作节奏停止时告警。
  • 定时 ETL/报告管道:对于每小时或每日计费同步或报告,在工作流结束时 ping。FerrisPulse 维护事件时间线,使缺失运行成为可跟踪事件。
  • 由定时基础设施触发的自动化脚本:无论调度是内部还是外部,工作流相同——脚本成功完成后发送 ping,让 FerrisPulse 检测静默。

常见问题

如何通知 FerrisPulse 任务已运行?

任务成功完成后调用监控器专属的 HTTP POST ping URL。FerrisPulse 按配置节奏预期 ping。

什么触发告警?

当下一个预期心跳/ping 未在监控节奏内到达时触发告警(支持宽限期)。

FerrisPulse 会在事件期间重复告警吗?

页面描述每个事件发送一次故障告警,并在 ping 返回时发送单独的恢复邮件,避免重复告警风暴。

哪里可以看到发生了什么?

FerrisPulse 提供仪表板视图,一处显示状态、心跳历史、事件窗口和告警行为。

支持哪些任务系统?

网站表明可与 cron、systemd 定时器以及 BullMQ、Sidekiq、Celery、GitHub Actions 等工作者/调度器生态系统配合使用,支持 Bash、Node.js、Python 和 Ruby 等语言/环境。

替代方案

  • 正常运行时间/健康检查监控(HTTP 端点检查):适用于应用可用性,但可能遗漏“静默失败”,即 Web 服务器正常但后台任务(定时/队列/备份)未运行的情况。
  • 基于日志的告警:告警可在事后由错误消息触发,但仍需主动检查日志,且不如心跳直接检测缺失执行。
  • 任务调度器通知(内置 cron/systemd/GitHub Actions 告警):某些环境可在失败时通知,但工作流程不同,因为 FerrisPulse 聚焦于明确的成功 ping 并监控预期节奏。
  • 聚焦积压/吞吐量的队列监控工具:这些跟踪 worker 和队列行为,但 FerrisPulse 专门监控工作完成时的成功心跳存在。
FerrisPulse | UStack