理解你的应用程序的价值

工程 | charris | 2009年11月16日 | ...

我们都喜欢使用最新最好的技术来构建应用程序,但归根结底,我们工作的目的是交付能实现业务目标的应用程序。我们在每个开发迭代中都专注于如何最好地实现这些目标,但我们如何知道最新的迭代是否实现了其目标?最新的发布是否影响了应用程序正在交付的现有业务目标?

SpringSource 通过提供 Spring Instrumentation 工具,让你能够洞察应用程序内部,这些工具包括显示趋势的监控工具和允许将数据导出给管理团队的报告工具。

Instrumented Spring Framework

Instrumented Spring Framework 是 Spring Framework 的商业版本,针对管理和监控进行了 instrumentation。只需使用 instrumented 版本的 jar 包替换 Spring Framework 的 jar 包,应用程序中的许多 Spring Bean 将自动导出到 JMX 进行管理,并使用 AOP 自动监控其性能。

本产品分发的所有 org.springframework.<module>.instrumented jar 包,仅仅是开源 Spring Framework 中对应 jar 包的编译时织入版本。例如,org.springframework.beans.instrumented jar 文件可以完全替代开源 Spring Framework 分发的 org.springframework.beans jar 包。

Instrumented Spring Framework 通过增强 AbstractApplicationContext 的 refresh 方法来自动发现应用程序。任何通过 AbstractApplicationContext 创建的 bean,如果 instrumented 组件知道如何管理和监控它,都将被发现为可管理资源。还有一些在 ApplicationContext 外部创建的组件也会被自动发现。当 AbstractApplicationContext 关闭时,其相关的可管理资源将被卸载。

一旦自动发现了可管理资源,Spring Framework Instrumentation 会自动创建表示每个发现的应用程序资源的 JMX ModelMBean,并将这些 ModelMBean 注册到自动检测到的 MBeanServer 中。这些 MBean 包含预定义的属性,代表被管理资源的指标或属性,以及提供运行时控制被管理资源的操作。

Instrumented Spring Framework 通过结合编译时织入的切面以及对现有 Spring Framework 代码的钩子来监控其大部分可管理资源。Instrumented Spring Framework 还使用 Spring AOP 代理来监控应用程序中带特定注解(如 @Controller, @Transactional, @Service, @Repository@Component)的组件的方法执行。

我们不仅将 Instrumented Spring Framework 限于核心 Spring Framework,还将其功能扩展到 Spring Web FlowSpring SecuritySpring Web Services。Spring 3.0 还引入了额外的注解,允许捕获高级指标。我们希望在未来的博客中更详细地介绍这一点。

使用 Hyperic HQ 进行监控

Hyperic HQ 管理、监控和控制大型 IT 环境,范围从数百台到数千台机器。这意味着数以万计的可管理资源,包括单个应用程序、应用服务器、操作系统、数据库和网络接口。

HQ 的自动发现功能由 Hyperic 的系统信息收集器 (SIGAR) 提供支持,SIGAR 是一个跨平台 API,用于收集软件资产信息。HQ Agent 使用 SIGAR 发现广泛的系统信息,包括 CPU 速度、RAM 大小、操作系统版本、主机名和 IP 地址。自动发现适用于所有主流平台——Unix、Linux、Windows、Mac OSX、Solaris、HP-UX 和 AIX。

与所有 SpringSource 产品一样,Hyperic HQ 构建于开源之上。由于本文重点是高级报告,最终会生成一份经理能理解的精美报告,我将使用 Hyperic Enterprise Edition。你可以在 http://www.hyperic.com 找到关于 Hyperic Enterprise EditionHyperic HQ 开源版本之间差异的详细信息。

如果你正在使用 Instrumented Spring Framework,它将自动发现你应用程序的内部指标。这包括关于 Spring Core、Spring DAO、Spring ORM、 Spring JEE 集成、Spring MVC 以及你使用 Instrumented Spring Framework 注解的应用程序指标的内部指标。

作为示例,我将 Instrumented Spring Framework 添加到 Spring Travel 演示应用程序中,并将其部署到 Tomcat 中,然后使用 Apache jMeter 对系统施加一些负载。这是 HQ 自动检测到的 Spring ORM 的 Hibernate 指标截图。

ChrisHarrisBlog_Screenshot01

然而,本文的重点是获取业务指标。Instrumented Spring Framework 会自动暴露任何带有 @Service 注解的公共方法。这意味着 我的 "saveBooking" 方法在我服务中会自动暴露。

ChrisHarrisBlog_Screenshot02

哇,现在我能够衡量最新开发迭代对业务的影响了。此外, 从运营角度来看,我现在可以衡量环境中每台机器的业务价值。记住,我所做的只是引入 Instrumented Spring Framework,剩下的 Hyperic HQ 就完成了。

正如我们所看到的,环境中有许多有价值的数据。我如何将其 展示给我的经理呢?

展示给经理的视图

Hyperic IQ 是一个报告和智能平台,它将 Hyperic HQ 收集的数据转化为系统智能,业务用户可以使用这些智能进行分析、评估、规划和制定战略决策。这可以应用于任何数据中心中任何资源的任何指标,只需在 Hyperic IQ 中点击几下,我就可以获得

ChrisHarrisBlog_Screenshot03

也许作为折线图效果更好(你觉得呢??)

ChrisHarrisBlog_Screenshot04

正如你所看到的,预订数量开始下降。这可能是由于这段时间用户自然减少,然而,由于 Hyperic HQ 正在监控整个环境,我们可以非常容易地检查这种下降是否是由于应用程序内部问题或基础设施本身的问题造成的。

现在我可以让 IQ 每周将这份报告的 PDF 发送给我的管理团队,每个人都能完全了解应用程序正在交付的真正业务价值。

如果你对了解更多信息感兴趣,欢迎参加我们每周四上午 11 点 PDT / 下午 2 点 EDT 举行的免费在线 HQ 演示。你还可以通过下载试用版,在你自己的环境中试用 Hyperic HQ Enterprise。

写这篇博客花的时间比从我的应用程序中获取这些数据所需的时间要长。我只引入了 Instrumented Spring Framework,剩下的 Hyperic 就完成了。哇!

订阅 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助你加速进步。

了解更多

获得支持

Tanzu Spring 在一个简单的订阅中提供对 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看全部