我有一个嵌入式 Linux/Busybox 系统,需要监视其自身的网络连接。我试图确定设备在网络上“单独”运行的时间是否超过 10 分钟,如果是,则采取纠正措施。该系统可能位于物理上无法访问的位置。
我主要是在寻找一个通用的解决方案来检测严重故障,例如系统的网络流量为零。我们的服务器可以监控具体的自己的端口。
rootfs 正在迅速接近其最大大小 16MB,因此许多常见应用程序不再是一个选择,例如nmap
或tcpdump
会使我们超过 16MB 限制。
这是我的想法:
- 中的某些条目
/proc/net
可能指示最后一个 TCP 或 UDP 数据包的时间 - 找到网络上的任何随机对等点并尝试对它们执行 ping 操作(有人在听吗???)
- 监控
/sys/class/net/eth0/rx_packets
数量是否在增加
什么是最可靠的?
答案1
你的后两个想法都很好。 (您的第一个想法与您的第三个想法几乎相同。)问题是您是否需要进行主动或被动监控。
反对被动监控的一点是,有时流量不足可能是正常的,因为例如没有客户端主动使用您的盒子提供的服务。如果您可以根据您的用例假设这种情况不应该发生,那么被动监控就可以了。
反对主动监控的一点是,如果您选择监控的特定外部资源实际上已关闭(即问题出在另一端),您将错误地声明故障。您可以通过主动监控多个外部资源来缓解这一问题,并且仅在它们同时无法访问时才做出反应。