理解你的應用程式的價值

工程 | 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 社群所有即將舉行的活動。

檢視全部