监控互联网连接的稳定性

监控互联网连接的稳定性

我最近刚与一家新的 ISP 签约,我有大约 2 周的时间来确定他们的正常运行时间是否足以运行服务器。我最初的计划是在一台旧笔记本电脑上安装 Nagios,并将其存放在朋友家中,但 - 长话短说 - 在朋友家中安装服务器是不可行的。

我有两个目标:

  1. 短期内,我需要一些东西来确定新的互联网连接是否足够稳定,可以运行服务器。它不需要每次互联网中断时都提醒我,但它确实需要某种日志,我可以查看是否有任何停机时间。
  2. 从长远来看,我希望能够在服务器出现问题时立即提醒我。

理想情况下,我可以使用同一款软件实现这两个目标。

我对 SaaS 有一种莫名的厌恶,所以我在想,既然我的口袋里有一个永远在线、永远连接的 Linux 盒子(Android 手机的形式),肯定有一些现有的工具可以用它来监控服务器的正常运行时间。

当我在互联网上搜索这样的应用程序时,我陷入了疯狂。许多“监控”应用程序仅在您打开应用程序并告诉它 ping 时才检查服务器。我想设置一次,然后让手机每 1-5 分钟运行一次检查,而无需我采取任何进一步的行动。我不介意它耗尽我手机的数据连接,因为我实际上只会在接下来的 2 周内抱怨它。之后我可以减少轮询频率。

由于我还没有找到这样的应用程序,所以我想我可以通过服务器上的 cron 作业来实现第一个目标,该作业会 ping Google 或类似的东西并写入日志。这似乎是目前最简单的选择,但它并没有解决监控的长期目标。

可能相关的信息:我的预算是 0 美元。我的所有设备都是 Linux 或 Android。

我希望 Server Fault 的优秀人才能够对如何最好地实现这一目标提供一些见解/建议。谢谢。

答案1

这有点像购物问题,但我还是会回答,因为它是一个有用的系统管理工具:脱咖啡因监测器完全符合您的要求。有很多托管服务可以做到这一点,如果监控单个服务器,它通常是免费的。我发现蒙塔西奇对于普通监控来说已经足够好了。对于一台你不愿意投入太多资金的服务器,你对反对这种解决方案的不合理性的看法是正确的。

但实际上,如果您以任何专业的方式执行此操作(与本网站主题相关),那么当您每年可以租用机架空间或 VPS(费用约为 300 美元/年)并具有大量冗余和千兆连接速度时,为什么还要自己托管单个服务器呢?

如果您确实想要托管,并且再次假设这是一个专业问题,那么您应该考虑的任何 ISP 都会提供可执行的服务水平协议。如果他们提供这个,你可以打赌他们不太可能不满足它。

答案2

如果您有一个已知的良好的远程点可以测试,那么您可以实施自己的 ping/netcat/curl/wget 测试来验证网络连接的可用性以及延迟。

如果您不需要立即收到通知,您可以直接在本地登录。这可以在您的托管服务器上完成...或者在另一个(也许是专用的)监控盒上完成。监控盒是理想的选择,特别是如果您将来要托管其他人的硬件和/或 VPS。

如果您需要收到通知,那么您将需要一部手机。最好是一部可以连接到网络的手机(例如,一部 Android 手机),但老式 GSM 3g“调制解调器”手机也可以。然后,您可以使用该带外链接向您发送通知电子邮件或电子邮件转短信,以通知您中断或连接的任何变化。

我一直在考虑将旧智能手机用作自带电池备份的监控和通知节点。鉴于大多数 Android 手机都可以运行 Java 或获取 shell(iPhone、Kindle 等也是如此),因此在这方面有很多选择。

不过,如果你正在考虑商业投资,那么将家庭“数据中心”的 Mifi 作为带外链路会更好。

答案3

我的评估期现已结束,所以我想发布一个后续内容:我使用了 Decaf Monitor,并推荐它进行短期监控。

默认配置选项需要一段时间才能检测到中断,因此我将灵敏度调高了很多。它几乎立即就检测到了停机。不幸的是,当发生中断时,Decaf Monitor 会震动手机,直到您打开屏幕并确认,并且每次检查后都会震动一次(我将其设置为每分钟一次),因此如果您正在做某件可能会中断的事情(堵车、看牙医),这真的很烦人。我没有看到任何可以改变这种情况的设置,但可能有一个设置,而我只是错过了。

误报数量出奇地少。当我的手机失去连接时,Decaf Monitor 会在状态栏中显示一个图标,表示无法连接,但不会振动,当连接恢复时,图标会自动消失。

由于它的警报非常持久,我认为它不适合长期监控,但它非常适合在短时间内密切关注服务器。

答案4

简单的 shell 脚本看门狗可能会有用...类似于:抱歉,我懒得用 bash 写它,但我只是给出这个想法。

VAR=0
while(true){
 ping -c 1 yourserver
 if failed then increment VAR
 else VAR=0
 if VAR=10 then notify me
 sleep 1000
}

相关内容