IBM InfoSphere DataStage and QualityStage ">Operations Console 是一个 Web 应用程序,支持实时监控 InfoSphere Information Server 安装中的 DataStage 引擎组件。这提供了在该系统上运行的所有 DataStage 作业(包括现在的和历史的作业)的完整视图。它也提供了对 CPU 使用率、可用内存和磁盘空间等关键操作系统指标的监测。
下文将详细介绍 Operations Console 中显示的指标和属性,并提供有关数据收集位置的信息。它假定读者大体上熟悉 Operations Console 和 DataStage。此处提供的信息与 InfoSphere Information Server version 8.7 相关。
数据源
Operations Console 中显示的信息是从以下来源读取的。
元数据存储库 (XMETA) :这是设计时元数据存储库,主要由 DataStage Designer 使用,用于存储表定义、作业设计等。 用户注册表:根据系统的配置,该注册表可以是一个内部注册表,所
有的用户信息都存储在元数据存储库中;该注册表也可以是一个外部注册表(如 LDAP),用户信息存储在外部目录系统中。 DSEngine:这是运行时引擎和存储库,在运行作业的时候,主要由 DataStage Director 和作业使用。当 DataStage Designer 对作业设计进行编译时,它也可以用于存储可执行版本的作业设计。 操作数据库 (DSODB):这是存储有关作业运行信息的操作存储库。一旦启用,每此运行作业的时候,有关该运行的数据就会存储在这里。操作数据库使用了公开记录的开放式架构,并且,因为使用的是一个开放式架构,
所以本文中演示了提取信息的相关 SQL 查询(如果适用)。请注意,为了清楚起见,只演示了 DB2 SQL 查询,没有进行分页或排序。
日期和时间
Operations Console 中显示的所有日期和时间都会被转换,以浏览器的时区进行显示。例如,如果引擎层系统时区为 UTC-0500,浏览器的时区是 UTC+0000,而事件于本地时间 2011 年 11 月 3 日下午 4 时在引擎上发生,那么该事件在浏览器中显示为于 2011 年 11 月 3 日晚上 9 点发生。同样,如果使用另一个浏览器,该浏览器的时区为 UTC+0500,那么同一个事件在该浏览器将会显示为于 2011 年 11 月 4 日凌晨 2 时发生。
Operations Console 的主页上会显示时区,包括引擎层系统和浏览器的 UTC 偏移量,在表 1 中显示示为 local。
表 1. 时区
常规属性 引擎启动时间: 2011 年 10 月 25 日,15:46:05(本地时区)。引擎的时区为 UTC+0000 (GMT),本地时区为 UTC+0000 操作系统: Linux:2.6.32.45-0.3-pae CPU: 2x Intel(R) Pentium(R)4 CPU 3.20GHz 内存: 2.8GB 物理内存 - 2.01GB 虚拟内存
在操作数据库本身中,不管引擎系统所在的时区是哪个时区,所有时间戳都以 UTC 存储。
重要的是要注意,有些时间戳是使用引擎层系统上的时钟创建的,有些时间戳是使用服务层上的时钟系统创建的。如果这些不同的物理系统和时钟明显不同步,那么在检查和比较时间戳时就可能存在差异。
操作系统监测
Operations Console 显示了各种操作系统指标的信息,如 CPU 使用率和可用内存。本文稍后会解释与每个指标相关的属性,以及最终读取信息的位置。
请注意,在下面的 SQL 查询示例中,如果引擎已经配置了远程节点的信息(通过 DSODBConfig.cfg 中的 ResourceNode 属性),从操作数据库中读取的信息可以是引擎本身(也就是说,<remoteNodeName> = <engineName>),也可以是适用于某个特殊的远程节点的信息。
CPU – 总使用率图表
可以将 CPU 总使用率图表显示在主页上,也可以选择将它显示在作业运行细节窗口和活动页面上。例如,活动页面的 CPU 总使用率如图 1 所示。
图 1. CPU 总使用率图表
使用 SQL 查询从操作数据库读取 CPU 总使用率的基本信息,如清单 1 所示。
清单 1. SQL 示例:CPU 总使用率
SELECT X.CPUPCTIDLEAVG, X.STARTTIMESTAMP, X.ENDTIMESTAMPFROM DSODB.RESOURCEUSAGESYSTEM X, DSODB.HOST Y1, DSODB.HOST Y2WHERE (X.HOSTID = Y1.HOSTID AND Y1.HOSTNAME = <remoteNodeName>) AND (X.HEAD_HOSTID = Y2.HOSTID AND Y2.HOSTNAME = <engineName>) AND ( (X.STARTTIMESTAMP >= <startTimeStampUTC> AND X.STARTTIMESTAMP <= <endTimeStampUTC>) OR (X.ENDTIMESTAMP >= <startTimeStampUTC> AND X.ENDTIMESTAMP <= <endTimeStampUTC>) OR (X.STARTTIMESTAMP < <startTimeStampUTC> AND X.ENDTIMESTAMP > <endTimeStampUTC>) )
通过计算 100% - CPU idle time,将之前的 SQL 查询返回的 CPU 空闲百分比转换为 CPU 使用率。此处,100% 表示在系统上的所有处理单元的总体可能使用率。例如,如果系统配备了 4 个 CPU,其中一个 CPU 在完全使用中,那么空闲时间将是 75%(因此,总使用率为 25%)。
操作数据库中由之前的查询所返回的信息是由 ResMonApp 和 ResTrackApp 服务写入的,这些服务使用下面的方法获取信息。
Linux:使用 /proc/stat 的 CPU 字段中的空闲条目计算 CPU 空闲百分比。从之前记录的值中减去这个空闲值,除以 CPU 字段中的所有其他条目的总和,再乘以 100,就可以得到 CPU 空闲百分比值。 AIX:使用由 perfstat_cpu() 系统调用返回的空闲条目总和来计算 CPU 空闲百分比。从之前记录的值中减去这个空闲值,除以 CPU 字段中的所有其他条目的总和,再乘以 100,就可以得到 CPU 空闲百分比值。
Solaris:使用 kstat_*() 系统调用返回的 kstat 控制结构中的 cpu_stat 模块中的所有空闲条目总和来计算 CPU 空闲百分比。从之前记录的值中减去这个空闲值,除以 CPU 字段中的所有其他条目的总和,再乘以 100,就可以得到 CPU 空闲百分比值。 Windows:使用 Windows PerformanceCounter 类返回的空闲值(计数器类为 Processor,计数器名称为 % Idle Time)来计算 CPU 空闲百分比。