然后前前后后翻遍了谷歌各种关键字,github 也翻了好几遍,目前能找到最接近的是 2 款。
这款在线监控可以很容易部署网页版,但是只提供端口流量占用排行,不提供具体流量统计,而且除此之外的功能全部用不上,并且实际测试发现不是很稳定,重启或者崩溃后历史数据全部丢失。
这款也是在线监控,目前还不支持部署到 KVM 机器中,但是提供了端口流量占用及排序,完全符合需求。 有兴趣可以看一下官网的 demo。
+ 但是,eth interface 可能收到广播,广播不能算发送给进程的数据包。所以 interface rx 肯定大于实际用量
楼主的问题是“所有进程”。这个问题就有点困难了,感觉必须要改动 kernel 的源码,可以看看现在的 android 是怎么实现的。经过冥思苦想,又想到了下一个思路:
+ 实现自定义的 glibc,然后覆盖系统提供的 glibc。在 glibc 中修改可以一次性把所有进程都改了。
+ 每次收到数据包都先记录在内存中,当 rx 或 tx 超过 10KB 写入到一个文件,然后 user-space 进程取读取这个文件。
不过,你找的这些工具都是分析骨干网络流量的,不是分析系统流量的。Linux 系统内能实时看端口流量的比如 nethogs? 但是也没法生成统计报表。
ntopng 之前玩过,主要的应用场景是旁路布署在核心网络上,镜像转发所有流量过来后,能可视化整个网络的流量情况
angry rabbit 的思路三我觉得很好啊。hack libc,修改里面的 read 和 write 函数,记录下端口对应的句柄,而且可以针对特定的应用程序,在加载 libc 的之前选择是否是 hack 后的 libc,缺点是静态链接的程序就不行了。我记得前一段时间论坛里有一个给指定程序做代理的方案,就是在 Windows 下通过拦截读写函数的。
VERSION: 3.9.8.5 · 36ms · UTC 18:01 · PVG 02:01 · LAX 11:01 · JFK 14:01

