关于 crontap-heartbeat-for-cron
为已有定时运行的任务添加 Crontap 心跳监控,适用于需要发现漏报或记录失败的团队,并说明密钥管理与验证方法。
主要功能
- 01设置周期和宽限时间
- 02成功后发送心跳
- 03通过 /fail 报告失败
- 04查看心跳记录
- 05轮换心跳令牌
适用场景
- 01监控定时导入是否按时完成
- 02检测任务静默并记录显式失败
- 03调查部署后的心跳和失败事件
MCP 相关
指导使用 Crontap MCP 的 create_heartbeat、get_heartbeat_pings 和 rotate_heartbeat_token 工具管理心跳;另有 Ultra REST API 方案。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ crontap/ skills --skill crontap-heartbeat-for-cron安装后在 Claude Code 中输入/crontap-heartbeat-for-cron确认已加载。
详细介绍
为周期性任务添加心跳
心跳用于监控已有自身时钟的任务。任务成功完成工作后发送 ping。超过周期和宽限时间仍无响应,就会被视为漏报;而 /fail 变体会报告明确的失败。
前提条件
使用必需的工具前,请检查这些工具是否可用。如果有任何工具缺失,请停止并仅向用户提供以下两种选择:
- 连接 Crontap MCP:
https://mcp.crontap.com/mcp。所有 Crontap 套餐均支持 MCP 访问。 - 为原始 API 配置
$CRONTAP_CLIENT_ID和$CRONTAP_API_KEY。原始 API 访问需要 Ultra 套餐。
不要擅自选择路径,也不要在用户作出选择前继续操作。
- 了解任务的实际最长间隔,包括预期的抖动。
- 设置足够长的宽限时间,以应对常见延迟和运行时长。
- 确定由哪个组件安全地存储返回的 ping URL。
工作流
- 根据预期周期和宽限时间创建心跳。
- 获取返回的 ping URL,并将其保存为机密。
- 仅在任务成功完成后添加成功 ping。
- 在任务处理失败的路径中添加
/failping。 - 部署后以及每次事件发生后,检查 ping 历史记录。
- 仅在凭据泄露或计划轮换凭据时轮换令牌。
MCP 示例
创建一个宽限时间为 30 分钟的每日心跳:
{
"tool": "create_heartbeat",
"arguments": {
"name": "Nightly import",
"periodMinutes": 1440,
"graceMinutes": 30,
"emailCooldownMinutes": 60
}
}
响应中包含一个机密 ping URL。不要将其输出到源代码管理、CI 日志、支持工单或之后的 Agent 消息中。
检查某个 UTC 日期:
{
"tool": "get_heartbeat_pings",
"arguments": {
"heartbeatId": "<heartbeat-id>",
"day": "2026-09-14"
}
}
明确确认后再轮换:
{
"tool": "rotate_heartbeat_token",
"arguments": {
"heartbeatId": "<heartbeat-id>"
}
}
轮换后,旧 URL 的两种变体都会立即失效。请在任务的下一个截止时间前,用新返回的 URL 更新任务。
任务集成
使用 CRONTAP_HEARTBEAT_URL 之类的环境变量。
run_the_job &&
curl --fail --silent --show-error "$CRONTAP_HEARTBEAT_URL"
发生已处理的失败时,调用
"$CRONTAP_HEARTBEAT_URL/fail?msg=bounded-error-summary"。消息中不得包含凭据、个人数据或冗长的堆栈跟踪。
REST 备用方案
REST 需要 Ultra API 访问权限;MCP 不需要。
curl --fail-with-body https://api.crontap.com/v1/heartbeat \
-X POST \
-H "ClientId: $CRONTAP_CLIENT_ID" \
-H "ApiKey: $CRONTAP_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"name": "Nightly import",
"periodMinutes": 1440,
"graceMinutes": 30
}'
验证
- 从已部署的任务环境发送一次测试成功 ping。
- 确认收到 ping 后,心跳从待处理状态变为已接收状态。
- 测试一条安全的失败路径,并验证出现了
fail事件,同时未泄露 ping URL。 - 检查周期加宽限时间是否涵盖任务正常运行时的最坏情况。
安全与套餐限制
- ping URL 是凭据。任何持有该 URL 的人都能报告活动。
- 心跳只能检测静默状态,不能启动或重启任务。
- Starter 套餐的心跳频率和数量限制与付费套餐不同。创建响应会根据当前账户执行相应限制。
- 如果返回套餐限制响应,请提供其包含四个选项的升级阶梯,并说明满足需求的最小选项;不要编造价格。
故障排除
- 首次成功接收 ping 前,不会开始计算截止时间。
- 暂停期间发送的 ping 会记录在历史中,但不会改变截止时间。
- 频繁快速发送 ping 可能受到速率限制,但仍会返回 HTTP 200。
- 轮换后旧 URL 停止工作是预期行为。请部署替换后的机密 URL。
参考资料
评论
支持 Markdown