你有一个全球网站?如何做好监控?
[!warning] 由于被DDOS,已经不再做分流监控,故本文诸多链接失效
正式开始
视频: https://www.bilibili.com/video/BV14dqwBVEa5/
比如说我的博客 ::url{href=https://blog.acofork.com}
它在国外的节点是 Cloudflare Page ,而在国内的节点是 阿里云 ESA Pages/EdgeOne Pages
我使用的方案是在国内自托管一个 Uptime Kuma 服务,而在海外使用一些大厂的云监控,如 BetterStack UptimeRobot 等等,并且让他们互相监控
对于大厂的监控,我们不必做防护,但对于你自托管的监控,推荐套 Cloudflare Tunnel ,防止被DDoS
国内监控: ::url{href=https://kuma.2x.nz}
海外监控: ::url{href=https://vps.2x.nz}
进阶:利用自定义HTTP请求头Host字段实现单节点分流域名的监控
如果你有个分流域名,正常来说我们需要两个监测源模拟国内和海外用户访问,但真的需要这么麻烦吗...
原理
CDN上托管了那么多的网站,那它是如何识别每个用户需要访问哪个网站的呢?
针对 HTTPS ,CDN 会检查SSL握手报文中的 Server_Name 字段。而针对 HTTP ,CDN 会检查请求头中的 Host 字段
也就是说,对于海外CDN是否存活,我们可以通过直接访问CDN节点,如: http://blog.acofork.com.a1.initww.com 并携带上 Host 头指定为 blog.acofork.com ,从而强制指定节点访问业务网站,不走分流
那么如果CDN开启了强制HTTPS呢?那就关掉

常用CDN节点
- Cloudflare:你自己的优选域名,如 http://cdn.2x.nz
- Github: http://pages.github.com
配置方法
部署一个Uptime Kuma(或者其他服务,监测源必须在国内。因为EO,ESA我们要做拦截海外策略)
如图写监测项目,直接使用HTTP协议监测CDN节点,并且携带Host头,将重定向设为0,只要返回 200 就算存活(为了减轻站点压力,建议使用HEAD请求)


Demo
::url{href="https://status.acofork.com"}