程序员,或多或少,总会有一些东西需要监控,服务器是否宕机、HTTP 服务能否正常访问、VPN 能否连通、CronJob 有没有失败等等。
单一监控
最简单的做法是部署一个监控服务,比如非常流行的 uptime-kuma。 它提供了丰富的监控类型,足够应对大部分场景,详见下图,或者亲自体验一下 demo。
还需要做的一件事:配置好失败发送通知,比如 Telegram,就能第一时间发现问题。
如果是部署在内网,可以搞个内网穿透,uptime-kuma 原生支持 Cloudflare Tunnel, 按照教程配置一下,即使不在家也能随时随地查看服务状态。
异地多监控
但是单一监控服务面临一个问题,如果监控服务本身挂了怎么办?
解法也很简单,除了监控服务 A
本身,需要额外再部署一个监控服务 B,甚至更多的 C、D,用来监控监控服务 A
,
并且这些监控服务要尽可能的异地部署,避免它们同时挂掉。
单一监控服务+云监控
异地部署多套监控服务,它们还要互相监控,听起来有些麻烦。 更简单的做法是在单一监控的基础上,再加上云监控平台,比如 healthchecks.io,免费方案足够了。 只需要监控服务定时向 healthchecks 发送心跳即可,对于 uptime-kuma,就是多加一个 HTTP 监控项。 因为是被动发送心跳,如果不想就不需要把监控服务暴露到公网。 最重要的是,这些云监控平台足够稳定,至少比我自己部署的要稳定。
最后放一张我的 uptime-kuma 截图: