一种JAVA应用系统运行时监控方法和装置制造方法及图纸

技术编号:6097471 阅读:245 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种JAVA应用系统运行时监控方法和装置。该方法的主要步骤包括:1)通过配置文件描述要监控的类或方法,以及监控指标;2)修改应用程序启动参数,JVM启动时加载Agent;3)Agent读取配置文件,并根据监控要求向JVM注册要得到通知的事件;4)应用程序运行时,当指定的类被加载时,Agent得到通知;5)Agent修改对应类的字节码,加入监控所需逻辑;6)Agent初始化相关指标变量;7)当被监控的方法调用时,自动执行监控逻辑,得到相关指标原始数据;8)Agent根据配置文件的描述,计算相关指标的值。应用上述方法,可以显著提高IT运维人员诊断、分析、定位和解决IT系统故障的能力。

【技术实现步骤摘要】

本专利技术涉及IT运维领域,尤其是一种对Java应用系统运行时监控的方法。
技术介绍
随着IT建设的不断深入和完善,计算机软硬件系统的运行维护变得日益重要。 保证应用系统正常持续运行的一个重要方面是对应用系统的行为进行监控,当发现其行为 不符合预期或出现异常时及时告警,以便维护人员对问题进行处理,排除故障或潜在的问 题。业务的快速变化和技术的不断创新导致应用系统日益复杂,大型企业可能存在数十甚 至上百个业务系统,当故障发生时问题的定位、诊断和修复一直是信息服务部门面临的挑 战。在监控技术中,一般是采用各种探针从外部观测应用系统占用的CPU、内存资源等,不能 监测应用系统内部行为和效果,无法对深层次系统问题进行定位、分析。传统的软件单步跟 踪和调试技术可以准确观察系统内部行为,主要适用于软件开发阶段,当系统投入正式运 行之后,由于源代码、符号文件缺失等原因,很难再对系统进行单步跟踪调试;并且单步跟 踪、断点等会影响应用系统行为,一般也不允许在生产环境中使用。因此,如何在应用系统运行环境中,在对业务系统影响尽可能低的情况下,准确监 测软件内部行为,如方法执行所耗时长,创建的对象数量,是否有操作异常发生等,并且将 这些数据及时有效的展现和分析,是IT运维领域的技术人员面临的一个突出问题。
技术实现思路
Java语言是目前应用系统开发的主流编程语言。本专利技术提出了一种针对Java开 发的应用系统的运行时监控方法,其主要步骤如下1)通过配置文件描述要监控的类或方法,以及监控指标;2)修改应用程序启动参数,JVM启动时加载Agent;3)Agent读取配置文件,并根据监控要求向JVM注册要得到通知的事件;4)应用程序运行时,当指定的类被加载时,Agent得到通知;5)Agent修改对应类的字节码,加入监控所需逻辑;6)Agent初始化相关指标变量;7)当被监控的方法调用时,自动执行监控逻辑,得到相关指标原始数据;8)Agent根据配置文件的描述,定期计算相关指标的值,并将数据发送给数据收集单 元,并重置相关指标变量;9)数据收集单元汇聚数据,建立数据索引等操作;10)数据展现单元按照用户操作,根据数据索引提取指标数据,并以表格、线性图、柱状 图等进行展示。应用上述方法的装置由监控Agent,数据收集单元和数据展现单元组成。监控 Agent包括动态链接库和相关的一些jar包,当Java程序启动时将其作为程序的一部分进 行加载,其工作原理如图2所示。当JVM启动时,JVM根据运行参数查找动态链接库,根据JVMTI (Java Virtual Machine Tool Interface) ^ ,ijf M Agent_0nLo£id 力夕去。¢1 ^ 中,Agent会读取配置文件,确定要监控的类和方法,然后据此向JVM声明自己感兴趣的事 件。当这些事件发生时,相关的回调函数会被执行。通过这种机制,Agent可以在Java类加 载时,动态修改Java程序的字节码,根据要求嵌入自己的监控指标采集代码。当对应类的 方法被执行时,相关的采集代码会被执行,从而掌握应用程序的行为统计。比如要监测Card 类的余额查询方法QueryValue执行时延,Agent会在Card类加载时修改QueryValue方法 的字节码,在进入方法时取得系统时间,在方法执行完毕时再取一次系统时间,并计算两者 的差,就可得到该方法的执行耗时。同样的,如果要计算程序中某方法一直执行,还未结束 的数量,则可以针对该方法设置一变量,当方法进入时该变量加一,当方法退出时变量减去 一,那么这个变量的值就代表了当前正在执行,还未结束的调用数。Agent加载后会启动数 据计算发送线程,该线程定期计算数据并通过网络发送给数据收集单元;该间隔不宜过短, 过短会增加系统负载;也不宜过长,过长会导致监控粒度过大,不能发现问题。优选地,该间 隔宜设在30秒到60秒之间。另外一个要注意的是,为尽可能降低对应用程序的影响,Agent 本身并不在磁盘上保存任何数据;所有数据均是通过网络保存在数据收集单元上。如上所述,配置文件描述了要关注的应用程序类和方法。作为一个面向对象的编 程语言,Java的一个特点是继承。本专利技术可以通过监测基类的行为实现对其派生类相关的 监控。此特性具有两方面的好处首先,技术人员可以在不清楚应用程序代码(如函数名,方 法名)的情况下即可实现对J2EE公共基础设施的众多监控;比如,按照Java规范,所有的 Servlet都必须实现javax. servlet. krvlet接口,系统只需要设置了对该接口的监控,即 可轻易掌握应用程序中众多krvlet的行为,而无需掌握应用程序%1^1讨的具体情况,这 大大降低了监控的技术要求。另一方面,因为对众多派生类只需要配置公共的基类,减少了 部署工作量,提高了工作效率。Agent和数据收集单元之间可以是多到多的连接关系。即一个Agent可以连接到 多个数据收集单元;单个数据收集单元也可以同时接收多个Agent的数据。Agent的数据 同时只会发送到特定的数据收集单元,但当这个数据收集单元无法连接时,Agent会查找下 一个备选的收集单元,直到找到可用的单元,这样可以提高系统可靠性和扩展性。数据收集单元接收到数据后需要建立监控数据索引,数据展现单元根据索引可以 确定特定指标,特定时间段数据的存放位置,据此从对应数据收集单元提取数据并呈现给 技术人员。综上所述,和传统方法相比,本专利技术方法优点在于第一,降低了对被监控服务器 的硬件开销,能够在不影响生产系统正常运行,并且不需对应用程序源代码进行任何修改 的情况下,实现对生产环境中应用程序内部行为的细粒度监控;第二,高灵活性,可以根据 应用系统的具体情况灵活定制要监控的事项或指标,并且能够通过对基类或公共接口的监 控实现对应用派生类的监控。第三,高可靠性和扩展性,能够对大规模复杂系统进行监控。附图说明本专利技术将通过例子并参照附图的方式说明,其中 图1是本专利技术方法的示意流程图。图2是Agent工作原理图。图3是本专利技术方法的一个实施例。图4是本专利技术方法的另一个实施例。具体实施例方式JDBC (Java Database Connectivity)是 Java 应用程序中执行 SQL 语句的 API, 可以为多种关系数据库提供统一访问,在Java应用程序中得到了极其广泛的应用;同时, 数据库是目前业务系统重要的基础设施,其经常是业务故障频发的组件,如果实现对JDBC 的操作进行监控,能显著提高问题诊断、定位的能力。下面是本专利技术方法实现对JDBC操作 监控的一个具体实施例。如前所述,应用本专利技术方法时,第一步就是要确定要监控那些类和方法。JDBC规范 包括下列主要的接口和方法权利要求1.JAVA应用系统运行时监控方法,其特征在于该方法包括以下步骤1)通过Agent配 置文件配置要监控的类或方法,以及监控指标;幻修改应用程序启动参数,JVM启动时加 载Agent ;3) Agent读取配置文件,并根据监控要求向JVM注册要得到通知的事件;4)应用 程序运行时,当指定的类被加载时,Agent得到通知;5)Agent修改对应类的字节码,加入监 控所需逻辑;6) Agent初始化相关指本文档来自技高网...

【技术保护点】
1.JAVA应用系统运行时监控方法,其特征在于该方法包括以下步骤: 1)通过Agent配置文件配置要监控的类或方法,以及监控指标;2)修改应用程序启动参数, JVM启动时加载Agent;3) Agent读取配置文件,并根据监控要求向JVM注册要得到通知的事件;4)应用程序运行时,当指定的类被加载时,Agent得到通知;5)Agent修改对应类的字节码,加入监控所需逻辑;6)Agent初始化相关指标变量;7)当被监控的方法调用时,自动执行监控逻辑,得到相关指标原始数据;8)Agent根据配置文件的描述,定期计算相关指标的值,并将数据发送给数据收集单元,并重置相关指标变量;9)数据收集单元汇聚数据,建立数据索引等操作;10)数据展现单元按照用户操作,根据数据索引提取指标数据,并以表格、线性图、柱状图进行展示。

【技术特征摘要】

【专利技术属性】
技术研发人员:杨涛廖昕陈松胡百国
申请(专利权)人:成都勤智数码科技有限公司
类型:发明
国别省市:90

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1