CN111444065B - 一种基于AspectJ的移动端性能指标监控方法 - Google Patents
一种基于AspectJ的移动端性能指标监控方法 Download PDFInfo
- Publication number
- CN111444065B CN111444065B CN202010417086.3A CN202010417086A CN111444065B CN 111444065 B CN111444065 B CN 111444065B CN 202010417086 A CN202010417086 A CN 202010417086A CN 111444065 B CN111444065 B CN 111444065B
- Authority
- CN
- China
- Prior art keywords
- monitoring
- aspectj
- app
- index
- mobile terminal
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3428—Benchmarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Telephone Function (AREA)
- Telephonic Communication Services (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种基于AspectJ的移动端性能指标监控方法,将实现的SDK集成到相应的APP内;用户使用终端操作该移动APP;APP启动时,加载sdk方法,初始化RPC框架和各种采集的关键类信息;在程序调用okHttp底层发送数据请求时,AspectJ针对okHttp方法进行切入拦截,获取请求的相关信息;在APP切换时调用Activity,AspectJ针对Activity方法进行切入拦截采集性能数据;当SDK内发生异常时,AspectJ针对全局异常进行捕获处理,确保不影响第三方app应用正常运行,从而实现无侵入式移动端监控的关键;创建定时任务,将采集的数据,通过RPC发送给链路监控平台,从而更直观地查看移动端的监控信息。本发明实现对移动端App的指标进行性能监控。
Description
技术领域
本发明属于软件技术领域,涉及JVM 字节码、Java SPI动态加载机制、RPC远程过程调用协议,该平台模型基于AspectJ、Java SPI和RPC而实现,具体说是一种基于AspectJ的移动端性能指标监控方法。
背景技术
传统运维弊端繁多,系统异构性大,缺乏高时效的监控流程,一旦发生故障,带来的损失不可估量,仅仅靠人工去对移动端进行监控是绝不可取的,面对越来越多样化的用户需求,不断扩展的用户需求需要快速地发现并定位问题,减少宕机时间,提高故障处理速度,减轻IT运维工作压力,基于AspectJ移动端性能指标监控,就是一种能够满足多终端下快速定位分析问题的利器。
AspectJ是一个字节码生成与操作库。它无需编译器,能够在Java程序运行时创建与修改 class 文件。它基于BCEL框架实现,具有成熟稳定、使用简单等优点。
发明内容
针对现有技术存在的问题,本发明的目的是提供一种基于AspectJ的移动端性能指标监控方法,实现在不修改源代码(即非侵入式)的情况下给程序动态添加功能,实现对移动端App的启动指标、交互指标、内存指标、进程指标、卡顿指标、文件指标、网络指标、APN/VPN指标进行性能监控。
本发明的目的通过以下技术方案实现:
一种基于AspectJ的移动端性能指标监控方法,其特征在于:该方法在不修改源代码的情况下给程序动态添加功能,实现对移动端App的启动指标、交互指标、内存指标、进程指标、卡顿指标、文件指标、网络指标、APN/VPN指标进行性能监控,包括以下步骤:
(1)将实现的SDK集成到相应的APP内;
(2)用户使用终端操作该移动APP;
(3)APP启动时,加载sdk方法,初始化RPC框架和采集的关键类信息;
(4)在程序调用okHttp底层发送数据请求时,AspectJ针对okHttp方法进行切入拦截,获取请求的相关信息;在APP切换时调用Activity,AspectJ针对Activity方法进行切入拦截采集性能数据;当SDK内发生异常时,AspectJ针对全局异常进行捕获处理,确保不影响第三方app应用正常运行,从而实现无侵入式移动端监控;
(5)创建定时任务,将采集的数据,通过RPC发送给链路监控平台,从而更直观地查看移动端的监控信息。
本发明包括: AspectJ的AOP方式拦截网络请求、指标和性能数据采集和监控数据传递三个部分。
具体包括:
(1)在Android工程中修改build.gradle配置,增加AspectJ的类引用来引入AspectJ,从而实现在字节码层次上非侵入式地监控目标应用运行中的各类指标系数;
(2)在切面类上使用@Aspect注解标明此类为切面类,切面类包括对目标应用的各类指标进行监控、对全局未捕获异常进行处理等操作,实现对Activity、OkHttp或基类的监控以及全局异常处理保证抛出未捕获异常后不会影响目标应用正常运行;
(3)在已声明的切面类中通过@PointCut声明切点,切点通过类的全限定名或包名指定需要操作的类或方法作为切点,通过下一步中的处理方法在编译期织入添加的代码逻辑,实现对目标应用的监控;
(4)使用@Before、@Around、@After、@AfterThrowing等注解声明处理方法,注解中参数为上一步声明的切点,由切点定位监控类或方法。以上四种处理方法实现含义分别为:@Before在切点方法前执行处理方法中的逻辑代码;@Around在切点方法前后都要执行处理方法中的逻辑代码;@After在切点方法后执行处理方法中的逻辑代码;@AfterThrowing在抛出异常后执行处理方法中的逻辑代码,此处代码对所有未捕获异常进行处理,确保在抛出异常后,不会对目标应用产生影响;
(5) 当切点中配置的类或方法被调用时,记录被监控指标的各种参数信息,缓存至数据库。由定时任务,每隔一段时间将监控采集的数据发送给链路监控平台,完成对目标应用各类指标的监控。
本发明能够及时的监测到移动端崩溃、网络请求错误或超时、响应速度慢、列表滚动卡顿、流量大、耗电等问题,并将异常、指标和性能数据采集并发送到链路监控平台上。
本发明基于Aspect Oriented Programming(AOP)面向切面编程思想,统一对每个Activity或基类做处理,实现在不修改源代码(即非侵入式)的情况下给程序动态添加功能,实现对移动端App的启动指标、交互指标、内存指标、进程指标、卡顿指标、文件指标、网络指标、APN/VPN指标进行性能监控。
附图说明
图1为本发明的方法流程图。
具体实施方式
本实施例提供了一种基于AspectJ移动端性能指标监控方法,如图1所示,包括:
(1)移动APP接入SDK:将实现的SDK集成到相应的APP内,具体包括:
(1-1)SDK包引入:Android开发中,除了引入项目所需的jar包外,也提供aar包的引入;aar包除了字节码文件以外,还会包含资源文件,而且aar文件还具有编译快、所占位置小等优点,所以SDK包使用了aar方式进行打包,将其提供给第三方app应用,第三方app应用导入aar包至libs目录下以便后续引用。
(1-2)修改build.gradle配置:第三方app应用需修改lib包的关联引用,引入上一步中导入的SDK aar包,并增加AspectJ的类引用从而支持对第三方app应用包括启动耗时、页面交互以及网络请求等指标的监控。
(1-3)初始化配置信息:设置APP的编码和名称,表示终端内APP唯一性;
(2)移动APP接入SDK,用户使用终端操作该移动APP,正常操作业务数据,与不接入SDK无区别,用户无感知;
(3)初始化RPC/采集框架:APP启动时,加载sdk方法,初始化RPC框架和各种采集的关键类信息;
(4)拦截指定方法、采集数据:在程序调用okHttp底层发送数据请求时,AspectJ针对okHttp方法进行切入拦截,获取请求的相关信息;在APP切换时调用Activity,AspectJ针对Activity方法进行切入拦截采集性能数据;当SDK内发生异常时,AspectJ针对全局异常进行捕获处理,确保不影响第三方app应用正常运行,从而实现无侵入式移动端监控的关键;
(5)RPC发送数据给链路监控平台:创建定时任务,将采集的数据,通过RPC发送给链路监控平台,从而更直观地查看移动端的监控信息。
Claims (2)
1.一种基于AspectJ的移动端性能指标监控方法,其特征在于:该方法在不修改源代码的情况下给程序动态添加功能,实现对移动端App的启动指标、交互指标、内存指标、进程指标、卡顿指标、文件指标、网络指标、APN/VPN指标进行性能监控,包括以下步骤:
(1)将实现的SDK集成到相应的APP内;
(2)用户使用终端操作该移动APP;
(3)APP启动时,加载sdk方法,初始化RPC框架和采集的关键类信息;
(4)在程序调用okHttp底层发送数据请求时,AspectJ针对okHttp方法进行切入拦截,获取请求的相关信息;在APP切换时调用Activity,AspectJ针对Activity方法进行切入拦截采集性能数据;当SDK内发生异常时,AspectJ针对全局异常进行捕获处理,确保不影响第三方app应用正常运行,从而实现无侵入式移动端监控;
(5)创建定时任务,将采集的数据,通过RPC发送给链路监控平台,从而更直观地查看移动端的监控信息;
步骤(1)具体包括:
(1-1)在Android工程中修改build.gradle配置,增加AspectJ的类引用来引入AspectJ,从而实现在字节码层次上非侵入式地监控目标应用运行中的各类指标系数;
(1-2)在切面类上使用@Aspect注解标明此类为切面类,切面类包括对目标应用的各类指标进行监控、对全局未捕获异常进行处理操作,实现对Activity、OkHttp或基类的监控以及全局异常处理,保证抛出未捕获异常后不会影响目标应用正常运行;
(1-3)在已声明的切面类中通过@PointCut声明切点,切点通过类的全限定名或包名指定需要操作的类或方法作为切点,通过下一步中的处理方法在编译期织入添加的代码逻辑,实现对目标应用的监控;
(1-4)使用@Before、@Around、@After、@AfterThrowing注解声明处理方法,注解中参数为上一步声明的切点,由切点定位监控类或方法;
其中:@Before在切点方法前执行处理方法中的逻辑代码;@Around在切点方法前后都要执行处理方法中的逻辑代码;@After在切点方法后执行处理方法中的逻辑代码;@AfterThrowing在抛出异常后执行处理方法中的逻辑代码;此处代码对所有未捕获异常进行处理,确保在抛出异常后,不会对目标应用产生影响;
(1-5) 当切点中配置的类或方法被调用时,记录被监控指标的各种参数信息,缓存至数据库;由定时任务,每隔一段时间将监控采集的数据发送给链路监控平台,完成对目标应用各类指标的监控。
2.根据权利要求1所述的基于AspectJ的移动端性能指标监控方法,其特征在于:步骤(2)中用户使用终端操作该移动APP,正常操作业务数据,与不接入SDK无区别,用户无感知。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010417086.3A CN111444065B (zh) | 2020-05-18 | 2020-05-18 | 一种基于AspectJ的移动端性能指标监控方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010417086.3A CN111444065B (zh) | 2020-05-18 | 2020-05-18 | 一种基于AspectJ的移动端性能指标监控方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111444065A CN111444065A (zh) | 2020-07-24 |
CN111444065B true CN111444065B (zh) | 2022-03-11 |
Family
ID=71655275
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010417086.3A Active CN111444065B (zh) | 2020-05-18 | 2020-05-18 | 一种基于AspectJ的移动端性能指标监控方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111444065B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540788A (zh) * | 2020-12-03 | 2021-03-23 | 南方电网数字电网研究院有限公司 | 一种兼容多厂商无人机飞控应用app的方法 |
CN113127309B (zh) * | 2021-04-30 | 2023-10-10 | 北京奇艺世纪科技有限公司 | 一种程序监控方法、装置、电子设备及存储介质 |
CN113419935B (zh) * | 2021-06-22 | 2023-10-20 | 康键信息技术(深圳)有限公司 | 移动端性能监控方法、装置、设备及存储介质 |
CN114706733B (zh) * | 2022-05-30 | 2022-09-20 | 支付宝(杭州)信息技术有限公司 | 切面程序异常的监控方法和装置 |
CN116126427B (zh) * | 2023-04-14 | 2023-07-18 | 杭州比智科技有限公司 | 基于面向切面编程的无侵入sdk辅助集成插件的实现方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714290A (zh) * | 2013-12-26 | 2014-04-09 | 北京工业大学 | 一种软件行为获取、监控与验证方法 |
CN106970789A (zh) * | 2017-03-07 | 2017-07-21 | 武汉斗鱼网络科技有限公司 | 一种Android端基于AOP和AspectJ的日志自动埋点方法及系统 |
CN108345542A (zh) * | 2018-02-28 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 一种应用程序中异常处理方法及装置 |
CN110659185A (zh) * | 2019-10-09 | 2020-01-07 | 云南电网有限责任公司信息中心 | 一种基于真实用户感知的移动app用户体验监测方法 |
CN110737589A (zh) * | 2019-09-10 | 2020-01-31 | 北京字节跳动网络技术有限公司 | 一种自动埋点的方法、装置、介质和电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI649694B (zh) * | 2017-10-30 | 2019-02-01 | 國立臺灣大學 | 一種安卓動態框架及其方法 |
CN108038045B (zh) * | 2017-12-29 | 2020-09-29 | 上海新炬网络技术有限公司 | 基于无埋点的Android用户行为数据采集方法 |
CN108769112B (zh) * | 2018-04-18 | 2021-11-12 | 江苏物联网研究发展中心 | 一种非侵入式rpc接口监控方法及系统 |
-
2020
- 2020-05-18 CN CN202010417086.3A patent/CN111444065B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714290A (zh) * | 2013-12-26 | 2014-04-09 | 北京工业大学 | 一种软件行为获取、监控与验证方法 |
CN106970789A (zh) * | 2017-03-07 | 2017-07-21 | 武汉斗鱼网络科技有限公司 | 一种Android端基于AOP和AspectJ的日志自动埋点方法及系统 |
CN108345542A (zh) * | 2018-02-28 | 2018-07-31 | 腾讯科技(深圳)有限公司 | 一种应用程序中异常处理方法及装置 |
CN110737589A (zh) * | 2019-09-10 | 2020-01-31 | 北京字节跳动网络技术有限公司 | 一种自动埋点的方法、装置、介质和电子设备 |
CN110659185A (zh) * | 2019-10-09 | 2020-01-07 | 云南电网有限责任公司信息中心 | 一种基于真实用户感知的移动app用户体验监测方法 |
Non-Patent Citations (1)
Title |
---|
AspectJ AOP教程:实现Android基于注解无侵入埋点、性能监控;ImWiki;《https://juejin.cn/post/6844903968456474638》;20191017;第1-5页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111444065A (zh) | 2020-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111444065B (zh) | 一种基于AspectJ的移动端性能指标监控方法 | |
CN110716715B (zh) | 一种应用程序开发方法、装置、设备及介质 | |
US20110191752A1 (en) | Method and System for Debugging of Software on Target Devices | |
CN108038045B (zh) | 基于无埋点的Android用户行为数据采集方法 | |
US7900198B2 (en) | Method and system for parameter profile compiling | |
CN111770113A (zh) | 一种执行智能合约的方法、区块链节点和节点设备 | |
CN102622289B (zh) | 程序设置方法、程序监控方法与装置、系统 | |
CN101382915B (zh) | 一种软件调试系统及调试方法 | |
CN114064152B (zh) | 基于动态加载的嵌入式多核调试系统及其调试方法 | |
CN105590051A (zh) | 用于可信执行环境的可信应用生成及安装方法 | |
CN108197004B (zh) | Ios应用的方法耗时、加载视图耗时的监测方法及系统 | |
CN104462943B (zh) | 业务系统中非侵入式性能监控装置和方法 | |
CN111209001A (zh) | 批量生成安卓各渠道apk的方法、系统、设备和介质 | |
CN107577609A (zh) | 一种基于主机端动态链接的嵌入式系统动态模块调试方法 | |
US20080127119A1 (en) | Method and system for dynamic debugging of software | |
CN111580813A (zh) | 一种面向Java类热更新的自动化管理方法 | |
Li et al. | Minimizing context migration in mobile code offload | |
CN114610318A (zh) | 安卓应用程序的打包方法、装置、设备及存储介质 | |
CN109933410A (zh) | 一种基于虚拟化技术的虚拟指令下发方法及系统 | |
KR20130020135A (ko) | 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법 | |
US11435989B2 (en) | Thread-local return structure for asynchronous state machine | |
CN114020255A (zh) | 一种基于java代码跟踪型的数据采集方法 | |
CN116301836A (zh) | 一种基于国产自主可控环境的嵌入式开发系统 | |
CN115168175A (zh) | 程序错误解决方法、装置、电子设备和存储介质 | |
CN112650607A (zh) | 一种动态cep模式实现方法及装置 |
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 |