CN107026767B - 业务协议指标数据收集方法及系统 - Google Patents
业务协议指标数据收集方法及系统 Download PDFInfo
- Publication number
- CN107026767B CN107026767B CN201710199902.6A CN201710199902A CN107026767B CN 107026767 B CN107026767 B CN 107026767B CN 201710199902 A CN201710199902 A CN 201710199902A CN 107026767 B CN107026767 B CN 107026767B
- Authority
- CN
- China
- Prior art keywords
- data
- protocol
- service
- flows
- 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
Links
Classifications
-
- 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
-
- 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
-
- 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/02—Protocol performance
-
- 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/08—Protocols for interworking; Protocol conversion
-
- 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/06—Management of faults, events, alarms or notifications
- H04L41/0677—Localisation of faults
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Environmental & Geological Engineering (AREA)
- Debugging And Monitoring (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种业务协议指标数据收集方法及系统,本发明采用被动协议栈解析技术,用获取到的业务流量去驱动协议栈的状态转变;通过将流量数据正确地归属到源和目标进程,自动将该目标进程的服务纳入为监控对象,实现监控对象的自动发现;通过将流量数据正确地归属到源和目标进程,可以自动推演出服务之间的业务关联信息,在产生联动异常时,可以根据进程的服务之间的关联正确识别出异常的根源服务对象,从而帮助运维人员更加快速地定位异常;使用纯旁路的方式获取业务流量数据,该监控方式对业务方没有任何侵入性要求;通过在Linux内核模块中插入流量数据拷贝模块,能够获取到二层包级别的完整物理流量,获取到的数据更加完整。
Description
技术领域
本发明涉及一种业务协议指标数据收集方法及系统。
背景技术
随着互联网行业技术与业务的高速发展,越来越多的人开始享受到互联网在线服务带来的便利,而在线服务提供商也面临着越来越大的业务请求压力。为了适应日益增长的业务压力,各家服务提供商都开始将服务端架构往微服务、分布式的方向迁徙和演化。
虽然服务端架构可以通过分布式、微服务的方法获取水平伸缩的能力,但通常分布式架构会给系统带来额外的运维复杂性,不同组件之间的交互会也会越来越错综复杂,而这些复杂性还会随着时间的积累日益增长,非常不利于系统本身的运维工作。
因此,为了及时地了解到线上服务的状况和任何异常,运维监控系统就显得更加重要。它通常能够实时地展现当前以及历史一段时间内线上服务的运行状况,并通过告警的方式让系统维护者能够及时地了解到线上的异常情况。
运维监控系统通常分为三个模块:
1.指标数据收集模块;
2.指标数据存储模块(包含对数据的压缩、滚动、持久化等);
3.指标数据告警模块;
当前市面上已经涌现出许多开源和商业的监控系统方案,例如:Zabbix,Nagios等。但通常这些方案的指标数据收集模块都具有一些共同缺陷:
1.均无法默认获取到业务级别的数据,仅停留在机器资源层面;
2.如果需要获取到业务级指标数据,那么需要对业务服务做具有侵入性或定制性的修改,例如使用监控方提供的SDK,才能在监控系统中观察到业务指标(例如每秒请求次数、延迟之类),或者监控系统主动适配业务服务产生的日志等信息;
3.即使业务方埋入了业务级指标代码,但自身也通常难以获得一些相对底层的指标数据(因为通常底层细节被操作系统内核封装);
4.即使业务方埋入了业务级指标代码,监控系统也无法理解业务方自主提供的指标的具体含义;
5.若使用对业务日志(或业务服务产生的其他旁路数据)的解析进行指标收集,那么该收集模块则难以具备通用性(因为日志是非标准化的数据结构);
6.在不侵入业务和架构的情况下,无法获取到业务之间的关联信息,例如拓扑;
7.无法自动发现需要被监控的服务,大多需要人为进行配置,在大规模的集群中通常非常耗时耗力。
上述难点造成的后果则是:
1.业务方需要花费额外的研发精力去适配监控系统;
2.对于一个运行已久的系统,侵入性的监控方案通常难以推进;
3.监控系统无法理解业务的运行模式和结构,无法做出相对智能的判断;
4.运维人员需要在监控系统上花费大量精力用于配置工作(配置监控对象等)。
发明内容
本发明的目的在于提供一种业务协议指标数据收集方法及系统,能够更加正确完整的业务协议指标数据,对业务方没有任何侵入性要求,实现监控对象的自动发现。
为解决上述问题,本发明提供一种业务协议指标数据收集方法,包括:
在Linux内核模块中插入流量数据拷贝模块,通过流量数据拷贝模块将进入协议栈的流量数据额外拷贝一份出来作为原始报文数据;
通过链路层流量获取模块从所述流量数据拷贝模块获取到所述原始报文数据后,将原始报文数据放入第一无锁共享内存队列;
通过传输层的用户态被动协议状态机从所述第一无锁共享内存队列中读取到原始报文数据后,进行传输层的被动协议解析,还原出业务系统中的传输层协议状态;
通过应用层的用户态被动协议状态机根据接收到经过传输层的被动协议解析后的原始报文数据,还原出业务系统中的应用层协议状态;
通过内核层的流量归属记录模块记录所述流量数据的归属进程的事件,用户态的流量归属查询模块根据所述事件确定所述流量数据中所承载的业务协议的发起方和接收方;
根据所述业务系统中的传输层协议状态、应用层协议状态及所述流量数据中所承载的业务协议的发起方和接收方生成业务协议指标数据。
进一步的,在上述方法中,内核层的流量归属记录模块记录所述流量数据的归属进程的事件,包括:
所述用户态的流量归属查询模块通过第二无锁内存共享队列,获取到内核中流量归属记录模块记录的所述流量数据的归属进程的事件。
进一步的,在上述方法中,所述用户态的流量归属查询模块通过第二无锁内存共享队列,获取到内核中流量归属记录模块记录的所述流量数据的归属进程的事件,包括:
所述内核层的流量归属记录模块通过劫持内核中的特定入口函数以获取到所述流量数据的归属进程,并包装成一个事件放入所述第二无锁内存共享队列,供所述流量归属查询模块读取。
进一步的,在上述方法中,所述业务协议指标数据包括传输层TCP协议的握手耗时和/或传输层TCP握手成功后,应用层开始真正响应TCP连接的延迟。
进一步的,在上述方法中,所述业务协议指标数据包括应用层HTTP协议中当前响应和请求之间的延迟时间和/或应用层HTTP协议中不同HTTP状态码和HTTP应用程序编程接口各自的响应延迟时间。
根据本发明的另一面,提供一种业务协议指标数据收集系统,包括:
插入于Linux内核模块中流量数据拷贝模块,用于将进入协议栈的流量数据额外拷贝一份出来作为原始报文数据;
链路层流量获取模块,用于从所述流量数据拷贝模块获取到所述原始报文数据后,将原始报文数据放入第一无锁共享内存队列;
传输层的用户态被动协议状态机,用于从所述第一无锁共享内存队列中读取到原始报文数据后,进行传输层的被动协议解析,还原出业务系统中的传输层协议状态;
应用层的用户态被动协议状态机,用于根据接收到经过传输层的被动协议解析后的原始报文数据,还原出业务系统中的应用层协议状态;
内核层的流量归属记录模块,用于记录所述流量数据的归属进程的事件,
用户态的流量归属查询模块,用于根据所述事件确定所述流量数据中所承载的业务协议的发起方和接收方;
生成模块,用于根据所述业务系统中的传输层协议状态、应用层协议状态及所述流量数据中所承载的业务协议的发起方和接收方生成业务协议指标数据。
进一步的,在上述系统中,所述用户态的流量归属查询模块,通过第二无锁内存共享队列,获取到内核中流量归属记录模块记录的所述流量数据的归属进程的事件。
进一步的,在上述系统中,所述用户态的流量归属查询模块,通过劫持内核中的特定入口函数以获取到所述流量数据的归属进程,并包装成一个事件放入所述第二无锁内存共享队列,供所述流量归属查询模块读取。
进一步的,在上述系统中,所述业务协议指标数据包括传输层TCP协议的握手耗时和/或传输层TCP握手成功后,应用层开始真正响应TCP连接的延迟。
进一步的,在上述系统中,所述业务协议指标数据包括应用层HTTP协议中当前响应和请求之间的延迟时间和/或应用层HTTP协议中不同HTTP状态码和HTTP应用程序编程接口各自的响应延迟时间。
与现有技术相比,本发明采用被动协议栈解析技术,即设计了一个被动的协议状态机,例如TCP协议,包括传输层和应用层的用户态被动协议状态机,将物理流量进行实时的高速解析,可以正确识别出业务方所使用的业务协议(例如TCP、HTTP、HTTP/2、MySQL等),然后针对不同的协议使用预定义好的、有限的指标收集逻辑从而还原出内核中真实的协议栈状态,即用获取到的业务流量去驱动这个协议栈的状态转变;另外,通过将流量数据正确地归属到源和目标进程,从而自动将该目标进程的服务纳入为监控对象,实现监控对象的自动发现;此外,通过将流量数据正确地归属到源和目标进程,从而可以自动推演出服务之间的业务关联信息,在产生联动异常时,可以根据进程的服务之间的关联正确识别出异常的根源服务对象,从而帮助运维人员更加快速地定位异常;而且,由于通过在Linux内核模块中插入流量数据拷贝模块,实现使用纯旁路的方式获取业务流量数据,因此该监控方式对业务方没有任何侵入性要求,而业务层协议通常有着标准的定义作为约束,因此该方式对所有使用同类协议的服务都有效能;最后,由于通过在Linux内核模块中插入流量数据拷贝模块,能够获取到二层包级别的完整物理流量,因此本监控方式可以获取到很多原本被操作系统内核封装掉的底层细节数据,比其他监控方式获取到的数据更加完整。
附图说明
图1是本发明一实施例的业务协议指标数据收集模块架构图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明描述了一种新型的业务协议指标数据收集方法及系统,在大部分场合下可以比较好地弥补以下几点技术缺陷:
1.监控系统如何在既能够获得业务层数据的同时,又不失通用性;
2.如何比现有所有监控方式获取到更加完整的业务协议指标数据;
3.如何简化监控系统本身的配置工作,做到监控对象的自主发现;
4.如何能做到让上层监控系统通过更全维度的指标数据理解一个复杂系统的架构和工作方式,并智能地帮助运维人员缩短异常定位时间。
为了解决上述的几个问题,本发明采用了如下的技术方案:和市面上大部分运维监控系统“以配置为中心”的设计思想不同,本发明的监控方法及系统从服务器产生的物理流量出发,即“以数据为中心”推演出其他所有监控指标。
如图1所示,本发明提供一种业务协议指标数据收集方法,包括:
在Linux内核模块中插入流量数据拷贝模块S01,通过流量数据拷贝模块S01将进入协议栈的流量数据额外拷贝一份出来作为原始报文数据,同时不影响原有协议栈和上层业务系统的运行;
通过链路层流量获取模块S02从所述流量数据拷贝模块获取到所述原始报文数据后,将原始报文数据放入第一无锁共享内存队列S03,以供后续用户态被动协议状态机进行实时解析;在此,内核态通过与用户态的解析模块共享一块第一无锁内存队列以传递原始报文数据;
通过传输层的用户态被动协议状态机S04从所述第一无锁共享内存队列中读取到原始报文数据后,进行传输层的被动协议解析,还原出业务系统中的传输层协议状态;
通过应用层的用户态被动协议状态机S05根据接收到经过传输层的被动协议解析后原始报文数据,还原出业务系统中的应用层协议状态;在此,原始报文数据经过传输层的用户态被动协议状态机解析后,会转化为流式数据并传送给应用层的用户态被动协议状态机,还原出业务系统中的应用层协议状态;
在正确获取到业务系统中的传输层协议状态和应用层协议状态后,通过流量归属记录模块S08记录所述流量数据的归属进程的事件,用户态的流量归属查询模块S06根据所述事件确定所述流量数据中所承载的业务协议的发起方和接收方;在此,在正确获取到业务系统中的传输层协议状态和应用层协议状态后,通过流量归属查询模块获取到该协议数据的发起方和接收方;
根据所述业务系统中的传输层协议状态、应用层协议状态及所述流量数据中所承载的业务协议的发起方和接收方生成业务协议指标数据。在解析完流量所承载的业务协议、并正确获取到流量的归属服务后,就已经可以产生一系列的业务协议指标数据,例如传输层的握手耗时、流量带宽,以及应用层的每秒请求数量、耗时等数据。本发明采用被动协议栈解析技术,即设计了一个被动的协议状态机,例如TCP协议,包括传输层和应用层的用户态被动协议状态机,将物理流量进行实时的高速解析,可以正确识别出业务方所使用的业务协议(例如TCP、HTTP、HTTP/2、MySQL等),然后针对不同的协议使用预定义好的、有限的指标收集逻辑从而还原出内核中真实的协议栈状态,即用获取到的业务流量去驱动这个协议栈的状态转变;另外,通过将流量数据正确地归属到源和目标进程,从而自动将该目标进程的服务纳入为监控对象,实现监控对象的自动发现;此外,通过将流量数据正确地归属到源和目标进程,从而可以自动推演出服务之间的业务关联信息,在产生联动异常时,可以根据进程的服务之间的关联正确识别出异常的根源服务对象,从而帮助运维人员更加快速地定位异常;而且,由于通过在Linux内核模块中插入流量数据拷贝模块,实现使用纯旁路的方式获取业务流量数据,因此该监控方式对业务方没有任何侵入性要求,而业务层协议通常有着标准的定义作为约束,因此该方式对所有使用同类协议的服务都有效能;最后,由于通过在Linux内核模块中插入流量数据拷贝模块,能够获取到二层包级别的完整物理流量,因此本监控方式可以获取到很多原本被操作系统内核封装掉的底层细节数据,比其他监控方式获取到的数据更加完整。
本发明一实施例中,如图1所示,所述用户态的流量归属查询模块S06通过第二无锁内存共享队列S07,获取到内核中流量归属记录模块记录的所述流量数据的归属进程的事件。
本发明一实施例中,如图1所示,所述用户态的流量归属查询模块通过第二无锁内存共享队列,获取到内核中流量归属记录模块记录的所述流量数据的归属进程的事件,包括:
所述内核层的流量归属记录模块S08通过劫持内核中的特定入口函数以获取到所述流量数据的归属进程,并包装成一个事件放入所述第二无锁内存共享队列S07,供所述流量归属查询模块读取。
本发明一实施例中,所述业务协议指标数据包括传输层TCP协议的握手耗时是多久和/或传输层TCP握手成功后,应用层开始真正响应TCP连接的延迟是多久。
本发明一实施例中,所述业务协议指标数据包括应用层HTTP协议中当前响应和请求之间的延迟时间(用于评估服务端业务性能)和/或应用层HTTP协议中不同HTTP状态码(HTTP Status Code)和HTTP应用程序编程接口(HTTP API)各自的响应延迟时间。
详细的,图1为本实施例的业务协议指标数据收集模块架构图。该模块包括:流量数据拷贝模块S01、链路层流量获取模块S02、流量归属记录模块S08、被动协议状态机(传输层)S04、被动协议状态机(应用层)S05、流量归属查询模块S06。
其中,流量数据拷贝模块S01和链路层流量获取模块S02,是为了将原始报文数据在旁路拷贝出一份并记录下来。这两个模块在启动时需申请一段大小的内核内存空间,并将这段内存空间映射到用户态空间,然后将这段内存组织成无锁队列的使用接口。接下来的实现过程需借助Linux内核协议栈中的一套钩子扩展系统,在链路层的入口处将原始报文数据截取下来,并独立拷贝出一份后,将原来的那份继续传递给Linux内核协议栈的后续流程,并同时将拷贝出来的那份提交给启动时申请的内存空间中。
用户态的被动协议状态机(传输层)会使用Linux Poll机制轮询链路层流量获取模块创造出来的第一无锁共享内存队列S03,当链路层有新的数据报文到达时,被动协议状态机(传输层)会收到通知并从第一无锁共享内存队列S03中获取最新的报文数据。然后用户态的被动协议状态机(传输层)对报文数据进行传输层协议的识别和解析。例如识别出数据报文属于TCP协议,那么可以生成TCP对应的状态数据结构,并按照TCP协议对数据报文进一步解析其相应的状态字段,且按照对应的状态更新状态数据结构中的状态字段。
在完成了传输层协议状态解析后,就可以将数据报文拼接成数据流传递给应用层的用户态被动协议状态机,应用层的用户态被动协议状态机同样可以靠数据识别出应用层对应的类型,并更新相应协议的状态数据结构。
在传输层和应用层对数据报文进行状态解析的过程中,可以产生多种有价值的指标数据,例如:
1.传输层TCP协议的握手耗时是多久;
2.传输层TCP握手成功后,应用层开始真正响应该TCP连接的延迟是多久;
3.应用层HTTP协议中当前响应和请求之间的延迟时间(用于评估服务端业务性能);
4.应用层HTTP协议中不同HTTP Status Code和HTTP API各自的响应延迟时间。
接下来可以通过流量归属记录模块S08和流量归属查询模块S06获取到当前解析流量的所属进程。通常对于客户端发起的流量来说,目前主流的Linux内核版本均不支持查询已终止连接上的流量的归属客户端进程(即这个流量在当时是由哪个进程发起)。而内核中的流量归属记录模块S08则用于这个目的,它会根据IP地址和端口信息记录下所有流量当时的归属进程,并放入到内核无锁内存队列中,供用户态的流量归属查询模块查询。
如图1所示,本发明还提供另一种业务协议指标数据收集系统,包括:
插入于Linux内核模块中流量数据拷贝模块,用于将进入协议栈的流量数据额外拷贝一份出来作为原始报文数据;
链路层流量获取模块,用于从所述流量数据拷贝模块获取到所述原始报文数据后,将原始报文数据放入第一无锁共享内存队列;
传输层的用户态被动协议状态机,用于从所述第一无锁共享内存队列中读取到原始报文数据后,进行传输层的被动协议解析,还原出业务系统中的传输层协议状态;
应用层的用户态被动协议状态机,用于根据接收到经过传输层的被动协议解析后原始报文数据,还原出业务系统中的应用层协议状态;
内核层的流量归属记录模块,用于记录所述流量数据的归属进程的事件,
用户态的流量归属查询模块,用于根据所述事件确定所述流量数据中所承载的业务协议的发起方和接收方;
生成模块,用于根据所述业务系统中的传输层协议状态、应用层协议状态及所述流量数据中所承载的业务协议的发起方和接收方生成业务协议指标数据。
本发明业务协议指标数据收集系统一实施例中,所述用户态的流量归属查询模块,通过第二无锁内存共享队列,获取到内核中流量归属记录模块记录的所述流量数据的归属进程的事件。
本发明业务协议指标数据收集系统一实施例中,所述用户态的流量归属查询模块,通过劫持内核中的特定入口函数以获取到所述流量数据的归属进程,并包装成一个事件放入所述第二无锁内存共享队列,供所述流量归属查询模块读取。
本发明业务协议指标数据收集系统一实施例中,所述业务协议指标数据包括传输层TCP协议的握手耗时和/或传输层TCP握手成功后,应用层开始真正响应TCP连接的延迟。
本发明业务协议指标数据收集系统一实施例中,所述业务协议指标数据包括应用层HTTP协议中当前响应和请求之间的延迟时间和/或应用层HTTP协议中不同HTTP状态码和HTTP应用程序编程接口各自的响应延迟时间。
综上所述,本发明采用被动协议栈解析技术,即设计了一个被动的协议状态机,例如TCP协议,包括传输层和应用层的用户态被动协议状态机,将物理流量进行实时的高速解析,可以正确识别出业务方所使用的业务协议(例如TCP、HTTP、HTTP/2、MySQL等),然后针对不同的协议使用预定义好的、有限的指标收集逻辑从而还原出内核中真实的协议栈状态,即用获取到的业务流量去驱动这个协议栈的状态转变;另外,通过将流量数据正确地归属到源和目标进程,从而自动将该目标进程的服务纳入为监控对象,实现监控对象的自动发现;此外,通过将流量数据正确地归属到源和目标进程,从而可以自动推演出服务之间的业务关联信息,在产生联动异常时,可以根据进程的服务之间的关联正确识别出异常的根源服务对象,从而帮助运维人员更加快速地定位异常;而且,由于通过在Linux内核模块中插入流量数据拷贝模块,实现使用纯旁路的方式获取业务流量数据,因此该监控方式对业务方没有任何侵入性要求,而业务层协议通常有着标准的定义作为约束,因此该方式对所有使用同类协议的服务都有效能;最后,由于通过在Linux内核模块中插入流量数据拷贝模块,能够获取到二层包级别的完整物理流量,因此本监控方式可以获取到很多原本被操作系统内核封装掉的底层细节数据,比其他监控方式获取到的数据更加完整。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
显然,本领域的技术人员可以对发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (10)
1.一种业务协议指标数据收集方法,其特征在于,包括:
在Linux内核模块中插入流量数据拷贝模块,通过流量数据拷贝模块将进入协议栈的流量数据额外拷贝一份出来作为原始报文数据;
通过链路层流量获取模块从所述流量数据拷贝模块获取到所述原始报文数据后,将原始报文数据放入第一无锁共享内存队列;
通过传输层的用户态被动协议状态机从所述第一无锁共享内存队列中读取到原始报文数据后,进行传输层的被动协议解析,还原出业务系统中的传输层协议状态;
通过应用层的用户态被动协议状态机,根据接收到经过传输层的被动协议解析后的原始报文数据,还原出业务系统中的应用层协议状态;
通过内核层的流量归属记录模块记录所述流量数据的归属进程的事件,用户态的流量归属查询模块根据所述事件确定所述流量数据中所承载的业务协议的发起方和接收方;
根据所述业务系统中的传输层协议状态、应用层协议状态及所述流量数据中所承载的业务协议的发起方和接收方生成业务协议指标数据。
2.如权利要求1所述的业务协议指标数据收集方法,其特征在于,内核层的流量归属记录模块记录所述流量数据的归属进程的事件,包括:
所述用户态的流量归属查询模块通过第二无锁内存共享队列,获取到内核中流量归属记录模块记录的所述流量数据的归属进程的事件。
3.如权利要求2所述的业务协议指标数据收集方法,其特征在于,所述用户态的流量归属查询模块通过第二无锁内存共享队列,获取到内核中流量归属记录模块记录的所述流量数据的归属进程的事件,包括:
所述内核层的流量归属记录模块通过劫持内核中的特定入口函数以获取到所述流量数据的归属进程,并包装成一个事件放入所述第二无锁内存共享队列,供所述流量归属查询模块读取。
4.如权利要求1所述的业务协议指标数据收集方法,其特征在于,所述业务协议指标数据包括传输层TCP协议的握手耗时和/或传输层TCP握手成功后,应用层开始真正响应TCP连接的延迟。
5.如权利要求1至4任一项所述的业务协议指标数据收集方法,其特征在于,所述业务协议指标数据包括应用层HTTP协议中当前响应和请求之间的延迟时间和/或应用层HTTP协议中不同HTTP状态码和HTTP应用程序编程接口各自的响应延迟时间。
6.一种业务协议指标数据收集系统,其特征在于,包括:
插入于Linux内核模块中流量数据拷贝模块,用于将进入协议栈的流量数据额外拷贝一份出来作为原始报文数据;
链路层流量获取模块,用于从所述流量数据拷贝模块获取到所述原始报文数据后,将原始报文数据放入第一无锁共享内存队列;
传输层的用户态被动协议状态机,用于从所述第一无锁共享内存队列中读取到原始报文数据后,进行传输层的被动协议解析,还原出业务系统中的传输层协议状态;
应用层的用户态被动协议状态机,用于根据接收到经过传输层的被动协议解析后的原始报文数据,还原出业务系统中的应用层协议状态;
内核层的流量归属记录模块,用于记录所述流量数据的归属进程的事件,
用户态的流量归属查询模块,用于根据所述事件确定所述流量数据中所承载的业务协议的发起方和接收方;
生成模块,用于根据所述业务系统中的传输层协议状态、应用层协议状态及所述流量数据中所承载的业务协议的发起方和接收方生成业务协议指标数据。
7.如权利要求6所述的业务协议指标数据收集系统,其特征在于,所述用户态的流量归属查询模块,通过第二无锁内存共享队列,获取到内核中流量归属记录模块记录的所述流量数据的归属进程的事件。
8.如权利要求7所述的业务协议指标数据收集系统,其特征在于,所述用户态的流量归属查询模块,通过劫持内核中的特定入口函数以获取到所述流量数据的归属进程,并包装成一个事件放入所述第二无锁内存共享队列,供所述流量归属查询模块读取。
9.如权利要求6所述的业务协议指标数据收集系统,其特征在于,所述业务协议指标数据包括传输层TCP协议的握手耗时和/或传输层TCP握手成功后,应用层开始真正响应TCP连接的延迟。
10.如权利要求6至9任一项所述的业务协议指标数据收集系统,其特征在于,所述业务协议指标数据包括应用层HTTP协议中当前响应和请求之间的延迟时间和/或应用层HTTP协议中不同HTTP状态码和HTTP应用程序编程接口各自的响应延迟时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710199902.6A CN107026767B (zh) | 2017-03-30 | 2017-03-30 | 业务协议指标数据收集方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710199902.6A CN107026767B (zh) | 2017-03-30 | 2017-03-30 | 业务协议指标数据收集方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107026767A CN107026767A (zh) | 2017-08-08 |
CN107026767B true CN107026767B (zh) | 2019-10-18 |
Family
ID=59526396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710199902.6A Active CN107026767B (zh) | 2017-03-30 | 2017-03-30 | 业务协议指标数据收集方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107026767B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960621A (zh) * | 2017-12-22 | 2019-07-02 | 南京欣网互联网络科技有限公司 | 一种基于大数据可视化监控平台的数据抽取方法 |
CN108509313B (zh) * | 2018-03-23 | 2021-03-19 | 深圳乐信软件技术有限公司 | 一种业务监控方法、平台及存储介质 |
CN109561083B (zh) * | 2018-11-20 | 2021-06-29 | 杭州迪普科技股份有限公司 | bypass处理的方法、装置、设备及存储介质 |
CN109614429B (zh) * | 2018-12-03 | 2023-04-07 | 北京安华金和科技有限公司 | 基于内核驱动实现应用访问和数据库访问行为关联的方法 |
CN111078508B (zh) * | 2019-12-31 | 2022-07-26 | 杭州当虹科技股份有限公司 | 一种基于用户态文件系统的监控方法 |
CN113971121A (zh) * | 2020-07-24 | 2022-01-25 | 阿里巴巴集团控股有限公司 | 一种服务状态的查控方法和装置 |
CN111683109B (zh) * | 2020-08-17 | 2020-11-13 | 烽火通信科技股份有限公司 | 一种微服务系统 |
CN112260889B (zh) * | 2020-09-28 | 2022-03-11 | 中孚安全技术有限公司 | 一种基于Linux的进程流量监控方法、系统及设备 |
CN113079151B (zh) * | 2021-03-26 | 2023-05-16 | 深信服科技股份有限公司 | 一种异常处理方法、装置、电子设备及可读存储介质 |
CN113347036B (zh) * | 2021-06-04 | 2022-10-11 | 上海天旦网络科技发展有限公司 | 利用公有云存储实现云环境旁路监控方法及系统 |
CN114598493B (zh) * | 2022-01-14 | 2023-09-05 | 浙江省通信产业服务有限公司 | 一种网络流量采集方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267361A (zh) * | 2008-05-09 | 2008-09-17 | 武汉飞思科技有限公司 | 一种基于零拷贝技术的高速网络数据包捕获方法 |
CN101478549A (zh) * | 2009-01-20 | 2009-07-08 | 电子科技大学 | 共享内存流媒体服务器的运行方法及其功能模块构架 |
CN101707532A (zh) * | 2009-10-30 | 2010-05-12 | 中山大学 | 一种未知应用层协议自动分析方法 |
CN102045220A (zh) * | 2010-12-09 | 2011-05-04 | 国都兴业信息审计系统技术(北京)有限公司 | 木马监控审计方法及系统 |
CN102339234A (zh) * | 2011-07-12 | 2012-02-01 | 迈普通信技术股份有限公司 | 一种协议栈运行装置和方法 |
CN105099730A (zh) * | 2014-04-23 | 2015-11-25 | 北京奇虎科技有限公司 | 终端设备、基于终端设备的网络流量统计方法及系统 |
CN105407011A (zh) * | 2015-10-26 | 2016-03-16 | 贵州电网公司信息通信分公司 | 一种it基础平台监控指标采集系统及采集方法 |
CN105491017A (zh) * | 2015-11-23 | 2016-04-13 | 泰华智慧产业集团股份有限公司 | Rs485总线多设备多协议解析方法及系统 |
CN105812274A (zh) * | 2014-12-30 | 2016-07-27 | 华为技术有限公司 | 一种业务数据的处理方法和相关设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100364520B1 (ko) * | 2000-04-28 | 2002-12-16 | 주식회사 글로트렉스 | 비동기 전송 모드망에서 비동기 전송 모드 적응계층타입-1 프로토콜 데이터 유니트의 처리 방법 |
-
2017
- 2017-03-30 CN CN201710199902.6A patent/CN107026767B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101267361A (zh) * | 2008-05-09 | 2008-09-17 | 武汉飞思科技有限公司 | 一种基于零拷贝技术的高速网络数据包捕获方法 |
CN101478549A (zh) * | 2009-01-20 | 2009-07-08 | 电子科技大学 | 共享内存流媒体服务器的运行方法及其功能模块构架 |
CN101707532A (zh) * | 2009-10-30 | 2010-05-12 | 中山大学 | 一种未知应用层协议自动分析方法 |
CN102045220A (zh) * | 2010-12-09 | 2011-05-04 | 国都兴业信息审计系统技术(北京)有限公司 | 木马监控审计方法及系统 |
CN102339234A (zh) * | 2011-07-12 | 2012-02-01 | 迈普通信技术股份有限公司 | 一种协议栈运行装置和方法 |
CN105099730A (zh) * | 2014-04-23 | 2015-11-25 | 北京奇虎科技有限公司 | 终端设备、基于终端设备的网络流量统计方法及系统 |
CN105812274A (zh) * | 2014-12-30 | 2016-07-27 | 华为技术有限公司 | 一种业务数据的处理方法和相关设备 |
CN105407011A (zh) * | 2015-10-26 | 2016-03-16 | 贵州电网公司信息通信分公司 | 一种it基础平台监控指标采集系统及采集方法 |
CN105491017A (zh) * | 2015-11-23 | 2016-04-13 | 泰华智慧产业集团股份有限公司 | Rs485总线多设备多协议解析方法及系统 |
Non-Patent Citations (1)
Title |
---|
"基于参数测量的三级网可靠性分析系统的设计与实现";李崇东,;《中国优秀硕士学位论文全文数据库-信息科技辑》;20110515;I139-104起全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107026767A (zh) | 2017-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107026767B (zh) | 业务协议指标数据收集方法及系统 | |
US10997047B2 (en) | Automatic selection of agent-based or agentless monitoring | |
CN105357038B (zh) | 监控虚拟机集群的方法和系统 | |
US9361087B1 (en) | Device driver aggregation in operating system deployment | |
US10498857B2 (en) | System interaction monitoring and component scaling | |
US20170318076A1 (en) | Naming of distributed business transactions | |
CN104639374B (zh) | 一种应用程序部署管理系统 | |
CN104508627B (zh) | 混合云环境 | |
US7822779B2 (en) | Method and apparatus for scalable transport processing fulfillment system | |
US7774642B1 (en) | Fault zones for interconnect fabrics | |
CN109460307B (zh) | 基于日志埋点的微服务调用跟踪方法及其系统 | |
JP2001014285A (ja) | データ転送管理システム、データ転送システム、転送履歴収集装置及び記録媒体 | |
JP6539341B2 (ja) | プログラマティックインターフェースに従ったルータ情報の提供 | |
US20090328040A1 (en) | Determining Real Time Stateful Business Application Processing In An Otherwise Stateless Service-Oriented Architecture | |
CN102868736A (zh) | 一种云计算监控框架设计及实现方法及云计算处理设备 | |
US9152441B2 (en) | Systems and methods involving virtual machine host isolation over a network via a federated downstream cluster | |
US8543680B2 (en) | Migrating device management between object managers | |
CN110377324B (zh) | 一种信息化平台监控系统和构建方法 | |
US8290647B2 (en) | Apparatus for integrally managing ship device and method thereof | |
US8209354B1 (en) | Transaction lifecycle management in distributed management systems | |
JP2003099340A (ja) | ネットワーク管理システムと方法およびネットワーク管理装置と方法ならびにプログラムと記録媒体 | |
CN109587265A (zh) | 一种消息推送方法、装置、设备及可读存储介质 | |
US20090327389A1 (en) | Stateful Business Application Processing In An Otherwise Stateless Service-Oriented Architecture | |
US11481254B2 (en) | Payroll data processing server | |
CN111857616B (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 |