网站搜索

这三个 Docker 容器把我的家庭实验室变成了终极网络诊断工具


一开始,当我刚开始接触家庭实验室和自托管时,我最初的假设是,一旦我正确配置了一个服务,并让它运行起来,它就会无限期地保持这种状态。随着我设置的服务越来越多,我的小型家庭实验室发展到包括几台服务器和 VPS 实例。事情开始有些失控。我开始经历第一次服务中断。显然,家庭实验室是需要维护的。

我花了很多时间来设置像反向代理、定时任务、自定义脚本、网页服务器和VPS防火墙配置之类的东西。即便完成了所有这些工作,几天或几周之后,其中一些服务仍会随机宕机。到那时,我已经完全忘记了自己最初是怎么设置的,这一切简直是一团糟。于是,我开始使用一些Docker服务来监控我的小型家庭实验室网络并进行故障诊断。

Uptime Kuma

监控正常运行时间,并在出现故障时收到通知

你可能在网上遇到过那些状态追踪器,它们会告诉你某个网站何时宕机。它们通常有一些视觉指示器或动态图表来跟踪网站的正常运行时间和故障时间。Uptime Kuma 做的也是同样的事情,只不过你可以指向自己托管的服务。

要设置 Uptime Kuma,你需要为一个服务创建一个称为“监控器”的东西,监控器会向你显示当前和平均响应时间以及正常运行时间百分比等统计数据。在设置监控器时,你需要将其指向你用于访问该服务的 URL,并设置一个“心跳”计时器。Uptime Kuma 会定期 ping 该 URL 地址并记录带有时间戳的结果。默认情况下,心跳间隔为 60 秒,但你可以将其设置为任何你想要的时间。

它将那些日志显示为绿色的正常运行时间和红色的停机时间指示器。你还可以以交互式图表的形式看到更详细的相同日志。






如果你尝试使用 Uptime Kuma,你也应该设置通知警报。基本上,如果任何被监控的服务出现宕机,Uptime Kuma 会向你发送警报。你可以从包括 Discord、Telegram、电子邮件、Signal 和 Ntfy 在内的完整通知提供商列表中进行选择。我已经使用 Ntfy 将通知推送到我的手机,所以我也为 Uptime Kuma 使用 Ntfy 警报。

这个想法是,时间戳日志、响应时间统计和 SSL 到期情况可以帮助你在不可避免地遇到“加载页面出错”时排除常见原因。

Netshoot

所有网络诊断所需的工具都在一个容器中

当一个服务停止工作或表现异常时,下一步是弄清楚出了什么问题。

你可能已经注意到,一个典型的 Docker compose 文件有一个“network”标志。它为该容器定义了一个虚拟网络。Docker 容器通常不会直接使用主机网络。所以如果你想弄清楚那个虚拟网络出了什么问题,你不能直接从主机上进行检查。这就是 Netshoot 的用途。

你可以使用此命令列出虚拟 Docker 网络。

docker network ls

你可以以临时 Docker 容器的方式运行 Netshoot,这让你可以与列表中的任何 Docker 网络进行交互。将 bridge 替换为你的目标网络。--rm -it 标志告诉 Docker 在你退出容器时将其删除,并为你提供一个交互式终端。

docker run --rm -it --network bridge nicolaka/netshoot

要针对特定的容器,运行此命令。

docker run --rm -it --network container: nicolaka/netshoot

它应该会打开一个交互式的 Netshoot shell,提供访问 70 多种网络工具的功能。其中一些包括基本的网络命令,如 ping、curl、nmap、traceroute、netstat、tcpdump、iperf3。例如,ping 可以测试主机是否可达。使用 netstat,你可以发现端口是否已被占用。这种情况发生在我身上不止一次。由于我在 VPS 实例上运行多个 Web 服务器和 Docker 容器,端口冲突成了一个反复出现的烦恼。

开放速度测试

你的家庭实验室速度测试

通常,当你在像 Ookla 这样的网站上运行互联网速度测试时,它会测试你的互联网连接与 Ookla 服务器之间的速度。但是,如果你想测试客户端(比如你的手机或笔记本电脑)与家用服务器之间的连接,你就需要运行一个针对该网络的速度测试。这正是 OpenSpeedTest 所做的。它让你测试家庭实验室网络上不同节点的连接速度。

你可以启动一个用于 OpenSpeedTest 的 Docker 容器。默认情况下,它映射到 HTTPS 的 3001 端口,这对大多数人来说应该可以正常工作。然而,Uptime Kuma 也默认使用该端口,所以如果你已经在运行 Uptime Kuma,请注意这一点。

网页用户界面看起来和任何普通的网络测速一样。它检查上传和下载速度(以兆位为单位),以及延迟和抖动(连接的稳定性或一致性)。


这些 Docker 容器使诊断稍微容易一些

与在裸机上安装诊断工具相比,在家庭实验室环境中启动这些容器更好,因为一旦完成,它们可以完全从服务器中删除。不过,我建议保留Uptime Kuma,如果你的服务器有足够的资源的话。

相关文章