最近开展运维项目的需求须对业务服务器内部之间访问关系进行梳理(可用于后续的访问策略控制),以及对于服务器网络连接统计(便于后续问题处理时的调试以及历史回溯)。初期想法设计是使用现有linux工具如iftop进行整合开发与集成,但这样对于运维整合和可控性太差,主要考虑如下:
后查了一下网络上相关工具的实现原理与源码,整理自己的思路,于是决定自己开发实现(使用golang开发)
流量统计: 使用大MAP对每一个item项进行统计, item内包含一直 在累计的in/out值,上一次统计时间(lastAccTime)上一次统计值(lastAccIn/lastAccOut)。有了这些信息数据则可以创建一个goroutine 来间隔性计算: 差值(累计in/out总值 - 上一次统计值) / 时间差(当前时间 - 上一次统计时间) = 速率

