网络流量统计的方法、装置、电子设备及介质与流程

文档序号:34907388发布日期:2023-07-27 19:18阅读:50来源:国知局
网络流量统计的方法、装置、电子设备及介质与流程

本公开涉及计算机和通信,尤其涉及一种网络流量统计的方法、装置、电子设备及介质。


背景技术:

1、为了充分利用硬件的性能,一般会在一台设备上混合部署多种应用。例如,通过在一台设备上安装操作系统(例如为linux系统)并创建多个容器,在不同的容器上运行不同的应用程序。

2、在研发中发现,在一些应用场景中存在流量统计更为精细化的需求。例如,某个设备x中安装的多个业务应用需要与不同机房中的主机进行网络通信。不同机房之间的位置关系具有各种类型,诸如本地同城、跨城、跨国等。由于各个机房的位置具有差异,不同业务应用所对应的网络流量的计费通常也需要适配设置。

3、然而,相关技术所提供的运维工具或者系统监测工具,仅能够针对各个应用程序的发送流量和收取流量进行统计,无法满足更细粒度的统计需求。例如有的运维工具的流量统计方式是在交换机上对报文进行采样分析五元组信息的方式来匹配得到各个业务的流量,这种方式存在采样精度不高的问题,另外根据采样获取到的报文五元组信息,与具体业务做关联也存在很大的难度。


技术实现思路

1、为克服相关技术中存在的问题,本公开实施例提供一种网络流量统计的方法、装置、电子设备及介质。

2、根据本公开实施例的第一方面,提供一种网络流量统计的方法。上述网络流量统计的方法包括:在内核态监听各个容器的网络状态,上述容器用于运行应用进程;根据监听到目标容器发生网络数据传输的情况,通过根据对端地址信息和预先存储的映射关系确定目标机房标识;上述目标机房标识为目标机房的身份编码;在内核态下更新上述目标容器对应于上述目标机房标识的传输数据流量;根据上述传输数据流量,统计应用进程对应于不同机房的流量统计结果。

3、在一些实施例中,基于流量统计结构体来存储各个容器对应的传输数据流量;其中,上述在内核态下更新上述目标容器对应于上述目标机房标识的传输数据流量,包括:在上述流量统计结构体中定位至上述目标容器对应的目标流量统计结构;在上述目标流量统计结构中,根据上述目标容器发生传输的网络流量数据,更新上述目标容器使用的目标cpu下与上述目标机房标识对应的传输数据流量。

4、在一些实施例中,上述流量统计结构体中,将各个容器的指针作为键-值对中的键信息,将上述容器对应的流量统计结构作为键-值对中的值信息;上述流量统计结构中设置有针对每个cpu的流量统计单元,上述流量统计单元用于存储对应cpu发生网络数据传输的传输数据流量。其中,在上述目标流量统计结构中,根据上述目标容器发生传输的网络流量数据,更新上述目标容器使用的目标cpu下与上述目标机房标识对应的传输数据流量,包括:在上述目标流量统计结构中,定位至上述目标cpu对应的目标流量统计单元,基于上述目标容器发生传输的网络流量数据来更新上述目标机房标识对应的传输数据流量。根据上述传输数据流量,统计应用进程对应于不同机房的流量统计结果,包括:针对所有的流量统计单元,对上述应用进程对应于不同机房的传输数据流量进行汇总,得到上述应用进程对应于不同机房的流量统计结果。

5、在一些实施例中,上述方法还包括:在内核网络协议栈的数据接收处理函数和数据发送处理函数至少一个中关联统计钩子函数。上述统计钩子函数用于在上述内核网络协议栈进行数据发送或数据接收的过程中,执行上述步骤:根据对端地址信息和预先存储的映射关系确定目标机房标识;其中,上述对端地址信息根据上述内核网络协议栈中的网络传输信息来确定;在内核态下更新上述目标容器对应于上述目标机房标识的传输数据流量;上述传输数据流量包括接收的数据流量信息和发送的数据流量信息中至少一种。

6、在一些实施例中,上述流量统计结构伴随对应容器关联的控制组的生命周期而存在。上述方法还包括:在控制组创建函数中关联第一钩子函数,上述第一钩子函数用于在创建控制组的情况下触发对新增流量统计结构的创建流程,并将创建好的新增流量统计结构加入至上述流量统计结构体中,上述新增流量统计结构用于存储创建的控制组所对应容器的传输数据流量;在控制组销毁函数中关联第二钩子函数,上述第二钩子函数用于在销毁目标控制组的情况下先触发对目标流量统计结构的数据强制导出流程,之后触发在上述流量统计结构体中关于上述目标流量统计结构的删除流程;上述目标流量统计结构用于存储上述目标控制组所对应容器的传输数据流量。

7、在一些实施例中,上述方法还包括:分配与容器的控制组对应的第一内存空间和与上述映射关系对应的第二内存空间;在上述第一内存空间内基于基数树的形式来构建上述流量统计结构体;针对操作系统中已有容器对应的控制组,创建与上述已有容器中每个容器对应的存量流量统计结构,并将上述存量流量统计结构加入至上述流量统计结构体中;在上述第二内存空间内基于基数树的形式来存储映射关系数据结构;上述映射关系数据结构用于存储上述映射关系。

8、在一些实施例中,上述方法还包括:接收用户态下流量统计模块针对统计周期内的流量统计指令;基于系统调用切换至内核态,在上述内核态下按照各个cpu上的工作队列的调度来运行对应cpu的处理函数。上述处理函数用于:遍历上述流量统计结构体中与当前cpu对应的流量统计结构,并将上述流量统计结构中处于上述统计周期内的传输数据流量进行格式化后复制到目标缓冲区;上述目标缓冲区用于在内核态和用户态之间进行数据传输;以及用于在确定上述目标缓冲区中复制的数据对象被上述流量统计模块读取的情况下,将上述数据对象从对应的流量统计结构中清除。其中,格式化后的数据包括:容器标识、cpu标识、机房标识和对应的传输数据流量。

9、在一些实施例中,上述对端地址信息为对端ip地址或对端物理地址;上述映射关系包括:机房标识和机房内主机的ip地址之间的对应关系;或者,上述映射关系包括:机房标识和机房内主机的物理地址之间的对应关系;或者,上述映射关系包括:机房标识和网段信息之间的对应关系,上述网段信息是由机房内各个主机的ip地址运算得到;上述主机是进行网络数据传输的对象。

10、根据本公开实施例的第二方面,提供一种网络流量统计的装置。上述装置包括:监听模块、确定模块、数据记录模块和统计模块。上述监听模块用于在内核态监听各个容器的网络状态,上述容器用于运行应用进程。上述确定模块用于根据监听到目标容器发生网络数据传输的情况,通过对端地址信息和预先存储的映射关系确定目标机房标识;上述目标机房标识为上述目标机房的身份编码。上述数据记录模块用于在内核态下更新上述目标容器对应于上述目标机房标识的传输数据流量。上述统计模块用于根据上述传输数据流量,统计应用进程对应于不同机房的流量统计结果。

11、根据本公开实施例的第三方面,提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;上述处理器,用于从上述存储器中读取上述可执行指令,并执行上述可执行指令以实现本公开第一方面所提供的网络流量统计的方法。

12、根据本公开实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现本公开第一方面所提供的网络流量统计的方法。

13、本公开的实施例提供的技术方案可以包括以下有益效果:

14、在内核态下监听到某个应用进程对应的目标容器发生网络数据传输时,能够获取发生网络数据传输对应的目标容器的对端地址信息,根据该对端地址信息和预先构建的映射关系确定目标机房标识;并能在内核态下更新目标容器对应于目标机房标识的传输数据流量;进而能够在内核态或者用户态下,基于传输数据流量进行统计得到各个应用进程对应于不同机房的流量统计结果,实现网络流量的精细化统计,满足各个应用进程对应于不同位置的机房的流量计费需求。该方法统计得到的流量统计结果能够应用至业务层面,便于根据流量统计结果来对各个业务应用进行优化部署,以降低成本提升效率。

15、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1