CN112260889B - 一种基于Linux的进程流量监控方法、系统及设备 - Google Patents

一种基于Linux的进程流量监控方法、系统及设备 Download PDF

Info

Publication number
CN112260889B
CN112260889B CN202011043274.0A CN202011043274A CN112260889B CN 112260889 B CN112260889 B CN 112260889B CN 202011043274 A CN202011043274 A CN 202011043274A CN 112260889 B CN112260889 B CN 112260889B
Authority
CN
China
Prior art keywords
module
linux
file
inode number
acquiring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011043274.0A
Other languages
English (en)
Other versions
CN112260889A (zh
Inventor
苗功勋
张雷
王金国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING ZHONGFU TAIHE TECHNOLOGY DEVELOPMENT CO LTD
Nanjing Zhongfu Information Technology Co Ltd
Zhongfu Information Co Ltd
Zhongfu Safety Technology Co Ltd
Original Assignee
BEIJING ZHONGFU TAIHE TECHNOLOGY DEVELOPMENT CO LTD
Nanjing Zhongfu Information Technology Co Ltd
Zhongfu Information Co Ltd
Zhongfu Safety Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by BEIJING ZHONGFU TAIHE TECHNOLOGY DEVELOPMENT CO LTD, Nanjing Zhongfu Information Technology Co Ltd, Zhongfu Information Co Ltd, Zhongfu Safety Technology Co Ltd filed Critical BEIJING ZHONGFU TAIHE TECHNOLOGY DEVELOPMENT CO LTD
Priority to CN202011043274.0A priority Critical patent/CN112260889B/zh
Publication of CN112260889A publication Critical patent/CN112260889A/zh
Application granted granted Critical
Publication of CN112260889B publication Critical patent/CN112260889B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明提出的一种基于Linux的进程流量监控方法、系统及设备,通过在应用层遍历各进程打开的socket文件,获得socket文件的inode号,把进程与inode号的映射关系通过netlink发到内核层,在内核层netfilter模块的hook函数中,从sk_buff结构获得网络包所属socket文件的inode号,用此inode号在上述对应关系中找到对应的进程名称,从而可以精确到统计到某个进程上行和下行的流量数据,用于进程流量的监测和控制。

Description

一种基于Linux的进程流量监控方法、系统及设备
技术领域
本发明涉及计算机技术领域,更具体的说是涉及一种基于Linux的进程流量监控方法、系统及设备。
背景技术
Linux下的进程流量监控功能,即Linux系统上监测各个进程产生的上行和下行流量,并对超过阈值的流量进行阻断的功能,目前实现的方法是:在Linux netfilter内核模块的NF_INET_LOCAL_IN和NF_INET_LOCAL_OUT两个挂载点挂载自己的hook函数,在这两个函数中对进程产生的流量进行统计和控制,但这个方法存在问题:由于netfilter模块工作在中断上下文中,它拿到的进程名是不准确的,导致对进程的流量监控会存在误差。
发明内容
针对以上问题,本发明的目的在于提供一种基于Linux的进程流量监控方法、系统及设备,能够在内核层准确地拿到网络包对应的进程名称,准确统计进程的上下行流量信息。
本发明为实现上述目的,通过以下技术方案实现:一种基于Linux的进程流量监控方法,包括如下步骤:
S1:在系统应用层获取当前运行的进程名称;
S2:根据进程名称获取对应的socket文件的inode号;
S3:把进程与inode号的映射关系通过netlink通信发到系统内核层,并保存;
S4:系统内核层在netfilter模块的挂载点上挂载hook函数,用于对进出本机的网络数据包进行处理;
S5:在hook函数中获取网络数据包所属socket文件的inode号,进而确定产生网络流量的进程;
S6:计算产生网络流量的进程流量信息,并发送至系统应用层进行展示。
进一步,所述步骤S1包括:
遍历系统的proc目录的每个子目录,从所述子目录下的exe链接文件解析到它指向的可执行程序文件,从而可以得到当前运行的进程名称。
进一步,所述步骤S2包括:
在系统的proc目录的每个子目录的fd目录下,获取对应进程的socket文件,并从socket文件的链接信息获取socket文件的inode号。
进一步,所述步骤S4包括:
系统内核层在netfilter模块的NF_INET_LOCAL_IN检测点和NF_INET_LOCAL_OUT检测点上注册hook函数,用于对进出本机的网络数据包进行处理。
进一步,所述步骤S5包括:
S51:在hook函数中,根据记录网络数据包信息的struct sk_buff参数的sk_socket字段获取struct socket数据,
S52:根据struct socket数据的file字段获得struct file数据;
S53:根据struct file数据的f_path.dentry字段获得dentry数据;
S54:根据dentry数据的d_inode字段获得inode数据;
S55:根据inode数据的i_ino字段获取socket文件的inode号;
S56:根据inode号在进程与inode号的映射关系中确定网络数据包所属的进程名称。
进一步,所述步骤S6包括:
S61:获取传输层头部长度,并计算出传输的数据流量;
S62:将传输的数据流量累加在对应的网络数据包所属的进程上,根据策略配置的进程流量上限对网络数据包做出是否丢弃的判断;
S63:把网络数据包所属的进程累计的上下行流量信息发送至系统应用层进行展示。
相应的,本发明还公开了一种基于Linux的进程流量监控系统,包括:
获取模块,用于在系统应用层获取当前运行的进程名称,并根据进程名称获取对应的socket文件的inode号;
传输模块,用于把进程与inode号的映射关系通过netlink通信发到系统内核层,并保存;
挂载模块,用于系统内核层在netfilter模块的挂载点上挂载hook函数,用于对进出本机的网络数据包进行处理;
进程确定模块,用于在hook函数中获取网络数据包所属socket文件的inode号,进而确定产生网络流量的进程;
计算展示模块,用于计算产生网络流量的进程流量信息,并发送至系统应用层进行展示。
相应的,本发明还公开了一种基于Linux的进程流量监控设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任一项所述基于Linux的进程流量监控方法步骤。
对比现有技术,本发明有益效果在于:本发明提供了一种基于Linux的进程流量监控方法、系统及设备,通过在应用层遍历各进程打开的socket文件,获得socket文件的inode号,把进程与inode号的映射关系通过netlink发到内核层,在内核层netfilter模块的hook函数中,从sk_buff结构获得网络包所属socket文件的inode号,用此inode号在上述对应关系中找到对应的进程名称,从而可以精确到统计到某个进程上行和下行的流量数据,用于进程流量的监测和控制。
另外,本发明除了可以统计进程产生的上下行流量数据,还可以根据流量是否超出阈值对网络传输进行阻断。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
附图1是本发明的方法流程图。
附图2是本发明的系统结构图。
具体实施方式
下面结合附图对本发明的具体实施方式做出说明。
如图1所示的一种基于Linux的进程流量监控方法,包括如下步骤:
S1:在系统应用层获取当前运行的进程名称。
Linux系统的proc目录是进程信息的存放目录,它下面的每个目录对应每个运行的进程,进入proc的每个子目录,从子目录下的exe链接文件解析到它指向的可执行程序文件,从而可以得到进程名。
S2:根据进程名称获取对应的socket文件的inode号。
在proc的每个子目录的fd目录下,存放着每个运行的进程打开的所有文件描述符链接,并以socket文件的形式存放,socket文件的链接信息中存放着socket文件的inode号。读取socket文件的链接信息,即可获取对应的socket文件的inode号。
S3:把进程与inode号的映射关系通过netlink通信发到系统内核层,并保存。
S4:系统内核层在netfilter模块的挂载点上挂载hook函数,用于对进出本机的网络数据包进行处理。
Netfilter模块是linux内核层中处理网络数据包的一个子系统,它在网络流程的5个位置放置了检测点,在每个检测点上可以注册处理函数对网络包进行处理。
本步骤在NF_INET_LOCAL_IN和NF_INET_LOCAL_OUT两个检测点上注册了hook函数,即对进出本机的网络数据包进行处理。
S5:在hook函数中获取网络数据包所属socket文件的inode号,进而确定产生网络流量的进程。
在注册的两个hook函数中,都有一个记录网络数据包信息的struct sk_buff参数,根据sk_buff的sk_socket字段获取struct socket数据,根据socket的file字段获得struct file数据,根据file的f_path.dentry字段获得dentry数据,根据dentry的d_inode字段获得inode数据,根据inode的i_ino字段获取socket文件的inode号,用这个inode号到步骤S3中保存的映射关系中查到这个网络数据包所属的进程名称。即确定了产生网络流量的进程。
S6:计算产生网络流量的进程流量信息,并发送至系统应用层进行展示。
具体来说,用ip_hdr获取sk_buff的ip头部,分析ip头部信息,获得ip头部长度和protocol字段,再分别获取tcp头部或udp头部,分析头部信息获得传输层头部长度,用总长度减去ip头部长度和传输层头部长度,得到此次传输的数据流量,累加在对应的产生网络流量的进程上,根据策略配置的进程流量上限对此网络数据包做出是否丢弃的判断,并把相应进程累计的上下行流量信息发给应用层用于展示。
相应的,如图2所示,本发明还公开了一种基于Linux的进程流量监控系统,包括:
获取模块,用于在系统应用层获取当前运行的进程名称,并根据进程名称获取对应的socket文件的inode号;
传输模块,用于把进程与inode号的映射关系通过netlink通信发到系统内核层,并保存;
挂载模块,用于系统内核层在netfilter模块的挂载点上挂载hook函数,用于对进出本机的网络数据包进行处理;
进程确定模块,用于在hook函数中获取网络数据包所属socket文件的inode号,进而确定产生网络流量的进程;
计算展示模块,用于计算产生网络流量的进程流量信息,并发送至系统应用层进行展示。
相应的,本发明还公开了一种基于Linux的进程流量监控设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上文任一项所述基于Linux的进程流量监控方法步骤。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于终端实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。
同理,在本发明各个实施例中的各处理单元可以集成在一个功能模块中,也可以是各个处理单元物理存在,也可以两个或两个以上处理单元集成在一个功能模块中。
结合附图和具体实施例,对本发明作进一步说明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所限定的范围。

Claims (8)

1.一种基于Linux的进程流量监控方法,其特征在于,包括如下步骤:
S1:在系统应用层获取当前运行的进程名称;
S2:根据进程名称获取对应的socket文件的inode号;
S3:把进程与inode号的映射关系通过netlink通信发到系统内核层,并保存;
S4:系统内核层在netfilter模块的挂载点上挂载hook函数,用于对进出本机的网络数据包进行处理;
S5:在hook函数中获取网络数据包所属socket文件的inode号,进而确定产生网络流量的进程;
S6:计算产生网络流量的进程流量信息,并发送至系统应用层进行展示。
2.根据权利要求1所述的基于Linux的进程流量监控方法,其特征在于,所述步骤S1包括:
遍历系统的proc目录的每个子目录,从所述子目录下的exe链接文件解析到它指向的可执行程序文件,从而可以得到当前运行的进程名称。
3.根据权利要求2所述的基于Linux的进程流量监控方法,其特征在于,所述步骤S2包括:
在系统的proc目录的每个子目录的fd目录下,获取对应进程的socket文件,并从socket文件的链接信息获取socket文件的inode号。
4.根据权利要求1所述的基于Linux的进程流量监控方法,其特征在于,所述步骤S4包括:
系统内核层在netfilter模块的NF_INET_LOCAL_IN检测点和NF_INET_LOCAL_OUT检测点上注册hook函数,用于对进出本机的网络数据包进行处理。
5.根据权利要求1所述的基于Linux的进程流量监控方法,其特征在于,所述步骤S5包括:
S51:在hook函数中,根据记录网络数据包信息的struct sk_buff参数的sk_socket字段获取struct socket数据,
S52:根据struct socket数据的file字段获得struct file数据;
S53:根据struct file数据的f_path.dentry字段获得dentry数据;
S54:根据dentry数据的d_inode字段获得inode数据;
S55:根据inode数据的i_ino字段获取socket文件的inode号;
S56:根据inode号在进程与inode号的映射关系中确定网络数据包所属的进程名称。
6.根据权利要求5所述的基于Linux的进程流量监控方法,其特征在于,所述步骤S6包括:
S61:获取传输层头部长度,并计算出传输的数据流量;
S62:将传输的数据流量累加在对应的网络数据包所属的进程上,根据策略配置的进程流量上限对网络数据包做出是否丢弃的判断;
S63:把网络数据包所属的进程累计的上下行流量信息发送至系统应用层进行展示。
7.一种基于Linux的进程流量监控系统,其特征在于,包括:
获取模块,用于在系统应用层获取当前运行的进程名称,并根据进程名称获取对应的socket文件的inode号;
传输模块,用于把进程与inode号的映射关系通过netlink通信发到系统内核层,并保存;
挂载模块,用于系统内核层在netfilter模块的挂载点上挂载hook函数,用于对进出本机的网络数据包进行处理;
进程确定模块,用于在hook函数中获取网络数据包所属socket文件的inode号,进而确定产生网络流量的进程;
计算展示模块,用于计算产生网络流量的进程流量信息,并发送至系统应用层进行展示。
8.一种基于Linux的进程流量监控设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至6任一项所述基于Linux的进程流量监控方法步骤。
CN202011043274.0A 2020-09-28 2020-09-28 一种基于Linux的进程流量监控方法、系统及设备 Active CN112260889B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011043274.0A CN112260889B (zh) 2020-09-28 2020-09-28 一种基于Linux的进程流量监控方法、系统及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011043274.0A CN112260889B (zh) 2020-09-28 2020-09-28 一种基于Linux的进程流量监控方法、系统及设备

Publications (2)

Publication Number Publication Date
CN112260889A CN112260889A (zh) 2021-01-22
CN112260889B true CN112260889B (zh) 2022-03-11

Family

ID=74233230

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011043274.0A Active CN112260889B (zh) 2020-09-28 2020-09-28 一种基于Linux的进程流量监控方法、系统及设备

Country Status (1)

Country Link
CN (1) CN112260889B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113572751B (zh) * 2021-07-20 2023-05-09 杭州默安科技有限公司 一种网络流量的分析系统及其方法
CN115037516B (zh) * 2022-04-28 2024-06-14 统信软件技术有限公司 一种应用使用流量的统计方法、计算设备及存储介质
CN115599645B (zh) * 2022-10-13 2023-05-02 安芯网盾(北京)科技有限公司 一种linux驱动模块稳定性测试方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100799302B1 (ko) * 2006-06-21 2008-01-29 한국전자통신연구원 시스템 이벤트 정보를 이용한 은닉 프로세스 탐지 시스템및 방법
CN103034799B (zh) * 2012-12-14 2016-03-30 南京中孚信息技术有限公司 一种内核级的桌面访问控制方法
CN106330584B (zh) * 2015-06-19 2019-08-13 中国移动通信集团广东有限公司 一种业务流的识别方法及识别装置
CN106230662B (zh) * 2016-08-01 2019-04-23 北京小米移动软件有限公司 网络流量统计方法及装置
CN107026767B (zh) * 2017-03-30 2019-10-18 上海七牛信息技术有限公司 业务协议指标数据收集方法及系统
CN107623634A (zh) * 2017-10-12 2018-01-23 网宿科技股份有限公司 业务流量路由方法及其系统和移动电子设备
CN108400909B (zh) * 2018-02-12 2020-10-02 腾讯科技(深圳)有限公司 一种流量统计方法、装置、终端设备和存储介质
CN110213198A (zh) * 2018-02-28 2019-09-06 中标软件有限公司 网络流量的监控方法及系统
CN109977092B (zh) * 2019-03-26 2021-06-08 武汉深之度科技有限公司 一种复制文件的方法和计算设备
CN110071852B (zh) * 2019-04-22 2023-04-14 超越科技股份有限公司 基于Linux操作系统的程序网络流量监控方法及系统

Also Published As

Publication number Publication date
CN112260889A (zh) 2021-01-22

Similar Documents

Publication Publication Date Title
CN112260889B (zh) 一种基于Linux的进程流量监控方法、系统及设备
US20200322237A1 (en) Traffic detection method and traffic detection device
US8135979B2 (en) Collecting network-level packets into a data structure in response to an abnormal condition
US9426046B2 (en) Web page download time analysis
CN111124819B (zh) 全链路监控的方法和装置
CN109669795A (zh) 崩溃信息处理方法及装置
CN110191024B (zh) 网络流量监控方法和装置
CN111538885A (zh) 页面监听方法、装置、电子设备及存储介质
CN114039875B (zh) 一种基于eBPF技术的数据采集方法、装置及系统
CN106874319A (zh) 点击量的分布式统计方法及装置
CN111400378A (zh) 基于ElasticSearch的日志实时显示方法、装置、计算机设备和介质
US8140671B2 (en) Apparatus and method for sampling security events based on contents of the security events
CN113079062B (zh) 一种资源调整方法、装置、计算机设备和存储介质
CN114070755B (zh) 虚拟机网络流量确定方法、装置、电子设备和存储介质
CN103916463B (zh) 一种网络访问统计分析方法及系统
CN114598622B (zh) 数据监控方法及装置、存储介质、计算机设备
CN116451071A (zh) 样本标注方法、设备及可读存储介质
CN110868360B (zh) 流量统计方法、电子设备、系统及介质
CN114048059A (zh) 接口的超时时间调整方法、装置、计算机设备及存储介质
JP2005321910A (ja) ログデータ管理システム、方法、及びプログラム
KR101553923B1 (ko) 시스템 사용량 분석 장치 및 방법
CN104378442B (zh) 一种减少资源竞争的Trace文件转储方法
Flach et al. Diagnosing slow web page access at the client side
CN116048928B (zh) 一种业务监测方法、装置、电子设备及存储介质
CN114697319B (zh) 一种公有云的租户业务管理方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant