dev2dev 首页 > 资源中心 > 技术文章
WebLogic Diagnostics Framework (WLDF) 简介
时间:2006-08-22
作者:Rebecca Sly
浏览次数:
本文关键字:diagnostics, instrumentation, diagnostic images, watches, notifications, archive, access data, monitoring, logging, data harvesters, runtime MBeans, collected metrics, WLDF, framework, AspectJ, Aspect Oriented Programming, AOP, diagnostic actions, joinpoint, WebLogic Platform, WebLogic Server, Rebecca Sly |
|
摘要
WebLogic Diagnostics Framework (WLDF)允许管理员和IT经理使用一套组件分析其服务器操作环境,这套组件从部署在服务器上的WebLogic服务器和资源(包括应用程序)生成信息。得到的数据随后被收集,以便进行分析,然后这些数据被持久化,以便长期保存。此信息(通常由MBeans生成)可用于诊断和解决问题、监视和维护事件历史记录、执行性能调优,以及执行许多其他对于系统管理员有用的任务。
WLDF是添加到BEA WebLogic Server 9.0中的新产品。本文将简要介绍WebLogic Diagnostics Framework的每个组件,以及这些组件如何帮助您创建更好的WebLogic服务器环境。
编者注:请查看相关的webinar,Deploying Services in BEA WebLogic Server: Explore the Power of WebLogic Diagnostic Framework
WLDF能为您做些什么?
在WebLogic Server以前版本中,管理控制台中有许多开箱即用的日志文件和各种监视页面,您可以使用它们跟踪环境中正在发生的事情。日志文件提供了许多信息,但它们难于阅读。监视页面分散在控制台中,且不能始终提供您正在寻找的信息。如果希望再进一步,那么您可以开发自己的基于JMX的监视工具,或者可以购买第三方产品。 新的WebLogic Diagnostics Framework增强了可以用来以开箱即用的方式监视WebLogic Server环境的工具。WLDF处于监视环境的老方法和流行的第三方JMX和SNMP监视工具的中间地带。它提供了一些方法来跟踪环境中的特定元素、在发生特别的事情时收到通知、在指定时间对环境进行快照、过滤日志消息,以及保存所有为日后分析收集的信息。
WLDF组件
WebLogic Diagnostics Framework由几个组件组成。主要组件包括:
这些组件一起工作,以生成、收集、访问和持久化数据,这些数据有助于您监视环境和分析可能存在的资源问题。以下小节将检查这些组件以及它们在您的WebLogic环境中的地位。
生成数据
您可使用两个为WLDF生成数据的主要机制:使用运行时MBeans,以及使用服务器和/或应用程序的工具。让我们更详细地查看每一个机制。
用作数据生成器的MBeans
要监视您的环境,则需要由各种系统生成的数据。WLDF中的两个主要组件将生成数据,这些数据随后会被收集、访问和存档。主要数据生成器是面向WebLogic服务器环境的每个部分的运行时MBeans。 运行时MBeans仅存在于部署托管资源的托管服务器上。服务器所运行资源的每个实例会有一个运行时MBean,而每个MBean都有一组属性以及可由WLDF收集的数据。运行时MBean保存的运行时数据是暂时的;其运行时状态没有持久定义。当服务器停止运行时,其所有运行时MBeans都被毁坏。关于不同类型的运行时MBeans及其属性的更多信息,请参阅 WebLogic Server MBean Reference 指南。 Instrumentation
为WLDF生成数据的第二种方式是使用Instrumentation组件。Instrumentation是定义动作的一种方式,该动作在到达代码主体中的某一点(通常是一个方法)时发生。该动作可在到达这一点之前、越过这一点之后或这一点正在运行(例如正在执行此方法)时发生。到达这一点时发生的动作只是另一段代码,它包含关于将执行哪些操作的指令。工具的好处是您无需接触实际的业务逻辑代码来添加功能(例如日志记录和跟踪)。添加此功能是在代码之外实现的,并随后由特殊编译器编入代码。WLDF工具基于AspectJ(面向方面的编程的Java实现)。面向方面的编程允许开发人员跨应用程序的所有部分插入功能,而无需修改实际应用程序代码。这被称为“横切”。AspectJ中的一些常用术语如下:
- Join point(连接点) —— 您希望将添加的功能插入到业务逻辑代码中的位置。
- Pointcut(切入点) —— 捕捉一组连接点并定义编织规则的表达式。编织是在AspectJ编译器组合业务逻辑代码和面向方面的代码时完成的。
- Advice(通知) —— 定义当达到某一连接点时您希望发生什么。在WLDF中,通知指的是动作。
WLDF提供一组预定义的诊断动作,它们能够在到达代码中定义的点时发生,这就是生成数据的方式。行为能够收集方法参数、返回值、跟踪事件、执行方法所需时间、堆栈转储和线程转储。此时,您无法创建自己的动作或定制现有动作。 在WLDF中,工具是数据提供者和数据发布者。数据提供者是定期采样以收集当前值的数据创建者。数据发布者是同步生成事件的数据创建者。服务器和应用程序均可被工具化。这被称为“诊断监视器”。 存在三种诊断监视器:标准、委托和定制。标准监视器在特定、预定义的切入点和位置监视特定、预定义的诊断行为。委托监视器将其作用域、切入点和位置硬编码到监视器中,但是您可选择监视器将要执行的动作。借助于定制监视器,您可以分配名称、定义监视器将要使用的切入点和诊断位置,然后从预定义诊断动作集合中指定动作。 以下工具部署描述符为应用程序定义了两个诊断监视器。第一个监视器是委托监视器,它有一个预定义的切入点(在执行实体EJB方法之前)和一个将生成跟踪事件的动作。第二个监视器是一个定制监视器,它将生成包含时间量的数据,该时间是执行以FindBy开始的任何类中的任何方法、采用字符串参数和返回一个Enumeration所花费的时间。
<instrumentation>
<enabled>true</enabled>
<wldf-instrumentation-monitor>
<name>EJB_Before_EntityEjbMethods</name>
<enabled>true</enabled>
<action>TraceAction</action>
</wldf-instrumentation-monitor>
<wldf-instrumentation-monitor>
<name>FindBy</name>
<enabled>true</enabled>
<action>TraceElapsedTimeAction</action>
<location>around</location>
<pointcut>
execution(Enumeration * findBy*(java.lang.String));
</pointcut>
</wldf-instrumentation-monitor>
</instrumentation>
因此,正如您可以看到的,存在两种主要的生成数据的诊断框架组件。借助于定制运行时MBeans的异常,您无需对运行时MBeans执行任何特殊操作让它们生成数据;它们自己会做的。工具需要一些设置,服务器范围的工具需要的工作要少于应用程序范围的工具。然而,应用程序范围的工具具有更大的灵活性。您的下一个挑战将是确定收集您感兴趣的所有数据的方法。
收集数据
由于MBeans和Instrumentation组件忙于生成数据,所以下一个主要步骤是开始收集您感兴趣的数据块,并最终分析它们。许多数据可从MBeans和Instrumentation组件生成,所以您可能希望精心挑选您希望查看的内容。WLDF中的一些组件可帮助用户以不同的方式收集生成的数据。
数据收集器(收集的指标)
数据收集器用于收集、分析和归档由运行时MBeans生成的指标。来自所选定MBean属性的值由收集器按指定的采样速率收集。对于监视系统状态和测量系统性能来说,收集数据非常有用。数据收集器组件由WLDFHarvesterRuntimeBean管理,后者定义了哪些属性、实例和其他MBeans类型是可收集的。 图1和图2是显示数据收集器配置的管理控制台的屏幕截图。 
图 1:数据收集器收集来自JDBCDataSourceRuntimeMBean的属性 
图 2:数据收集器能够从它收集的以前选择的属性中挑选实例。
监视和通知
监视采集生成的数据并收集您感兴趣的数据。随后某一监视会通知您数据生成的时间。在查找特定事件或属性值时使用该时间非常方便。无需坐在服务器前试图捕捉正在发生的事件,您可以让WLDF在事件发生时通知您。监视能够从日志记录、数据事件(工具)和收集的指标中收集数据。监视包含一个规则表达式,因此当符合条件时,可发送一个或多个通知。例如,如果您希望在管理服务器的SocketsOpenedTotalCount超过5时收到通知,那么您可以使用规则表达式设置一个监视,如下所示:
<rule-expression>
(#&36;{com.bea:Name=MyAdministrationServer,
Type=ServerRuntime//SocketsOpenedTotalCount} > 5)
</rule-expression>
一旦您定义了您想监视的内容和要监视的服务器,就需要确定收到通知的方式。当您正在等待的规则表达式或事件触发时,通知会通知您。存在五种不同的通知:JMX、JMS、SNMP、SMTP和Image。 每个监视都能拥有一个或多个通知。WLDFWatchNotificationMBean能够提供关于每台服务器管理的监视和通知的统计信息。
图像捕捉
诊断图像是服务器级的状态转储,用于诊断重大故障。它能够捕捉大量结构化格式的重要数据,然后提供这些数据,以支持人们进行分析。当执行图像捕捉时,信息是在不同子系统上收集的,例如JMS、JDBC、EJB和JNDI,以及服务器状态的公共源,例如:
- 配置
- 日志缓存状态
- Java Virtual Machine (JVM)
- Work Manager状态
- JNDI状态
- 可收集数据
数据作为一系列XML文件保存在单一存档文件中。图像可通过以下方式手工捕捉:通过管理控制台、通过WLDF通知、作为“初次故障”检测、通过WLST和使用JMX。WLDFImageRuntimeMBean是支持创建诊断图像的MBean。MBean执行的每个操作都生成一个独立线程,以执行实际工作,如图3所示。 
图 3:诊断图像是收集到 .zip文件中的一系列 .img文件(XML文件)。
总之,除了标准日志文件以外,还有三种收集MBeans和工具生成的数据的方式。数据收集器(收集的指标)将收集来自运行时MBeans的数据,以便您能够精心挑选您希望从中获取数据的运行时MBeans,以及您感兴趣的属性。监视则负责查找Instrumentation组件生成的特定事件(针对运行时MBean生成的数据或日志文件项)、收集数据并在它出现时通知您。通过在指定时间进行快照,图像捕捉可收集关于您系统的数据。现在是查看这些数据的时候了。
访问数据和持久化数据
一旦您完成数据收集,您可能希望分析它,以查明您的系统中正在发生的事件。然而,在进行此操作之前,您需要访问数据,并且可能为了历史目的或只是为了防止您打电话请病假而将这些数据持久化,或者在周末收集数据。
数据访问器
诊断数据是Instrumentation组件生成的事件数据和运行时MBeans生成的指标数据,由收集器收集;诊断数据可从运行的服务器访问,或以离线模式(服务器关闭后)访问。在服务器运行时,可以使用管理控制台、WLST或第三方工具访问数据。在离线模式下,可以使用WLST命令exportDiagnosticData来访问存档数据。图4展示了数据访问器与其他WLDF组件之间的关系。 
图 4:数据访问器提供对运行时MBeans生成的数据和Instrumentation组件生成的事件的访问。它与收集器和存档进行交互,以获得服务器中可收集值的当前状态和过去状态。 WLDF使用WLDFDataAccessRuntimeMBean访问来自不同类型的数据存储器的数据。数据存储器是一个存储所收集的诊断信息的WLDF组件。 数据存储器根据诊断数据的类型(例如服务器日志、HTTP日志和收集的指标)分隔。可以将它们作为表格式数据进行建模,每条记录表示一个项目,列描述了项目的特性。图5展示了在线和离线数据访问器的角色。 
图 5:数据可通过在线和离线方式访问。在线方式访问当前数据,离线方式访问存储的数据。
存档
对于长期存储诊断数据,要设置WLDF数据存档器。Archiver组件将WLDF从WebLogic Server和应用程序收集的所有数据事件、日志记录和指标持久化。诊断存档是在每台服务器的基础上在域的config.xml中配置的,该配置是在服务器的server元素下完成的。数据可存储在文件或数据库中。基于WLDF文件的存档是历史数据的默认存储器,这些存档存储在服务器主目录下的data/store/diagnostics目录中。此文件的位置可以更改,您也可以选择将长期数据存储在基于JDBC的存储器中。数据存档器使用以下MBeans:
- WLDFArchiveRunttimeMBean
- WLDFDbstoreArchiveRuntimeMBean
- WLDFFileArchiveRuntimeMBean
结束语
现在,您应该具有跟踪环境(包括服务器、应用程序和系统资源)中正在发生的事件所需的全部工具。运行时MBeans、日志文件和Instrumentation组件可生成数据。数据收集器、监视和通知、日志文件和图像捕捉将生成的数据收集到组中,以方便您的使用。数据访问器帮助您使用管理控制台、WLST或第三方工具访问数据。最后,数据存档器帮助您将数据保存到文件或数据库中。如果遇到问题,则可以使用上述工具确保正确的数据被生成、收集和访问。然后可以分析这些数据,尽可能地解决问题。如果您试图增强环境的性能,可以试着创建一个Instrumentation事件,用它跟踪某发生某一事件所经历的时间;如果该时间超出您的预期,可设置监视通知您。 如果只希望对您的环境进行长期分析,那么您可以挑选运行时MBeans生成的数据、使用数据收集器(收集的指标)收集某些属性,并将这些属性持久化于数据库中,以便与图形处理工具一起使用。(诊断)环境是WebLogic Diagnostics Framework最得意的地方之一,我确信您能够想出许多使用所提供的工具改进WebLogic环境的方法,从而生成、收集、访问和持久化WebLogic服务器环境。
参考资料
原文出处:http://dev2dev.bea.com/pub/a/2006/06/wldf.html
| 作者简介 |
 Rebecca Sly |
Rebecca Sly 是BEA培训服务团队的课程开发人员,她主要从事客户培训。她在BEA的工作始于在英国担任讲师,向客户教授WLS、WLI和WLP课程。 |
作者其它文章
|