一种网络性能监控方法、装置及电子设备
文献发布时间:2023-06-19 12:00:51
技术领域
本发明涉及网络监控领域,尤其涉及一种网络性能监控方法、装置及电子设备。
背景技术
随着互联网技术的发展,每个应用程序每天都会发出由该应用程序对应的不同的服务器api接收的大量网络请求。虽然能够在服务器端对应用程序发出的网络请求进行网络监控,但是服务器端进行监控容易出现请求遗漏的情况,较难监控到所有的网络请求情况,同时在服务器端监控也无法监控到由于应用程序的实际网络环境导致的网络请求异常情况,且不同的服务器所监控的性能数据较难实现汇总分析。
因此,亟需一种可以实现在应用程序本地对发出的网络请求进行监控的网络监控方法,以解决上述问题。
发明内容
为了解决现有技术的不足,本发明的主要目的在于提供一种网络性能监控方法、装置及电子设备。
为了达到上述目的,第一方面本发明提供了一种网络性能监控方法,所述方法包括:
利用预设事件监听工厂实时监听预设网络框架返回的请求事件;
当监听到目标网络请求对应的请求开始事件时,获取所述请求开始事件包含的预设特征数据;
当监听到所述预设特征数据对应的目标事件时,记录每一所述目标事件包含的性能数据;
当监听到所述预设特征数据对应的请求结束事件时,根据每一所述目标事件包含的性能数据确定所述目标网络请求对应的目标性能数据并将所述目标性能数据上传至预设端。
在一些实施例中,所述将所述目标性能数据上传至预设端包括:
将所述目标性能数据存储至预设上传队列中;
当所述预设上传队列满足预设条件时,所述预设上传队列对应的预设线程将所述目标性能数据上传至预设端。
在一些实施例中,所述当所述预设上传队列满足预设条件时,所述预设上传队列对应的预设线程将所述目标性能数据上传至预设端包括:
当所述预设上传队列储存的数据量超过预设数量阈值或所述预设线程的等待时间超过预设时间阈值时,预设上传队列对应的预设线程将所述目标性能数据上传至预设端。
在一些实施例中,所述预设特征数据包括被调用访问资源地址和/或被调用方法。
在一些实施例中,所述方法包括:
当上传失败时,所述预设线程将上传失败的目标性能数据重新储存至所述预设队列内,以便后续重新上传所述目标性能数据。
在一些实施例中,所述预设网络框架包括okhttp网络框架。
在一些实施例中,所述目标网络请求包括对应的APPID,所述方法包括:
向所述预设端发送性能数据获取请求,所述性能数据获取请求包括所述APPID,以便所述预设端根据接收的所述性能数据请求返回所述目标性能数据。
第二方面,本申请提供了一种网络性能监控装置,所述装置包括:
监听模块,用于利用预设事件监听工厂实时监听预设网络框架返回的请求事件;
获取模块,用于当监听到目标网络请求对应的请求开始事件时,获取所述请求开始事件包含的预设特征数据;
记录模块,用于当监听到所述预设特征数据对应的目标事件时,记录每一所述目标事件包含的性能数据;
上传模块,用于当监听到所述预设特征数据对应的请求结束事件时,根据每一所述目标事件包含的性能数据确定所述目标网络请求对应的目标性能数据并将所述目标性能数据上传至预设端。
在一些实施例中,所述上传模块还可用于将所述目标性能数据存储至预设上传队列中;当所述预设上传队列满足预设条件时,所述预设上传队列对应的预设线程将所述目标性能数据上传至预设端。
第三方面,本申请提供了一种电子设备,所述电子设备包括:
一个或多个处理器;
以及与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如下操作:
利用预设事件监听工厂实时监听预设网络框架返回的请求事件;
当监听到目标网络请求对应的请求开始事件时,获取所述请求开始事件包含的预设特征数据;
当监听到所述预设特征数据对应的目标事件时,记录每一所述目标事件包含的性能数据;
当监听到所述预设特征数据对应的请求结束事件时,根据每一所述目标事件包含的性能数据确定所述目标网络请求对应的目标性能数据并将所述目标性能数据上传至预设端。
本发明实现的有益效果为:
本申请提供了一种网络监控方法,包括利用预设事件监听工厂实时监听预设网络框架返回的请求事件;当监听到目标网络请求对应的请求开始事件时,获取所述请求开始事件包含的预设特征数据;当监听到所述预设特征数据对应的目标事件时,记录每一所述目标事件包含的性能数据;当监听到所述预设特征数据对应的请求结束事件时,根据每一所述目标事件包含的性能数据确定所述目标网络请求对应的目标性能数据并将所述目标性能数据上传至预设端,本申请通过在发出网络请求的安装有应用程序的硬件终端直接监听网络框架返回的请求事件,可以在安装有应用程序的硬件终端直接进行网络性能的监控,避免了由于应用程序发出的请求由不同的服务器执行导致性能数据分布在不同的服务器上,导致获取及统计困难的问题,且本申请的技术方案不需要对应用程序的原有代码进行大量修改,避免了对应用程序的高侵入性;
进一步地,本申请还提出了所述将所述目标性能数据上传至预设端包括:将所述目标性能数据存储至预设上传队列中;当所述预设上传队列满足预设条件时,所述预设上传队列对应的预设线程将所述目标性能数据上传至预设端,本申请可在储存有性能数据的上传队列满足预设条件后再将数据进行上传,避免了重复执行上传操作导致流量消耗的问题。
本发明所有产品并不需要具备上述所有效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的网络监控流程示意图;
图2是本申请实施例提供的方法流程图;
图3是本申请实施例提供的装置结构图;
图4是本申请实施例提供的电子设备架构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
如背景技术所述,现有技术中针对应用程序的网络监控多采用在后端服务器端进行监控,如果应用程序调用了不同服务器提供的API接口就会导致相应的性能数据分布在不同的服务器中,很难进行统计且容易遗漏。
为解决上述技术问题,本申请提供了一种网络性能监控方法,可实现直接在安装有应用程序的终端直接采集和监控应用程序的网络性能情况,避免了在服务器端监控导致难以统计、容易遗漏的问题。
具体的,为了实现在安装有应用程序的终端直接采集和监控应用程序的网络性能,可预先在应用程序工程中添加预设网络框架依赖以及对预设arr文件依赖。其中,预设arr文件中包括预先开发的软件开发工具包SDK,以便应用程序调用。可以为每个应用程序预先规定相应的APPID,后续可根据APPID查询存储的相应的性能数据。优选的,所述预设网络框架可以是OKHTTP网络框架。
在应用程序初始化或在应用程序执行预设的需要监听的业务时,应用程序可直接通过调用预设arr文件中包含的SDK,以启动对SDK数据的初始化逻辑并同时启动预设线程。
应用程序在执行构建网络请求对象OkHttpClient时,通过本申请提供的SDK可自动添加事件监听工厂eventListenerFactory,以触发后续网络监听逻辑。
在完成了上述配置过程后,如图1所示,基于OKHTTP网络框架的应用程序利用本申请提供的网络监控方法对进行网络监控的过程包括:
步骤一、实时监听OKHTTP网络框架返回的请求事件;
由于基于Okhttp网络框架开发的应用程序发出的每个网络请求都会通过该框架提供的EventListener通知给调用者一连串的请求事件,因此在进行网络监控时可以基于返回的请求事件获取相应的性能数据。
优选的,在实时监听OKHTTP网络框架返回的请求事件前,可以通过调用SDK以预先创建用于数据上传的预设线程。
步骤二、当监听到目标网络请求对应的请求开始事件时,获取请求开始事件包含的预设特征数据;
由于每个网络请求都具有对应的被调用访问资源地址URL及对应的被调用方法Method,且与其相关的请求事件也会包含被调用访问资源地址URL及对应的被调用方法Method,因此可以将URL及Method当做预设特征数据,根据预设特征数据识别每个请求事件所对应的网络请求。
在监听到目标网络请求对应的请求开始事件时,还可以将接收该请求开始事件的接收事件记录为目标网络请求的请求开始时间。
步骤三、当监听到预设特征数据对应的目标事件时,记录每一目标事件包含的性能数据;
具体的,目标事件是目标网络请求对应的请求事件中除请求开始事件及请求结束事件外的所有请求事件。性能数据包括dns解析时间、连接时间、安全连接时间、连接队列时间、请求数据大小、状态码、mimeType、响应数据大小、请求失败错误码等性能数据。
步骤四、当监听到预设特征数据对应的请求结束事件时,根据每一目标事件包含的性能数据确定目标网络请求对应的目标性能数据;
请求结束事件包括请求成功返回的callEnd事件以及请求失败返回的callFailed事件。当监听到请求结束事件后,可以对所有目标事件包含的性能数据进行汇总及分析,生成目标性能数据并存储在预设的上传队列中;
步骤五、当预设线程的等待时间超过预设时间阈值或上传队列中存储的数据量超过预设数据量阈值时,预设线程将上传队列中存储的目标性能数据上传至预设服务器;
优选的,通过预设线程的等待时间超过预设时间阈值或上传队列中存储的数据量超过预设数据量阈值后再执行性能数据上传操作可避免应用程序频繁向服务器发送性能数据导致占用大量网络流量的问题。
步骤六、当上传失败时,预设线程将上传失败的目标性能数据重新储存至所述预设队列内,以便后续重新上传所述目标性能数据。
具体的,预设线程可在预设上传队列的其他所有数据上传完成之后,对上传失败的目标性能数据进行重新上传。
步骤七、向服务器发送性能数据获取请求,所述性能数据获取请求包括应用程序对应的APPID,以便所述预设端根据接收的所述性能数据请求返回所述目标性能数据。
具体的,应用程序发送的所有网络请求会包含该应用程序对应的APPID,根据APPID服务器可以向应用程序返回包含该目标性能数据在内的该应用程序对应的所有性能数据。
实施例二
对应上述实施例,如图2所示,本申请提供了一种网络性能监控方法,所述方法包括:
210、利用预设事件监听工厂实时监听预设网络框架返回的请求事件;
220、当监听到目标网络请求对应的请求开始事件时,获取所述请求开始事件包含的预设特征数据;
230、当监听到所述预设特征数据对应的目标事件时,记录每一所述目标事件包含的性能数据;
240、当监听到所述预设特征数据对应的请求结束事件时,根据每一所述目标事件包含的性能数据确定所述目标网络请求对应的目标性能数据并将所述目标性能数据上传至预设端。
优选的,所述将所述目标性能数据上传至预设端包括:
241、将所述目标性能数据存储至预设上传队列中;
242、当所述预设上传队列满足预设条件时,所述预设上传队列对应的预设线程将所述目标性能数据上传至预设端。
优选的,所述当所述预设上传队列满足预设条件时,所述预设上传队列对应的预设线程将所述目标性能数据上传至预设端包括:
243、当所述预设上传队列储存的数据量超过预设数量阈值或所述预设线程的等待时间超过预设时间阈值时,预设上传队列对应的预设线程将所述目标性能数据上传至预设端。
优选的,所述预设特征数据包括被调用访问资源地址和/或被调用方法。
优选的,所述方法包括:
250、当上传失败时,所述预设线程将上传失败的目标性能数据重新储存至所述预设队列内,以便后续重新上传所述目标性能数据。
优选的,所述预设网络框架包括okhttp网络框架。
优选的,所述目标网络请求包括对应的APPID,所述方法包括:
260、向所述预设端发送性能数据获取请求,所述性能数据获取请求包括所述APPID,以便所述预设端根据接收的所述性能数据请求返回所述目标性能数据。
实施例三
对应上述所有实施例,如图3所示,本申请提供了一种网络性能监控装置,所述装置包括:
监听模块310,用于利用预设事件监听工厂实时监听预设网络框架返回的请求事件;
获取模块320,用于当监听到目标网络请求对应的请求开始事件时,获取所述请求开始事件包含的预设特征数据;
记录模块330,用于当监听到所述预设特征数据对应的目标事件时,记录每一所述目标事件包含的性能数据;
上传模块340,用于当监听到所述预设特征数据对应的请求结束事件时,根据每一所述目标事件包含的性能数据确定所述目标网络请求对应的目标性能数据并将所述目标性能数据上传至预设端。
优选的,所述上传模块340还可用于将所述目标性能数据存储至预设上传队列中;当所述预设上传队列满足预设条件时,所述预设上传队列对应的预设线程将所述目标性能数据上传至预设端。
优选的,所述上传模块340还可用于当所述预设上传队列储存的数据量超过预设数量阈值或所述预设线程的等待时间超过预设时间阈值时,预设上传队列对应的预设线程将所述目标性能数据上传至预设端。
优选的,所述预设特征数据包括被调用访问资源地址和/或被调用方法。
优选的,所述上传模块340还可用于当上传失败时,所述预设线程将上传失败的目标性能数据重新储存至所述预设队列内,以便后续重新上传所述目标性能数据。
优选的,所述预设网络框架包括okhttp网络框架。
优选的,所述装置还包括发送模块,用于向所述预设端发送性能数据获取请求,所述性能数据获取请求包括所述APPID,以便所述预设端根据接收的所述性能数据请求返回所述目标性能数据。
实施例四
对应上述方法及装置,本申请实施例提供一种电子设备,包括:
一个或多个处理器;以及与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行如下操作:
利用预设事件监听工厂实时监听预设网络框架返回的请求事件;
当监听到目标网络请求对应的请求开始事件时,获取所述请求开始事件包含的预设特征数据;
当监听到所述预设特征数据对应的目标事件时,记录每一所述目标事件包含的性能数据;
当监听到所述预设特征数据对应的请求结束事件时,根据每一所述目标事件包含的性能数据确定所述目标网络请求对应的目标性能数据并将所述目标性能数据上传至预设端。
其中,图4示例性的展示出了电子设备的架构,具体可以包括处理器1510,视频显示适配器1511,磁盘驱动器1512,输入/输出接口1513,网络接口1514,以及存储器1520。上述处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,与存储器1520之间可以通过通信总线1530进行通信连接。
其中,处理器1510可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请所提供的技术方案。
存储器1520可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1520可以存储用于控制电子设备1500运行的操作系统1521,用于控制电子设备1500的低级别操作的基本输入输出系统(BIOS)1522。另外,还可以存储网页浏览器1523,数据存储管理1524,以及图标字体处理系统1525等等。上述图标字体处理系统1525就可以是本申请实施例中具体实现前述各步骤操作的应用程序。总之,在通过软件或者固件来实现本申请所提供的技术方案时,相关的程序代码储存在存储器1520中,并由处理器1510来调用执行。输入/输出接口1513用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
网络接口1514用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1530包括一通路,在设备的各个组件(例如处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,与存储器1520)之间传输信息。
另外,该电子设备1500还可以从虚拟资源对象领取条件信息数据库1541中获得具体领取条件的信息,以用于进行条件判断,等等。
需要说明的是,尽管上述设备仅示出了处理器1510、视频显示适配器1511、磁盘驱动器1512、输入/输出接口1513、网络接口1514,存储器1520,总线1530等,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本申请方案所必需的组件,而不必包含图中所示的全部组件。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,云服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种网络性能监控方法、装置及电子设备
- 用于网络性能监控的网络数据包包头压缩方法及装置