监视是收集运行时数据,公开这些数据,以及计算服务质量标准以便系统管理员可以评估性能并接收报警通知的整个过程。在运行时操作过程中,管理员仅需与 Monitoring Console 交互即可查看性能统计信息、创建自动监视规则以及确认报警。但是,了解 Monitoring Framework 的体系结构以及 Monitoring Framework 如何连接到 Monitoring Console 对执行配置、故障排除和高级监视是有所帮助的。
Java ES 中的监视基于以下概念:
通用监视模型 (Common Monitoring Model, CMM) 确保所有 Java ES 组件公开统一对象和可比较属性的值。
CMM 接口定义的 Java 对象为产品组件提供标准化的程序设备。
节点代理公开系统上安装的所有组件的所有受监视对象,并管理这些对象的统计信息、规则和报警。
独立主机上的主代理聚合所有节点代理的所有受监视对象,并使数据可为 Monitoring Console 使用。
以下各节分别对监视体系结构的这些概念进行了更详细的介绍。
标准化监视机制的基础是定义受监视的对象并在所有受监视的组件中应用这些对象。为此,监视体系结构将通用监视模型 (Common Monitoring Model, CMM) 定义为由分布式管理任务组 (Distributed Management Task Force, DMTF) 维护的通用信息模型 (Common Information Model, CIM) 的扩展。CMM 既是信息模型(指定受监视的对象,如计算机、应用程序等),也是数据模型(指定统一值,如操作状态值)。作为信息模型的一部分,CMM 还定义对象的属性(例如由服务处理的请求数)以及对象之间的关系(如在某台计算机上托管某个服务的事实)。
由于 CMM,一些概念(如应用程序、服务、访问点等)对于所有产品组件都是相同的,即使底层实现不同也如此。例如,Web Server 可能公开用于处理 HTTP 请求的服务,而 Directory Server 可能公开用于处理 LDAP 请求的服务。但是,标准对象会捕获这两种功能的公共特性,例如可以度量已处理的请求数,给定时间段内响应请求的平均时间,等等。
而且,某些数据值已标准化,这样其含义在整个系统中是统一的。例如,不论正在监视的是什么产品组件,操作状态 DEGRADED 始终意味着服务仍然可用,但性能已极大下降。
CMM 规范体现在用于程序设备的 Java 接口和类中,如附录 A,CMM 对象参考 中所述。
在 Monitoring Framework 中,程序设备是实现 CMM 定义的一组 Java 接口和类。为了实现 Java ES 中新的监视功能,产品组件已为其代码提供了程序设备,这些代码用于实例化 CMM 对象,并通过受监视对象的属性公开运行时值。每个组件实现的 CMM 对象确定可以监视的内容,因此,一些组件公开的属性可能少于其他组件。附录 B,每个组件公开的受监视对象 中给出了每个产品组件公开以便进行监视的对象和属性的列表。
在监视术语中,节点是由唯一的全限定域名或 IP 地址标识的单个逻辑主机。节点可以是整个系统,也可以是配置为虚拟系统的 Solaris zone。节点代理与该主机上所有具有程序设备的组件通信,并公开这些节点的所有受监视的对象。节点代理还管理所有用来收集性能统计信息、监视规则中定义的阈值以及为节点代理包含的受监视对象生成报警的逻辑。
下图显示了具有三个 Java ES 产品组件实例的单个主机上的节点代理的内容。它还显示了如何在节点代理中实例化程序设备,以便公开由产品组件提供的值。
该节点代理被实现为加载到 Common Agent Container(本身为 Java 虚拟机)中的一个模块。节点代理的实现基于 Java Management Extensions (JMX)(用于监视和远程管理的标准 Java 扩展)。任何启用了 JMX 且理解 CMM 的监视应用程序都可以访问节点代理中的受监视对象。使用 JMX 功能时,节点代理还可以通过简单网络监视协议 (Simple Network Monitoring Protocol, SNMP) 公开某些受监视的对象。
作为 Monitoring Console 安装的一部分,主代理被部署在一台独立的计算机上。主代理中配置了所有节点的名称或地址,这样它可以聚合所有节点代理的受监视对象。主代理也基于 JMX,主代理使用 JMX(也被加载到主代理的本地 Common Agent Container 中)与节点代理通信。
下图显示了连接到两个节点的主代理。Monitoring Console 连接到主代理以监视每个节点上的三个组件。如果希望使用 SNMP 进行监视,必须分别连接到每个节点,因为主代理不聚合 SNMP 属性。主代理被设计为仅与 Monitoring Console 配合使用,不能通过其他监视应用程序访问主代理。