Cron 作业悄然失败。服务器移动后,备份脚本会停止运行,密码轮换会破坏夜间导入,或者磁盘已满导致发票作业在凌晨 3 点崩溃。没有任何故障,因此正常运行时间监视器保持绿色,只有几周后您需要备份或客户询问发票在哪里时,您才会发现。心跳监测弥补了这一差距。本指南在几分钟内展示了它的工作原理以及如何免费设置它。
什么是心跳监测?
定期正常运行时间监视器从外部检查您的网站。心跳监视器的工作方式相反:您的计划作业签入。您会获得一个唯一的 URL,并且您的作业每次完成时都会调用它。如果电话没有准时到达,监视器就会知道出现问题并提醒您。
这可以立即捕获各种无声的失败:
- 这项工作从未开始。
crontab条目丢失,服务器在没有调度程序的情况下重新启动,或者容器被替换。 - 工作崩溃了。脚本在到达结尾之前发生错误而停止。
- 作业挂起。它已启动,但卡在锁定的数据库或缓慢的 API 上,并且永远不会结束。
- 整个服务器都没了。没有服务器,没有 ping,所以即使没有其他人在观看,你也会听到它。
您应该监控哪些计划任务?
从那些在没有人注意到的情况下停止时成本最高的工作开始:
- 数据库和文件的备份。您从未验证过的备份可能是您没有的备份。
- 计费和发票脚本、订阅续订和付款对账。
- 数据在您的商店、CRM、仓库或供应商源之间导入和同步。
- 由计划工作人员发送的电子邮件队列和新闻通讯。
- 证书续订作业(例如自动 SSL 续订)以及防止磁盘填满的清理作业。
- WordPress 或应用程序cron发布计划的帖子并运行维护任务。
免费计划包括 5 个心跳监视器,足以覆盖典型小型企业或少数客户端站点的关键工作。
如何设置免费的cron作业监控
1. 创建一个免费帐户
使用您的电子邮件地址注册My Site Alerts 。没有信用卡,也没有试用期。
2. 创建心跳
在仪表板中打开 Heartbeats 并选择 Create heartbeat。给它一个清晰的名称,例如每夜数据库备份,这样警报就会告诉您到底发生了什么。
3.设定预期的时间表和宽限期
在“预计心跳间隔”中,输入作业运行的频率:每 15 分钟、每小时、每天一次。然后将宽限期设置为作业运行所需的大致时间,加上安全裕度。在 2:00 运行且通常需要 20 分钟的备份需要大约 30 到 40 分钟的宽限期,因此缓慢的夜晚不会触发误报。
4.复制您的心跳URL
每个心跳都有自己的秘密 URL。您的作业每次运行时都会向其发送 GET 或 POST 请求。您还可以在浏览器中打开该 URL 一次进行测试:心跳应该切换为 up。
5. 选择警报的去向
电子邮件开箱即用。您还可以向Slack 、 Discord 、 Telegram 、 Microsoft Teams或您自己的 Webhook 发送警报,以便错过的运行到达您实际查看的位置。
如何从工作中获取心跳
Linux 的crontab
在命令后面添加请求,并用&&连接,这样只有当作业成功时才会发送 ping:
0 2 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 https://mysitealerts.com/webhook-heartbeat/YOUR-CODE如果网络速度较慢, -m 10选项会阻止curl 挂起,而--retry 3可以解决短暂的连接问题。如果您的服务器有 wget 而不是curl, wget -q -O /dev/null后跟 URL 可以完成相同的工作。
脚本内部
在实际工作完成后,将 ping 放在脚本的最后一行。在 shell 脚本中,在顶部添加set -e ,以便任何失败的命令在到达 ping 之前停止脚本。在 Python、PHP 或 Node.js 中,向心跳 URL 发出简单的 HTTP 请求作为作业的最后一步。
托管控制面板
在共享主机上,将相同的curl命令添加到控制面板中cron作业的末尾。大多数面板都允许您粘贴完整的命令行,因此相同的&&模式也适用。
WordPress cron
WordPress 仅在有人访问该网站时运行计划任务。为了实现可靠的调度,请禁用内置触发器,从真实服务器cron作业调用wp-cron.php ,并将心跳 ping 添加到同一行。现在您知道计划已启动并且已完成。
导致误报(或漏报)的常见错误
- 作业开始时执行 ping 操作。这只能证明工作已经开始。 ping结束后,工作成功。
- 宽限期太短。随着数据的增长,作业速度会变慢。每隔几个月检查一下宽限期。
- 忽略时区。如果服务器时钟和您的日程安排不一致,则日常作业可能会晚一个小时。设置预期间隔,而不是挂钟时间,并让第一次运行启动计时器。
- ping 太频繁。心跳是为每分钟最多运行一次的作业而设计的;同一分钟内的额外 ping 操作将被忽略。
- 在工作之间共享同一个心跳。每个作业都需要有自己的 URL,否则一项正常运行的作业会隐藏另一项已停止的作业。
- 维护期间忘记暂停。迁移服务器时暂停检测信号,以便历史记录仅显示真实事件。
心跳检测仅次于正常运行时间检查
心跳告诉您网站背后的工作正在发生;正常运行时间检查告诉您访问者可以访问它。它们一起覆盖了两半。如果您尚未设置网站检查,请按照我们的指南了解如何免费监控网站正常运行时间,并添加 SSL 和域名过期监控。您现在可以使用SSL 检查器检查任何证书。
保护您最重要的工作大约需要五分钟。创建您的免费帐户,为您的备份添加一个心跳,然后让我们密切关注,这样您就不必这样做了。
常见问题
cron监控和正常运行时间监控有什么区别?
正常运行时间监控从外部检查 URL 以查看您的站点是否响应。 Cron 或心跳监控等待您安排的作业签入,并在它未按时到达时向您发出警报。
心跳监测真的免费吗?
是的。免费计划包括 5 个带有电子邮件、 Slack 、 Discord 、 Telegram 、 Microsoft Teams和 webhook 警报的心跳监视器。没有信用卡,也没有过期的试用版。
我需要在我的服务器上安装代理吗?
不需要。您的作业只需向其心跳 URL 发出一个 HTTP 请求,例如使用几乎每台服务器上都可用的curl 或 wget。
宽限期应该多长?
将其设置为作业的正常运行时间加上安全裕度。通常需要 10 分钟的工作,如果有 15 到 20 分钟的宽限期,效果会很好。
我可以监控每天运行一次或每周运行一次的作业吗?
是的。将预期间隔设置为作业计划,例如 1 天或 7 天,当错过运行时,您将收到提醒。