内容简介:最近开展运维项目的需求须对业务服务器内部之间访问关系进行梳理(可用于后续的访问策略控制),以及对于服务器网络连接统计(便于后续问题处理时的调试以及历史回溯)。初期想法设计是使用现有linux工具如iftop进行整合开发与集成,但这样对于运维整合和可控性太差,主要考虑如下:后查了一下网络上相关工具的实现原理与源码,整理自己的思路,于是决定自己开发实现(使用golang开发)基础实现思路
最近开展运维项目的需求须对业务服务器内部之间访问关系进行梳理(可用于后续的访问策略控制),以及对于服务器网络连接统计(便于后续问题处理时的调试以及历史回溯)。初期想法设计是使用现有 linux 工具如iftop进行整合开发与集成,但这样对于运维整合和可控性太差,主要考虑如下:
- 目前开源的工具iftop/nethogs等基本上都是命令式展示,未提供API方式或web方式整合。
- 如果我只需要查看TCP连接,如同netstat,无法控制开启/关闭抓包统计功能以便释放抓包分析所带来的资源损耗。
- Golang源码实现 工具 的没有找到,基本上都为C实现。
后查了一下网络上相关工具的实现原理与源码,整理自己的思路,于是决定自己开发实现(使用golang开发)
基础实现思路
分析系统/proc/net/tcp的tcp链接信息(local/remote/uid/inode),通过 inode查找PID(/proc/PID/fd下socket对应inode号),通过uid查找对应用 户名(/etc/passwd记录),通过pid查找进程执行文件信息(/pro/PID/exe), 此时通过/proc下的各信息统计与分析完"pid/username/local/remote/program File”。 对于TCP连接流程的实时统计则通过libpcap抓包库进行抓包分析与统计,其对应索 引为“local:port-remote:port”。最后将实现输出显示Console和webUI展示输出。 webUI实现实时数据同步显示可通过websocket技术来实现。
Linux网络分析工具设计
libnetgo1.jpg
抓包分析与流量统计逻辑
netlibgo2.jpg
流量统计: 使用大MAP对每一个item项进行统计, item内包含一直 在累计的in/out值,上一次统计时间(lastAccTime)上一次统计值(lastAccIn/lastAccOut)。有了这些信息数据则可以创建一个goroutine 来间隔性计算: 差值(累计in/out总值 - 上一次统计值) / 时间差(当前时间 - 上一次统计时间) = 速率
最后实现工具的显示效果
console端
webui端
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
七步掌握业务分析
芭芭拉·A·卡克诺德 / 2010-9 / 49.00元
《七步掌握业务分析》内容简介:业务分析师是新兴的专业职务。在组织或项目中,业务分析师通过与项目干系人合作,采取一系列技术和知识,分析、理解组织或项目需求,并实现组织或项目目标,提出解决方案。《七步掌握业务分析》作者是国际业务分析协会(IIBA)的《业务分析知识体系指南》BABOK创作委员会的核心成员,全书结合BABOK的标准,以通俗易懂的语言阐述了业务分析的基本概念、任务与目标,介绍了从初级业务分......一起来看看 《七步掌握业务分析》 这本书的介绍吧!