使用 ITCAM for SOA 监控 BPM Systems,第 2 部分: ITCAM for SOA 如何监控面向服务的体系架构

理解 SOA 系统的度量指标以及 ITCAM for SOA 通过度量指标呈现 SOA 系统状态的方式

ITCAM for SOA 收集的度量指标来自 SCA 消息,在本文中,我们将分析、比较这些指标并将它们与 WebSphere Dynamic Process Edition (WDPE) 和运行时行为对应起来。我们还将解释如何阅读、理解和分析这些指标,以及如何通过这些指标关注 WDPE 应用程序。

Yunjie Tan, BPM 集成 QA, WSO2 Inc

http://www.ibm.com/developerworks/i/p-yjtan.jpgYunjie Tan (Jim) 是一位资深软件工程师,BPM Integration QA 团队设计师。他不仅非常熟悉 WPS/WID 产品,还是一位 UML、业务分析/建模以及软件方法专家。他还撰写了一本关于 UML 的中文畅销图书《Elephant--thinking in UML》。



Hua Cheng, BPM 集成 QA, WSO2 Inc

http://www.ibm.com/developerworks/i/p-hcheng.jpgHua Cheng (Ted) 于 2003 年加入 IBM,目前是 BPM Integration QA 团队负责人。他对 WID、WPS、Modeler、Monitor 和 Adapter 等 BPM 产品拥有丰富的经验,非常熟悉 Java/J2EE 开发和产品测试。在担任现有职务之前,他参与了几个 WPS 开发和产品测试项目,曾担任 WPS (Webpshere Process Server) 组件所有者、开发负责人和测试负责人等职。



Sen Wang, BPM 集成 QA, WSO2 Inc

http://www.ibm.com/developerworks/i/p-swang.jpgSen Wang (Watson) 目前是 BPM Integration QA 团队成员。他对 WID、WPS、Message Broker、WSRR 和 FileNet 等 BPM 产品拥有丰富的经验,并且非常熟悉 Java/J2EE 开发。在担任现有职务之前,他从 2007 年开始在 SOA 设计中心担任实习生,拥有丰富的客户项目(如银行和保险项目)经验。



2010 年 1 月 14 日

示例场景

除 ITCAM for SOA 之外,还有其他 ITCAM 产品,比如 ITCAM for Response Time、ITCAM for WebResource 和 ITCAM for Transaction。但是,这些产品在应用程序级别监控系统。与其他产品不同,ITCAM for SOA 可以在细粒度级别而不是应用程序级别监控系统。也就是说,ITCAM for SOA 可以识别应用程序内的服务组件架构(Service Component Architecture,SCA)组件和消息。

让我们先从一个示例场景(见图 1)来探索 ITCAM for SOA。这个示例场景中有 3 个模块:Module 1 包含一个 Business Process Execution Language (BPEL) SCA 组件,它为客户端提供服务;Module 2 和 Module 3 包含一些 Java SCA 组件,它们为 BPEL 提供计算服务。当客户端调用这个 BPEL 组件时,BPEL 调用这些 Java 组件进行计算。假定这 3 个模块部署在异构环境中,这样 BPEL 必须使用各种协议调用计算服务。您将看到,这个示例场景使用了 SCA/JAX-RPC/JMS/HTTP 绑定。

在图 1 中,箭头表示请求和响应消息的位置。向右箭头表示请求消息,向左箭头表示响应消息。不同的箭头样式表示不同的消息协议。在下一小节中,我们将解释 “ServiceRequester” 和 “ServiceProvider”。

图 1. 示例场景
本文使用的示例场景

ITCAM for SOA 如何记录通信数据

当图 1 中展示的应用程序执行时,ITCAM for SOA 的 Data Collector 监控 SCA 或 WebService 消息并将这些消息作为通信数据发送到 ITCAM for SOA 服务器端。ITCAM for SOA 正是基于这些通信数据分析系统。通信数据到达时,ITCAM for SOA 分析通信数据并获取 Service-Provider、WSDL-ServicePort 和它们的名称空间等信息以识别每个惟一事务,然后在 Services_Inventory 中为识别的事务创建记录。

尽管一条通信数据可能包含服务请求者和服务提供者,但 ITCAM for SOA 只记录服务提供者,而不记录服务请求者。也就是说,即使有许多客户端请求一个服务,ITCAM for SOA 只记录发送到服务提供者的请求消息和来自服务提供者的响应消息,而关于服务请求者的信息将被忽略。ITCAM for SOA 将为服务提供者的信息创建两条记录:一条用于记录请求消息,另一条用于记录响应消息。

同时,ITCAM for SOA 将收集来自通信数据的某些数据,将其作为度量指标,并将它们更新为 Services_Inventory 表中的对应事务记录。ITCAM for SOA 的重要度量指标包括 “Message Count”、“Avg Message Length”、“Avg Elapsed Time” 和 “Fault Count”。(参见表 1 了解关于 Services_Inventory 表字段的更多细节)。

例如,如果 “AccountVerificationToBe” 组件调用 “CustomerRetrieval” 组件一次,Services_Inventory 表中将产生两条记录。

表 1. Services_Inventory 中的示例记录
模块名组件名操作名服务类型消息计数平均消息大小Avg Elapsed Time错误计数
AccountVerificationCustomerRetrievalInputCriterionRequester202910
AccountVerificationCustomerRetrievalInputCriterionProvider202900

这个示例说明以下两点:

  • ITCAM for SOA 将只记录发送到服务提供者的请求消息和来自服务提供者的响应消息,而不处理服务请求者。在本例中,“AccountVerificationToBe” 组件是服务请求者,“CustomerRetrieval” 组件是服务提供者。这样,ITCAM for SOA 创建一个 “请求者” 行来记录发送到服务提供者 “CustomerRetrieval” 的请求消息,创建另一行记录来自该服务提供者的响应消息。
  • 多次运行应用程序,记录并不会增加,ITCAM for SOA 只更新记录的度量指标值,比如 “Message Count”、“Avg Message Length”、“Avg Elapsed Time” 和 “Fault Count”。

图 2 显示示例应用程序运行一次后 ITCAM for SOA 记录下的消息计数,每个箭头上的数字显示 ITCAM for SOA 在一次调用中捕获的消息数量。

图 2. ITCAM for SOA 在运行一次后记录的消息计数
ITCAM for SOA 在运行一次后记录的消息计数

图 2 引出 6 个问题(Q1 到 Q6),这些问题需要进一步解释,以便理解 ITCAM 的工作方式。

  • Q1:为何没有为 “Account VerificationToBe” 组件捕获消息计数?
    因为 ITCAM for SOA 的 Data Collector 只探测 SCA 和 WebService 消息。“Account VerificationToBe” 组件是客户端的第一个接口,如果从外部发送到 “Account VerificationToBe” 组件的事务不是 SCA 或 WebService 消息,Data Collector 就探测不到它们。换句话说,如果客户端通过 SCA 或 WebService 协议调用 “Account VerificationToBe” 组件,就会捕获消息计数。
  • Q2:为何一次调用会产生两条请求消息和两条响应消息,而不是一条消息呢?
    乍看之下,请求和响应的消息计数应该是一个,因为只发生了一次调用。但是,正确的答案应该是两个。这是由 SCA 的调用机制引起的:SCA 从调用者到被调用者的调用是间接的,调用者发送一条 SCA 请求消息到 SCA 容器,然后 SCA 容器将一条新消息转发到被调用者。在这个示例中,Data Collector 将捕获两条 SCA 消息,它们有相同的调用源和目标。

这就意味着 ITCAM for SOA 将对这里的所有 SCA 消息计数。图 3 显示 SCA 容器中的交互。现在,您应该明白为何 DataCollector 捕获两条请求消息和两条响应消息了。实际上,不同的 SCA 调用模式将导致不同的消息计数。请参阅 WebSphere Process Server V6.1 中的 SCA 调用模式 了解关于 SCA 调用模式的更多信息。

图 3. 同步调用(请求-响应操作)
同步调用(请求-响应操作)的交互
  • Q3:Import 和 Export 之间为何没有消息?
    WDPE SCA 容器将 Export 视为一个特殊组件,而不是真实的服务提供者。发送到 Export 的消息不会被 SCA DataCollector 探测到。这样,Import 和 Export 之间的消息计数为 0。但是,如果消息协议是 WebService,情况又不一样(参见 Q4)。
  • Q4:为何只有一条请求消息和一条响应消息?
    如 Q3 所述,发送到 Export 的消息不会被 SCA DataCollector 探测到。但除 SCA DataCollector 之外,ITCAM for SOA 还有一个 WebService DataCollector。尽管这条消息不能被 SCA DataCollector 探测到,但 WebService DataCollector 能够探测到 JAX-RPC 消息。
    如 Q2 所述,由于 SCA 的调用机制,一次调用将产生两条消息。而这里我们只有一条消息,这说明另一条消息没有被 SCA DataCollector 捕获,而是被 WebService DataCollector 捕获了。那条消息没有穿过 SCA 容器,所以只有一条消息被捕获。
  • Q5:为何响应消息计数为 3?
    这是由 JMS 调用机制引起的。在 JMS 调用者端,可能有两个队列:“send” 队列和 “receive” 队列;但是在 JMS 被调用者端,则可能有 3 个队列:“receive”、“send” 和 “callback” 队列。因此,如果应用程序将 JMS 被调用者设置为使用 “callback” 队列,则在被调用者端将生成 3 条消息。
  • Q6:为何两个组件都是 “ServiceRequester”?
    如 Q1 所述,由于 “Account VerificationToBe” 组件是客户端的第一个接口且 DataCollector 不能探测到来自客户端的非 WebService 消息,所以它充当 “ServiceRequester”;如 Q3 所述,Export 不被 SCA 容器视为真正的服务提供者,因此它充当 “ServiceRequester”。

“DetermineApplicantEligibility” 和 “DetermineApplicantEligibilityHTTPImport” 都不属于 Q1 和 Q3 的情况,它们既充当 “ServiceProvider” 又充当 “ServiceRequester”。例如,“DetermineApplicantEligibility” 既是 “DetermineApplicantEligibility SCA export” 的 “ServiceProvider”,也是 “DetermineApplicantEligibilityHTTPImport” 的 “ServiceRequester”。


Services_Inventory 表字段概述

通信数据存储在 Services_Inventory 表中。ITCAM for SOA 使用 Services_Inventory 表中的数据呈现受监控的系统的状态。表 2 列示了 Services_Inventory 表中的所有字段。

注意:Services_Inventory 表通常在 TEP 中使用,同时用于常见的 WebService 和 SCA 组件。用于 SCA 组件时,有些字段名与内容不兼容。例如,SCA 组件没有名为 “Operation Namespace” 的属性,因此在字段 “Operation Namespace (Unicode)” 中,它实际上存储被调用的 SCA 组件的接口中的方法名。所有不兼容字段都在表中用粗体突出显示。

注意:WPS SCA 容器目前不支持消息长度。在图 4 和图 5 中,所有 SCA 消息大小都为 0,但 WebService 消息大小则不为 0。

表 2. ITCAM for SOA 度量指标
指标名称说明和用途
Origin Node被托管系统的应用程序环境实例
Interval Status间隔状态(未完成=1,完成=2)
Operation Name (Unicode)对于 WebService,这是 WSDL 操作名;对于 SCA 组件,这是被调用 SCA 组件的接口中的方法的名称
Operation Namespace (Unicode)对于 WebService,这是被数据收集器监控的 WSDL 操作的名称空间;对于 SCA 组件,这是包含被调用 SCA 组件的 SCA 模块的名称
Service Port Namespace (Unicode)对于 WebService,这是服务端口(在其中拦截消息)的名称空间;对于 SCA 组件,这是被调用的 SCA 组件的名称
Application Server Cell Name (Unicode)在其中拦截消息的应用服务器的单元名
Application Server Node Name (Unicode)在其中拦截消息的应用服务器的节点名。对于 ND,本字段表明通信数据发生在哪个集群成员中
Application Server Cluster Name (Unicode)在其中拦截消息的应用服务器集群的名称
Application Server Environment在其中运行数据收集器的应用服务器运行时环境的类型
Application Server Name (Unicode)在其中拦截消息的应用服务器的名称
Local Hostname (Unicode)在其中拦截消息的主机的名称
Local IP Address (Unicode)在其中拦截消息的计算机的 IP 地址
Service Port Name (Unicode)对于 WebService,这是在其中拦截消息的服务端口的名称;对于 SCA 组件,这是被调用的 SCA 组件的名称
Service Type服务类型(0=请求者,1=提供者)
Average Elapsed Message Round Trip Time平均往返时间(以毫秒为单位)
Elapsed Time Message Count在该时间间隔期间观察到的消息的数量(包含经过时间值)
Message Count在这个时间间隔内观察到的消息的数量
Max Elapsed Time在当前间隔中观察到的任何消息的最大经过时间(以毫秒为单位)
Min Elapsed Time在当前间隔中观察到的任何消息的最小经过时间(以毫秒为单位)
Interval Begin Time执行消息拦截时的起始日期(UTC)和时间(含该日期和时间)
Interval End Time执行消息拦截时的终止日期(UTC)和时间(不含该日期和时间)
Interval Length间隔长度(以分钟为单位)
Elapsed Message Round Trip Time Std Dev这个间隔内的所有经过的往返时间的标准偏差(以毫秒为单位)
Port Number被监控的应用服务器运行时环境正在监听的端口号(0 - 65535)
Average Message Length在这个间隔中观察到的平均消息长度(包括头部,以字节为单位),目前不支持 SCA 消息长度
DC Info (Unicode)用于链接到与这个环境相关的工作空间的数据收集器信息
Fault Count这个间隔期间观察到的故障数量
Max Message Length这个间隔中观察到的最大消息长度(以字节为单位),目前不支持 SCA 消息长度
Message Length Std Dev当前间隔中观察到的所有消息长度的标准偏差(以字节为单位)
Min Message Length这个间隔中观察到的最小消息长度(以字节为单位)
Service Port Name Type服务端口名
Table Version (Unicode)这个库存表的版本号
TEMA Info (Unicode)Tivoli Enterprise Monitoring Agent 的相关信息,可能用于链接到其他相关名称空间

在 TEP 中查看通信数据

下面,我们将展示 ITCAM for SOA 如何操作,以及如何在 Service_Inventory 中记录通信数据。ITCAM for SOA 在 TEP 中以图形方式显示通信数据。下面 3 个图展示 ITCAM for SOA 如何显示通信数据。

图 4. TEP 中的 Message Summary 工作空间视图
TEP 中的 Message Summary 工作空间视图
图 5. TEP 中的 Services Management 工作空间视图
TEP 中的 Services Management 工作空间视图
图 6. TEP 中的 Performance Summary 工作空间视图
TEP 中的 Performance Summary 工作空间视图

参考资料

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=SOA and web services, Tivoli
ArticleID=461614
ArticleTitle=使用 ITCAM for SOA 监控 BPM Systems,第 2 部分: ITCAM for SOA 如何监控面向服务的体系架构
publish-date=01142010