CN114189455A - 基于ebpf技术的容器网络流量监控统计方法及系统 - Google Patents
基于ebpf技术的容器网络流量监控统计方法及系统 Download PDFInfo
- Publication number
- CN114189455A CN114189455A CN202111493395.XA CN202111493395A CN114189455A CN 114189455 A CN114189455 A CN 114189455A CN 202111493395 A CN202111493395 A CN 202111493395A CN 114189455 A CN114189455 A CN 114189455A
- Authority
- CN
- China
- Prior art keywords
- data
- relational database
- request
- http
- source
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
- H04L41/142—Network analysis or design using statistical or mathematical methods
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Algebra (AREA)
- Environmental & Geological Engineering (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Pure & Applied Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种基于ebpf技术的容器网络流量监控统计方法及系统,包括:步骤S1:获取容器tcp网络流量状态及http请求报文状态;步骤S2:将获取的容器tcp网络流量状态及http请求报文状态根据不同的数据类型写入消息队列,消费消息队列并写入非关系型数据库;步骤S3:ip‑scaner通过GET请求kubernetesAPI获取pod、replicas、service、node详情,并将pod、replicas、service、node信息写入关系型数据库;步骤S4:检索关系型数据库与非关系型数据库获取预设时间段内的流量大小以及http请求并进行展示。
Description
技术领域
本发明涉及互联网技术领域,具体地,涉及基于ebpf技术的容器网络流量监控统计方法及系统。
背景技术
在容器技术越来越被关注,对应地服务容器化已经成为一种趋势。Docker做为时下最流行的容器引擎,在生产环境得到了越来越广泛的应用。对于部署在容器中的服务,其对网络带宽资源的使用情况度量,以及对重点服务网络质量的保障,都成了必不可少的组成部分,直接影响到服务的运营质量。
目前对容器内的网络流量采集,普通采用了在容器内映射虚拟网卡,然后通过内核提供的/proc/net/dev接口(显示网络适配器及统计信息的接口)获取网络协议栈的网络出入流量及包量,从而达到统计的目的。
专利文献CN108696452B(申请号:201810468173.4)公开了一种容器级网络流量采集、网络质量标识方法、装置、系统,其中所述容器级网络流量采集方法包括:为容器配置类别标识符,使所述容器中的网络数据包具有对应的类别标识符;在网络数据包传入或传出网络协议栈时,获取所述网络数据包的类别标识符;对获取的所有网络数据包的类别标识符进行分类;并对分类得到的每类网络数据包进行统计,得到网络数据包的流量数据;根据内核文件系统接口,使上层用户态读取所述网络数据包的流量数据;获取根据所述网络数据包的流量数据得到对应容器的网络流量信息。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于ebpf技术的容器网络流量监控统计方法及系统。
根据本发明提供的一种基于ebpf技术的容器网络流量监控统计方法,包括:
步骤S1:获取容器tcp网络流量状态及http请求报文状态;
步骤S2:将获取的容器tcp网络流量状态及http请求报文状态根据不同的数据类型写入消息队列,消费消息队列并写入非关系型数据库;
步骤S3:ip-scaner通过GET请求kubernetes API获取pod、replicas、service、node详情,并将pod、replicas、service、node信息写入关系型数据库;
步骤S4:检索关系型数据库与非关系型数据库获取预设时间段内的流量大小以及http请求并进行展示。
优选地,所述步骤S1采用:
步骤S1.1:利用ebpf-probe调用docker API,获取节点上所有的docker容器的IP地址以及进程PID;
步骤S1.2:ebpf-probe通过bcc模块注入bpf代码到内核,基于进程PID获取容器tcp网络流量状态;
步骤S1.3:ebpf-probe基于容器tcp网络流量状态过滤http请求,获取http请求报文状态;
步骤S1.4:ebpf-probe通过POST接口将获取的容器tcp网络流量状态及http请求报文状态上传至data-receiver。
优选地,所述步骤S2采用:
步骤S2.1:data-receiver接收到ebpf-probe上传的数据后,根据不同的数据类型,将数据写入消息队列;其中,发送数据写入topic send-data,接受数据写入topicreceive-data,tcp请求详情写入topic http-stat-data;
步骤S2.2:data-analyzer消费消息队列并写入非关系型数据库。
优选地,所述步骤S2.2采用:
步骤S2.2.1:data-analyzer消费topic send-data,取出源地址、目的地址、传输数据大小,按照源地址、目的地址聚合传输数据大小,写入非关系型数据库。
步骤S2.2.2:data-analyzer消费topic receive-data,取出源地址、目的地址、传输数据大小、按照源地址、目的地址聚合传输数据大小,写入非关系型数据库。
步骤S2.2.3:data-analyzer消费topic http-stat-data,取出源地址、源端口、目的地址、目的端口、请求方法、请求host、请求URL、http响应状态码保存为http请求json,同时基于源地址、源端口,目的地址,目的端口,查询关系型数据库,得到通信双方的kubernetes资源对象;基于关系型数据库pod表检索源端IP,获取rs资源对象及ownreference,记录为源端服务;同时基于目的端IP记录目的端服务;将http请求json对象与源端、目的端服务同时写入非关系型数据库。
优选地,所述步骤S4采用:通过dashbord配合javascripts,向data-search发出查询请求;data-search同时检索关系型数据库与非关系型数据库,基于源地址、目的地址查询es index send-data,获取一段时间内结束时间-初始时间的流量差值,作为流量大小展示在前端页面;基于源地址、目的地址或源服务、目的服务、请求方法、请求host、状态码、请求URL、请求耗时,查询es index http-stat-data,展示一段时间内的http请求。
根据本发明提供的一种基于ebpf技术的容器网络流量监控统计系统,包括:
模块M1:获取容器tcp网络流量状态及http请求报文状态;
模块M2:将获取的容器tcp网络流量状态及http请求报文状态根据不同的数据类型写入消息队列,消费消息队列并写入非关系型数据库;
模块M3:ip-scaner通过GET请求kubernetes API获取pod、replicas、service、node详情,并将pod、replicas、service、node信息写入关系型数据库;
模块M4:检索关系型数据库与非关系型数据库获取预设时间段内的流量大小以及http请求并进行展示。
优选地,所述模块M1采用:
模块M1.1:利用ebpf-probe调用docker API,获取节点上所有的docker容器的IP地址以及进程PID;
模块M1.2:ebpf-probe通过bcc模块注入bpf代码到内核,基于进程PID获取容器tcp网络流量状态;
模块M1.3:ebpf-probe基于容器tcp网络流量状态过滤http请求,获取http请求报文状态;
模块M1.4:ebpf-probe通过POST接口将获取的容器tcp网络流量状态及http请求报文状态上传至data-receiver。
优选地,所述模块M2采用:
模块M2.1:data-receiver接收到ebpf-probe上传的数据后,根据不同的数据类型,将数据写入消息队列;其中,发送数据写入topic send-data,接受数据写入topicreceive-data,tcp请求详情写入topic http-stat-data;
模块M2.2:data-analyzer消费消息队列并写入非关系型数据库。
优选地,所述模块M2.2采用:
模块M2.2.1:data-analyzer消费topic send-data,取出源地址、目的地址、传输数据大小,按照源地址、目的地址聚合传输数据大小,写入非关系型数据库。
模块M2.2.2:data-analyzer消费topic receive-data,取出源地址、目的地址、传输数据大小、按照源地址、目的地址聚合传输数据大小,写入非关系型数据库。
模块M2.2.3:data-analyzer消费topic http-stat-data,取出源地址、源端口、目的地址、目的端口、请求方法、请求host、请求URL、http响应状态码保存为http请求json,同时基于源地址、源端口,目的地址,目的端口,查询关系型数据库,得到通信双方的kubernetes资源对象;基于关系型数据库pod表检索源端IP,获取rs资源对象及ownreference,记录为源端服务;同时基于目的端IP记录目的端服务;将http请求json对象与源端、目的端服务同时写入非关系型数据库。
优选地,所述模块M4采用:通过dashbord配合javascripts,向data-search发出查询请求;data-search同时检索关系型数据库与非关系型数据库,基于源地址、目的地址查询es index send-data,获取一段时间内结束时间-初始时间的流量差值,作为流量大小展示在前端页面;基于源地址、目的地址或源服务、目的服务、请求方法、请求host、状态码、请求URL、请求耗时,查询es index http-stat-data,展示一段时间内的http请求。
与现有技术相比,本发明具有如下的有益效果:本发明提出一种在kubernetes环境下,基于ebpf内核监控技术,针对集群网络流量及http状态码的监控方法,本发明能够覆盖多种kubernetes网络插件,监控pod-pod、pod-service流量方向及流量大小,并按照应用、服务名称生成可视化流量拓扑;同时并提供针对集群内部http请求的多维度分析能力和故障排查能力。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为基于ebpf技术的容器网络流量监控统计方法流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例1
根据本发明提供的一种基于ebpf技术的容器网络流量监控统计方法,如图1所示,包括:
步骤S1:获取容器tcp网络流量状态及http请求报文状态;
步骤S2:将获取的容器tcp网络流量状态及http请求报文状态根据不同的数据类型写入消息队列,消费消息队列并写入非关系型数据库;
步骤S3:ip-scaner通过GET请求kubernetes API获取pod、replicas、service、node详情,并将pod、replicas、service、node信息写入关系型数据库;
步骤S4:检索关系型数据库与非关系型数据库获取预设时间段内的流量大小以及http请求并进行展示。
具体地,所述步骤S1采用:
步骤S1.1:利用ebpf-probe调用docker API,获取节点上所有的docker容器的IP地址以及进程PID;
步骤S1.2:ebpf-probe通过bcc模块注入bpf代码到内核,通过kprobe程序监控tcp_sendmsg函数调用获取容器PID的tcp发送状态,通过kprobe成都监控tcp_cleanup_rbuf获取容器PID的tcp收包状态,获取数据包括源地址、目的地址、源端口、目的端口、数据大小;分别存入发送hash表及接受hash表,容器IP、源地址、目的地址、源端口、目的端口作为hash表key,数据大小作为value。
步骤S1.3:ebpf-probe通过ebpf cursor_advance函数,获取tcp/ip协议栈数据,包括源地址、目的地址,源端口,目的端口,时间戳,payload,payload截取前100字节,判断是否为http报文;若不为http报文,则丢弃;若为http报文,则取出请求方法、请求host、请求URL、报文长度,等待报文完整传输并接收到对端response后,得到http状态码,同时基于tcp timestamp计算请求耗时。将源地址、源端口、请求方法、请求URL、http响应状态码、耗时保存为http请求详情json对象。
步骤S1.4:ebpf-probe通过POST接口将获取的容器tcp网络流量状态及http请求报文状态上传至data-receiver。
具体地,所述步骤S2采用:
步骤S2.1:data-receiver接收到ebpf-probe上传的数据后,根据不同的数据类型,将数据写入消息队列;其中,发送数据写入topic send-data,接受数据写入topicreceive-data,tcp请求详情写入topic http-stat-data;
步骤S2.2:data-analyzer消费消息队列并写入非关系型数据库。
具体地,所述步骤S2.2采用:
步骤S2.2.1:data-analyzer消费topic send-data,取出源地址、目的地址、传输数据大小,按照源地址、目的地址聚合传输数据大小,写入非关系型数据库。
步骤S2.2.2:data-analyzer消费topic receive-data,取出源地址、目的地址、传输数据大小、按照源地址、目的地址聚合传输数据大小,写入非关系型数据库。
步骤S2.2.3:data-analyzer消费topic http-stat-data,取出源地址、源端口、目的地址、目的端口、请求方法、请求host、请求URL、http响应状态码保存为http请求json,同时基于源地址、源端口,目的地址,目的端口,查询关系型数据库,得到通信双方的kubernetes资源对象;基于关系型数据库pod表检索源端IP,获取rs资源对象及ownreference,记录为源端服务;同时基于目的端IP记录目的端服务;若对端为pod IP,则记录pod为目的服务;若对端为clusterIP+port,则记录service为目的服务;若对端为node节点+nodeport,则通过nodeport反查service信息,记录service未目的服务;最终,将http请求json对象与源端、目的端服务同时写入非关系型数据库。
具体地,所述步骤S3采用:ip-scaner通过GET请求kubernetes API,获取pod、replicas、service、node详情。其中,pod记录pod-name、pod-ip、namespace、replicas;replicas主要记录ownerreference中的kind、name;service记录service-name、service-type、clusterIP(如无则置为0)、nodeport(如无则置为0);node主要记录ip、hostname。将pod、replicas、service、node信息写入关系型数据库,pod的namespace、replicas作为联合外键关联replicas的namespace、name。
具体地,所述步骤S4采用:通过dashbord配合javascripts,向data-search发出查询请求;data-search同时检索关系型数据库与非关系型数据库,基于源地址、目的地址查询es index send-data,获取一段时间内结束时间-初始时间的流量差值,作为流量大小展示在前端页面;基于源地址、目的地址或源服务、目的服务、请求方法、请求host、状态码、请求URL、请求耗时,查询es index http-stat-data,展示一段时间内的http请求。
根据本发明提供的一种基于ebpf技术的容器网络流量监控统计系统,包括:
模块M1:获取容器tcp网络流量状态及http请求报文状态;
模块M2:将获取的容器tcp网络流量状态及http请求报文状态根据不同的数据类型写入消息队列,消费消息队列并写入非关系型数据库;
模块M3:ip-scaner通过GET请求kubernetes API获取pod、replicas、service、node详情,并将pod、replicas、service、node信息写入关系型数据库;
模块M4:检索关系型数据库与非关系型数据库获取预设时间段内的流量大小以及http请求并进行展示。
具体地,所述模块M1采用:
模块M1.1:利用ebpf-probe调用docker API,获取节点上所有的docker容器的IP地址以及进程PID;
模块M1.2:ebpf-probe通过bcc模块注入bpf代码到内核,通过kprobe程序监控tcp_sendmsg函数调用获取容器PID的tcp发送状态,通过kprobe成都监控tcp_cleanup_rbuf获取容器PID的tcp收包状态,获取数据包括源地址、目的地址、源端口、目的端口、数据大小;分别存入发送hash表及接受hash表,容器IP、源地址、目的地址、源端口、目的端口作为hash表key,数据大小作为value。
模块M1.3:ebpf-probe通过ebpf cursor_advance函数,获取tcp/ip协议栈数据,包括源地址、目的地址,源端口,目的端口,时间戳,payload,payload截取前100字节,判断是否为http报文;若不为http报文,则丢弃;若为http报文,则取出请求方法、请求host、请求URL、报文长度,等待报文完整传输并接收到对端response后,得到http状态码,同时基于tcp timestamp计算请求耗时。将源地址、源端口、请求方法、请求URL、http响应状态码、耗时保存为http请求详情json对象。
模块M1.4:ebpf-probe通过POST接口将获取的容器tcp网络流量状态及http请求报文状态上传至data-receiver。
具体地,所述模块M2采用:
模块M2.1:data-receiver接收到ebpf-probe上传的数据后,根据不同的数据类型,将数据写入消息队列;其中,发送数据写入topic send-data,接受数据写入topicreceive-data,tcp请求详情写入topic http-stat-data;
模块M2.2:data-analyzer消费消息队列并写入非关系型数据库。
具体地,所述模块M2.2采用:
模块M2.2.1:data-analyzer消费topic send-data,取出源地址、目的地址、传输数据大小,按照源地址、目的地址聚合传输数据大小,写入非关系型数据库。
模块M2.2.2:data-analyzer消费topic receive-data,取出源地址、目的地址、传输数据大小、按照源地址、目的地址聚合传输数据大小,写入非关系型数据库。
模块M2.2.3:data-analyzer消费topic http-stat-data,取出源地址、源端口、目的地址、目的端口、请求方法、请求host、请求URL、http响应状态码保存为http请求json,同时基于源地址、源端口,目的地址,目的端口,查询关系型数据库,得到通信双方的kubernetes资源对象;基于关系型数据库pod表检索源端IP,获取rs资源对象及ownreference,记录为源端服务;同时基于目的端IP记录目的端服务;若对端为pod IP,则记录pod为目的服务;若对端为clusterIP+port,则记录service为目的服务;若对端为node节点+nodeport,则通过nodeport反查service信息,记录service未目的服务;最终,将http请求json对象与源端、目的端服务同时写入非关系型数据库。
具体地,所述模块M3采用:ip-scaner通过GET请求kubernetes API,获取pod、replicas、service、node详情。其中,pod记录pod-name、pod-ip、namespace、replicas;replicas主要记录ownerreference中的kind、name;service记录service-name、service-type、clusterIP(如无则置为0)、nodeport(如无则置为0);node主要记录ip、hostname。将pod、replicas、service、node信息写入关系型数据库,pod的namespace、replicas作为联合外键关联replicas的namespace、name。
具体地,所述模块M4采用:通过dashbord配合javascripts,向data-search发出查询请求;data-search同时检索关系型数据库与非关系型数据库,基于源地址、目的地址查询es index send-data,获取一段时间内结束时间-初始时间的流量差值,作为流量大小展示在前端页面;基于源地址、目的地址或源服务、目的服务、请求方法、请求host、状态码、请求URL、请求耗时,查询es index http-stat-data,展示一段时间内的http请求。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种基于ebpf技术的容器网络流量监控统计方法,其特征在于,包括:
步骤S1:获取容器tcp网络流量状态及http请求报文状态;
步骤S2:将获取的容器tcp网络流量状态及http请求报文状态根据不同的数据类型写入消息队列,消费消息队列并写入非关系型数据库;
步骤S3:ip-scaner通过GET请求kubernetes API获取pod、replicas、service、node详情,并将pod、replicas、service、node信息写入关系型数据库;
步骤S4:检索关系型数据库与非关系型数据库获取预设时间段内的流量大小以及http请求并进行展示。
2.根据权利要求1所述的基于ebpf技术的容器网络流量监控统计方法,其特征在于,所述步骤S1采用:
步骤S1.1:利用ebpf-probe调用docker API,获取节点上所有的docker容器的IP地址以及进程PID;
步骤S1.2:ebpf-probe通过bcc模块注入bpf代码到内核,基于进程PID获取容器tcp网络流量状态;
步骤S1.3:ebpf-probe基于容器tcp网络流量状态过滤http请求,获取http请求报文状态;
步骤S1.4:ebpf-probe通过POST接口将获取的容器tcp网络流量状态及http请求报文状态上传至data-receiver。
3.根据权利要求1所述的基于ebpf技术的容器网络流量监控统计方法,其特征在于,所述步骤S2采用:
步骤S2.1:data-receiver接收到ebpf-probe上传的数据后,根据不同的数据类型,将数据写入消息队列;其中,发送数据写入topic send-data,接受数据写入topic receive-data,tcp请求详情写入topic http-stat-data;
步骤S2.2:data-analyzer消费消息队列并写入非关系型数据库。
4.根据权利要求3所述的基于ebpf技术的容器网络流量监控统计方法,其特征在于,所述步骤S2.2采用:
步骤S2.2.1:data-analyzer消费topic send-data,取出源地址、目的地址、传输数据大小,按照源地址、目的地址聚合传输数据大小,写入非关系型数据库。
步骤S2.2.2:data-analyzer消费topic receive-data,取出源地址、目的地址、传输数据大小、按照源地址、目的地址聚合传输数据大小,写入非关系型数据库。
步骤S2.2.3:data-analyzer消费topic http-stat-data,取出源地址、源端口、目的地址、目的端口、请求方法、请求host、请求URL、http响应状态码保存为http请求json,同时基于源地址、源端口,目的地址,目的端口,查询关系型数据库,得到通信双方的kubernetes资源对象;基于关系型数据库pod表检索源端IP,获取rs资源对象及ownreference,记录为源端服务;同时基于目的端IP记录目的端服务;将http请求json对象与源端、目的端服务同时写入非关系型数据库。
5.根据权利要求1所述的基于ebpf技术的容器网络流量监控统计方法,其特征在于,所述步骤S4采用:通过dashbord配合javascripts,向data-search发出查询请求;data-search同时检索关系型数据库与非关系型数据库,基于源地址、目的地址查询es indexsend-data,获取一段时间内结束时间-初始时间的流量差值,作为流量大小展示在前端页面;基于源地址、目的地址或源服务、目的服务、请求方法、请求host、状态码、请求URL、请求耗时,查询es index http-stat-data,展示一段时间内的http请求。
6.一种基于ebpf技术的容器网络流量监控统计系统,其特征在于,包括:
模块M1:获取容器tcp网络流量状态及http请求报文状态;
模块M2:将获取的容器tcp网络流量状态及http请求报文状态根据不同的数据类型写入消息队列,消费消息队列并写入非关系型数据库;
模块M3:ip-scaner通过GET请求kubernetes API获取pod、replicas、service、node详情,并将pod、replicas、service、node信息写入关系型数据库;
模块M4:检索关系型数据库与非关系型数据库获取预设时间段内的流量大小以及http请求并进行展示。
7.根据权利要求6所述的基于ebpf技术的容器网络流量监控统计系统,其特征在于,所述模块M1采用:
模块M1.1:利用ebpf-probe调用docker API,获取节点上所有的docker容器的IP地址以及进程PID;
模块M1.2:ebpf-probe通过bcc模块注入bpf代码到内核,基于进程PID获取容器tcp网络流量状态;
模块M1.3:ebpf-probe基于容器tcp网络流量状态过滤http请求,获取http请求报文状态;
模块M1.4:ebpf-probe通过POST接口将获取的容器tcp网络流量状态及http请求报文状态上传至data-receiver。
8.根据权利要求6所述的基于ebpf技术的容器网络流量监控统计系统,其特征在于,所述模块M2采用:
模块M2.1:data-receiver接收到ebpf-probe上传的数据后,根据不同的数据类型,将数据写入消息队列;其中,发送数据写入topic send-data,接受数据写入topic receive-data,tcp请求详情写入topic http-stat-data;
模块M2.2:data-analyzer消费消息队列并写入非关系型数据库。
9.根据权利要求8所述的基于ebpf技术的容器网络流量监控统计系统,其特征在于,所述模块M2.2采用:
模块M2.2.1:data-analyzer消费topic send-data,取出源地址、目的地址、传输数据大小,按照源地址、目的地址聚合传输数据大小,写入非关系型数据库。
模块M2.2.2:data-analyzer消费topic receive-data,取出源地址、目的地址、传输数据大小、按照源地址、目的地址聚合传输数据大小,写入非关系型数据库。
模块M2.2.3:data-analyzer消费topic http-stat-data,取出源地址、源端口、目的地址、目的端口、请求方法、请求host、请求URL、http响应状态码保存为http请求json,同时基于源地址、源端口,目的地址,目的端口,查询关系型数据库,得到通信双方的kubernetes资源对象;基于关系型数据库pod表检索源端IP,获取rs资源对象及ownreference,记录为源端服务;同时基于目的端IP记录目的端服务;将http请求json对象与源端、目的端服务同时写入非关系型数据库。
10.根据权利要求6所述的基于ebpf技术的容器网络流量监控统计系统,其特征在于,所述模块M4采用:通过dashbord配合javascripts,向data-search发出查询请求;data-search同时检索关系型数据库与非关系型数据库,基于源地址、目的地址查询es indexsend-data,获取一段时间内结束时间-初始时间的流量差值,作为流量大小展示在前端页面;基于源地址、目的地址或源服务、目的服务、请求方法、请求host、状态码、请求URL、请求耗时,查询es index http-stat-data,展示一段时间内的http请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111493395.XA CN114189455B (zh) | 2021-12-08 | 2021-12-08 | 基于ebpf技术的容器网络流量监控统计方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111493395.XA CN114189455B (zh) | 2021-12-08 | 2021-12-08 | 基于ebpf技术的容器网络流量监控统计方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114189455A true CN114189455A (zh) | 2022-03-15 |
CN114189455B CN114189455B (zh) | 2023-06-06 |
Family
ID=80603881
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111493395.XA Active CN114189455B (zh) | 2021-12-08 | 2021-12-08 | 基于ebpf技术的容器网络流量监控统计方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114189455B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117792960A (zh) * | 2024-02-23 | 2024-03-29 | 中国电子科技集团公司第三十研究所 | 一种基于国产多核处理器的历史流量统计方法及装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107454109A (zh) * | 2017-09-22 | 2017-12-08 | 杭州安恒信息技术有限公司 | 一种基于http流量分析的网络窃密行为检测方法 |
CN109117634A (zh) * | 2018-09-05 | 2019-01-01 | 济南大学 | 基于网络流量多视图融合的恶意软件检测方法及系统 |
CN110138797A (zh) * | 2019-05-27 | 2019-08-16 | 北京知道创宇信息技术股份有限公司 | 一种报文处理方法及装置 |
US10742557B1 (en) * | 2018-06-29 | 2020-08-11 | Juniper Networks, Inc. | Extending scalable policy management to supporting network devices |
CN112202940A (zh) * | 2020-10-27 | 2021-01-08 | 杭州朗澈科技有限公司 | 一种kubernetes对外暴露Pod服务方式 |
CN112217676A (zh) * | 2020-10-13 | 2021-01-12 | 北京工业大学 | 一种基于混合元启发式算法的Kubernetes容器集群节点选取方法 |
CN113168410A (zh) * | 2019-02-14 | 2021-07-23 | 华为技术有限公司 | 增强对关系型数据库的查询处理的系统和方法 |
CN113568711A (zh) * | 2021-08-04 | 2021-10-29 | 上海仪电(集团)有限公司中央研究院 | 一种K8S中使用的基于eBPF架构的负载均衡方法及装置 |
WO2021226462A1 (en) * | 2020-05-08 | 2021-11-11 | Ribbon Communications Operating Company, Inc. | Networking as a service |
-
2021
- 2021-12-08 CN CN202111493395.XA patent/CN114189455B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107454109A (zh) * | 2017-09-22 | 2017-12-08 | 杭州安恒信息技术有限公司 | 一种基于http流量分析的网络窃密行为检测方法 |
US10742557B1 (en) * | 2018-06-29 | 2020-08-11 | Juniper Networks, Inc. | Extending scalable policy management to supporting network devices |
CN109117634A (zh) * | 2018-09-05 | 2019-01-01 | 济南大学 | 基于网络流量多视图融合的恶意软件检测方法及系统 |
CN113168410A (zh) * | 2019-02-14 | 2021-07-23 | 华为技术有限公司 | 增强对关系型数据库的查询处理的系统和方法 |
CN110138797A (zh) * | 2019-05-27 | 2019-08-16 | 北京知道创宇信息技术股份有限公司 | 一种报文处理方法及装置 |
WO2021226462A1 (en) * | 2020-05-08 | 2021-11-11 | Ribbon Communications Operating Company, Inc. | Networking as a service |
CN112217676A (zh) * | 2020-10-13 | 2021-01-12 | 北京工业大学 | 一种基于混合元启发式算法的Kubernetes容器集群节点选取方法 |
CN112202940A (zh) * | 2020-10-27 | 2021-01-08 | 杭州朗澈科技有限公司 | 一种kubernetes对外暴露Pod服务方式 |
CN113568711A (zh) * | 2021-08-04 | 2021-10-29 | 上海仪电(集团)有限公司中央研究院 | 一种K8S中使用的基于eBPF架构的负载均衡方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117792960A (zh) * | 2024-02-23 | 2024-03-29 | 中国电子科技集团公司第三十研究所 | 一种基于国产多核处理器的历史流量统计方法及装置 |
CN117792960B (zh) * | 2024-02-23 | 2024-04-30 | 中国电子科技集团公司第三十研究所 | 一种基于国产多核处理器的历史流量统计方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114189455B (zh) | 2023-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106209506B (zh) | 一种虚拟化深度包检测流量分析方法及系统 | |
US11226964B1 (en) | Automated generation of metrics from log data | |
CN107634848B (zh) | 一种采集分析网络设备信息的系统和方法 | |
US11816172B2 (en) | Data processing method, server, and computer storage medium | |
US20200372007A1 (en) | Trace and span sampling and analysis for instrumented software | |
CN109684052B (zh) | 事务分析方法、装置、设备及存储介质 | |
US11755531B1 (en) | System and method for storage of data utilizing a persistent queue | |
CN108256092B (zh) | 设备上的组合活动历史 | |
US11663219B1 (en) | Determining a set of parameter values for a processing pipeline | |
CN105577411B (zh) | 基于服务起源的云服务监控方法和装置 | |
US20180248977A1 (en) | Selective distribution of messages in a publish-subscribe system | |
CA3076319C (en) | Systems and methods for device recognition | |
US20210311909A1 (en) | Method And System For Deleting Obsolete Files From A File System | |
CN114385444A (zh) | 基于elk的可视化网络日志分析监控平台 | |
US10003509B2 (en) | Packet tracing | |
CN114189455B (zh) | 基于ebpf技术的容器网络流量监控统计方法及系统 | |
WO2017000592A1 (zh) | 数据处理方法、装置及系统 | |
CN104202389A (zh) | 云环境下的存储空间和运行状态的监测方法及云存储系统 | |
US20190297131A1 (en) | System and Method for Querying and Updating a Live Video Stream Using a Structured Query Language | |
US20240022507A1 (en) | Information flow recognition method, network chip, and network device | |
CA2987316A1 (en) | Local object instance discovery for metric collection on network elements | |
CN110633191A (zh) | 实时监控软件系统业务健康度的方法和系统 | |
US11949547B2 (en) | Enhanced simple network management protocol (SNMP) connector | |
CN103077210B (zh) | 一种基于云计算的数据获取方法及系统 | |
US20230237049A1 (en) | Artifact life tracking storage |
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 |