我有一个自托管的 vps 服务器,我想始终在我的家用机器的系统托盘中查看其状态(是否可访问)。为此,我编写了一个简单的 bash 脚本,如下所示:
#! /bin/bash
while true
do
if ping -c 1 -W 1 vps > /dev/null
then
# Draw green icon in the tray
else
# Draw red icon in the tray
fi
sleep 1
done
就是这样。这种连续的请求会对带宽产生任何有意义的影响吗?托管服务提供商会认为这种行为可疑吗?有没有更好的方法来监控连接性?
答案1
评论交流使我对这个问题进行了更多的思考,并最终形成了需要实际答案的思路。
答案是否定的,如果您的目的是要知道 VPS 是处于启动还是关闭状态,那么 ping 并不是监控 VPS 连接性的好方法。
这个问题中的 ping(或 ICMP 请求)会将一个小数据包从您的计算机发送到您的路由器、互联网、数据中心、他们的路由器以及可能的服务器,最后发送到该服务器上的虚拟实例。
通常,数据中心的网络中会有智能交换机来检测 ICMP 请求,这些交换机会响应并确认您的 ICMP 请求。Ping 不会告诉您您的 VPS 是否正在运行。
此外,如果您从计算机执行 ping 操作,则网络中的某个地方会出现问题:例如,互联网连接不良、调制解调器/路由器出现问题,将无法发送 ICMP 请求,从而给出错误的请求响应,考虑到您 ping 您的 VPS,可能会触发 VPS 已关闭,但实际上是您自己的互联网没有正常工作。
与数据中心网络和 VPS 服务器相比,家庭网络无法正常运行的情况要多得多。
VPS 当然可能会瘫痪,但使用 ICMP 包无法告诉您是否出现这种情况。
很多时候,当你租用 VPS 时,提供商也会有一个服务状态页面供你查看。这个页面通常由监控工具自动生成,它们更准确。
此外,您还可以在 VPS 上安装监控工具,定期与远程服务器进行检查,如果检查失败,远程服务器就会说:“嘿,我错过了来自服务器 X 的检查”,如果这种情况连续发生 5 次,远程服务器就会向您发送电子邮件。
最后一个方法最适合您。如果您擅长编程,您可以用 php 编写一些简单的程序,不过您需要在其他地方使用网络托管服务。VPS 会在浏览器中打开一个 URL,该页面每 10 秒刷新一次,并且该页面还会将最后一次刷新写入日志。同一网络服务器上的 cron 作业会检查最后一次刷新,如果刷新时间太久,则会向您发送电子邮件。
当然,如果 VPS 重新启动,您将必须再次打开浏览器,但有方法可以自动完成该操作。
还有一些专门用于监控服务器的程序,但我一下子想不出任何便宜的程序。