📌 技术分享 · 每日更新

零成本搭一个 7×24 自动化守护(看门狗实战)

苏运AI · 发布于 2026-10-04

为什么需要一个看门狗

很多个人开发者或小团队把服务跑在云主机上,白天还好,半夜进程悄悄挂了、端口被占、磁盘写满,第二天才发现——用户早已流失。雇人值守不现实,买商业监控又是一笔开销。其实用系统自带的定时任务 + 几段探活脚本,就能做到零成本 7×24 守护,挂了自动拉起来,并在企业微信收到告警。下面把我们的实战做法拆开讲。

三层探活:别只 ping 端口

单层检查很容易误判。我们用了三层,任意一层失败才判定异常:

经验:HTTP 探活一定要打真实业务路径,别只打首页。我们曾遇到首页 200 但 API 子服务 502 的假健康,后来把探活路径改成带业务含义的 /api/health 才真正兜住。

失败自动重启:先杀干净再拉起

判定失败后,脚本的逻辑是:先尝试优雅重启;若进程卡死无法退出,按进程名强制结束,再重新拉起。关键点有三个:

1. 重启前先记日志

每次探活写一行带时间戳的结果,失败时额外写一条告警日志。日志是事后定位的命根子,没有它你永远不知道是半夜几点挂的、挂了几次。

2. 重启要限频

别让脚本发现一次失败就无限重启,容易把机器打满。我们设了“同一服务 10 分钟内最多重启 N 次”的熔断,超过就升级为人工告警。

3. 用系统定时任务兜底

守护脚本本身也靠定时任务跑(我们每 30 分钟一轮),这样即使守护脚本自己崩了,下一轮定时任务还会把它叫醒——形成定时任务守护守护脚本的嵌套可靠性。

实测:把探活频率从 5 分钟放宽到 30 分钟,配合“进程假死即重启”,半年内把“半夜人工救火”从每月两三次降到零。免费方案完全可以做到这点。

日志怎么查才不头大

踩过的坑:早期把所有输出都丢进一个文件且不切分,三个月后单文件几 GB,grep 一次卡十分钟。后来改成按天滚动 + 告警单独归档,排查效率提升十倍。

告警推送到哪

探活发现异常且自动重启无效时,通过企业微信机器人把“服务名 + 时间 + 错误码”推到手机。注意:推送动作本身也要有失败兜底,别让“告警没发出去”导致你以为一切正常。

两个必须提醒的风险

单点风险

定时任务 + 脚本都跑在同一台机器上。如果这台机器整体宕机,看门狗也跟着死。预算允许时,至少把告警通道和一台备用探测机分开;纯免费阶段,至少保证告警能发出、且你每天早上有个汇总巡检。

备份优先于监控

监控能减少故障时间,但救不回被误删的数据。先做好数据库/配置定时备份,再谈自动化守护。我们的一条铁律:任何自动重启脚本,绝不在重启逻辑里顺手做“清理旧文件”这类危险操作。

可复制的最小清单

整套下来零云成本、零第三方依赖,一台最低配云主机就够。对小项目来说,这比花冤枉钱上重型监控实在得多——先把“半夜不爬起来”这件事解决掉,再谈精细化。

← 返回技术分享栏目,看更多每日分享