我有一个自托管的 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
而已。这种持续的请求是否会对带宽产生任何有意义的影响,托管服务提供商是否会认为这种行为是可疑的?是否有更好的方法来监控连接?
评论交流让我对这个问题有了更多的思考,最终导致了一系列需要得到实际答案的思路。
答案是否定的,ping 不是监控 VPS 连接的好方法,如果您的目标是了解 VPS 是启动还是关闭。
此问题中的 ping(或 ICMP 请求)会从您的计算机发送一个小数据包,发送到您的路由器,发送到 Internet,发送到数据中心,发送到他们的路由器,可能发送到服务器,最后发送到该服务器上的虚拟实例。
通常,数据中心的网络中会有智能交换机来检测 ICMP 请求,这些交换机会响应并确认您的 ICMP 请求。Pinging 不会告诉您您的 VPS 是否正在运行。
此外,如果您从计算机和网络中的某个位置 ping,则会出现问题:例如。糟糕的互联网连接,有问题的调制解调器/路由器,将无法发出 ICMP 请求,给出错误的请求响应,鉴于您 ping 您的 VPS 可能会触发您的 VPS 已关闭,但实际上它是您自己的互联网无法正常工作。
与数据中心网络和 VPS 服务器相比,家庭网络经常无法正常工作。
VPS 当然会出现故障,但使用 ICMP 包并不能告诉您是否是这种情况。
在很多情况下,当您租用 VPS 时,提供商也会有一个服务状态页面供您查找。此页面通常由监控工具自动生成,并且更准确。
此外,还可以在您的 VPS 上安装监控工具,定期向远程服务器签入,如果签入失败,远程服务器会说:“嘿,我错过了从服务器 X 签入”,并且如果发生这种情况,会向您发送一封电子邮件,说...连续 5 次。
最后一个是你最好的方法。如果你擅长编程,你可以用 php 编写一些简单的东西,尽管你需要在其他地方提供虚拟主机服务。VPS 将在浏览器中打开一个 url,该页面每 10 秒刷新一次,该页面还将最后一次刷新写入日志。同一网络服务器上的 cron 作业会检查最后一次刷新,如果它发生得太早,会通过电子邮件发送给您。
当然,如果 VPS 重新启动,您将不得不再次打开浏览器,但有一些方法可以自动执行此操作。
也有专门用于监控服务器的程序,但我想不出任何便宜的东西。