CN114189455B - 基于ebpf技术的容器网络流量监控统计方法及系统 - Google Patents

基于ebpf技术的容器网络流量监控统计方法及系统 Download PDF

Info

Publication number
CN114189455B
CN114189455B CN202111493395.XA CN202111493395A CN114189455B CN 114189455 B CN114189455 B CN 114189455B CN 202111493395 A CN202111493395 A CN 202111493395A CN 114189455 B CN114189455 B CN 114189455B
Authority
CN
China
Prior art keywords
data
relational database
request
ebpf
module
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
CN202111493395.XA
Other languages
English (en)
Other versions
CN114189455A (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.)
Industrial Bank Co Ltd
CIB Fintech Services Shanghai Co Ltd
Original Assignee
Industrial Bank Co Ltd
CIB Fintech Services Shanghai 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 Industrial Bank Co Ltd, CIB Fintech Services Shanghai Co Ltd filed Critical Industrial Bank Co Ltd
Priority to CN202111493395.XA priority Critical patent/CN114189455B/zh
Publication of CN114189455A publication Critical patent/CN114189455A/zh
Application granted granted Critical
Publication of CN114189455B publication Critical patent/CN114189455B/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
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/142Network analysis or design using statistical or mathematical methods
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • 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/163In-band adaptation of TCP data exchange; In-band control procedures
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing 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)
  • Algebra (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (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技术的容器网络流量监控统计方法及系统
技术领域
本发明涉及互联网技术领域,具体地,涉及基于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请求。
CN202111493395.XA 2021-12-08 2021-12-08 基于ebpf技术的容器网络流量监控统计方法及系统 Active CN114189455B (zh)

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 CN114189455A (zh) 2022-03-15
CN114189455B true 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)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117792960B (zh) * 2024-02-23 2024-04-30 中国电子科技集团公司第三十研究所 一种基于国产多核处理器的历史流量统计方法及装置

Citations (9)

* Cited by examiner, † Cited by third party
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

Patent Citations (9)

* Cited by examiner, † Cited by third party
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架构的负载均衡方法及装置

Also Published As

Publication number Publication date
CN114189455A (zh) 2022-03-15

Similar Documents

Publication Publication Date Title
WO2017101606A1 (zh) 一种数据采集分析系统和方法
CN107634848B (zh) 一种采集分析网络设备信息的系统和方法
WO2021189954A1 (zh) 日志数据处理方法、装置、计算机设备和存储介质
US11816172B2 (en) Data processing method, server, and computer storage medium
CN108512720B (zh) 一种网站流量的统计方法及装置
CN109474603B (zh) 数据抓包处理方法及终端设备
US11755531B1 (en) System and method for storage of data utilizing a persistent queue
CA3076319C (en) Systems and methods for device recognition
CN114189455B (zh) 基于ebpf技术的容器网络流量监控统计方法及系统
CN111740868A (zh) 告警数据的处理方法和装置及存储介质
WO2018156979A1 (en) Selective distribution of messages in a publish-subscribe system
CN111488377A (zh) 数据查询方法、装置、电子设备及存储介质
CN108710670A (zh) 一种日志分析方法、装置、电子设备及可读存储介质
US10003509B2 (en) Packet tracing
CN110011860A (zh) 基于网络流量分析的安卓应用识别方法
JP2016167799A (ja) ネットワークモニタリング方法及び装置、並びにパケットフィルタリング方法及び装置
CN110851334A (zh) 流量统计方法、电子设备、系统及介质
CN107665229B (zh) 信息搜索方法、装置及设备
US20240022507A1 (en) Information flow recognition method, network chip, and network device
CN112653657A (zh) 网络数据分析融合方法、系统、电子设备及存储介质
CN111198806A (zh) 一种基于服务开放平台的服务调用数据统计分析方法及系统
US11949547B2 (en) Enhanced simple network management protocol (SNMP) connector
CN115225544A (zh) 一种网络流量统计和监测方法、装置、电子设备及介质
CN110020166A (zh) 一种数据分析方法及相关设备
CN110868360B (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