![如何执行分布式网站监控?](https://linux22.com/image/508713/%E5%A6%82%E4%BD%95%E6%89%A7%E8%A1%8C%E5%88%86%E5%B8%83%E5%BC%8F%E7%BD%91%E7%AB%99%E7%9B%91%E6%8E%A7%EF%BC%9F.png)
我想知道以下网站如何执行分布式网站监控(从多个检查站/国家)。
pingdom.com、site24x7.com、uptrends.com、siteuptime.com 等等。
具体来说,检查给定域名是否关闭时会发生哪些过程?如果服务器发现网站已关闭,下一步是什么?它会向单独的服务器发出 REST API 请求来运行相同的测试并报告结果吗?
我有几种理论,包括:
- 利用来自不同国家的东道主
- 利用不同国家的代理
我正在寻找最合适或最正确的方法来处理这个问题,其中可以包括使用来自多个国家/主机的服务器。
答案1
其中绝大部分将取决于实现。例如,每个提供商如何实现内部通信取决于他们。可能是 REST、可能是 XMLRPC、可能是 Pyro,等等。
从功能角度来看,它们处理方式似乎略有不同。Watchmouse 似乎会随机抓取可用的测试器并在其配置的节点之一上运行测试,而这些节点恰好在地理上分散。其他的似乎会分配到单个地理位置。
“最正确”的方式是相对的,取决于你想监控什么。你到底想监控什么,国际检查对你来说有多重要?你能做如果来自加拿大的测试很快而来自乌克兰的检查很慢,有什么问题吗?
如果我亲自做的话,我会让远程轮询节点向集中收集器报告数据整理,但是为了加快速度,警报会从边缘系统发出。
不过,一切都取决于你想做什么。HTH。
答案2
理想情况下,您希望遍布全球的客户端计算机运行您想要的任何类型的检查。我猜您只是想知道网站是否正常运行,这可以通过简单的 GET 进行检查。使用代理可以做到这一点,但您还需要确定是网站还是代理没有响应。如果您使用多个代理,这应该很容易。
取决于 Web 服务器端可以实现多少自动化,这将在一定程度上决定你如何使用监控系统的结果。在我看来,基本的系统应该是这样的:
- 定期(5分钟?)检查网站是否正常运行
- 每隔半分钟左右将重新检查一次未响应的站点,并且该站点的检查计数器将增加
- 如果站点响应,则检查时间和失败计数器将重置
- 如果网站在重试 X 次后仍未响应,则会发送警报,并且如果可能,将重新启动服务和/或服务器