理解您應用程式的價值

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

我們都喜歡用最新最好的技術構建應用程式,但歸根結底,我們是為了交付實現業務目標的應用程式而獲得報酬的。我們在每個開發迭代中都專注於如何最好地實現這些目標,但我們如何知道最新的迭代是否實現了其目標?最新的版本是否影響了應用程式正在實現的現有業務目標?

SpringSource 透過提供 Spring 儀器化功能,讓您能夠深入瞭解應用程式,並透過顯示趨勢的監控工具和允許您將資料匯出給管理團隊的報告工具來提供這種能力。

已儀器化的 Spring Framework

已儀器化的 Spring Framework 是 Spring Framework 的一個商業版本,經過儀器化以進行管理和監控。只需使用已儀器化的 jar 檔案替換 Spring Framework 的 jar 檔案,您應用程式中的許多 Spring Bean 將會自動匯出到 JMX 進行管理,並透過 AOP 自動監控其效能。

此產品隨附的 org.springframework.<module>.instrumented jar 檔案都是開源 Spring Framework 中對應檔案的編譯時織入版本。例如,org.springframework.beans.instrumented jar 檔案是開源 Spring Framework 中隨附的 org.springframework.beans jar 檔案的直接替換項。

已儀器化的 Spring Framework 透過攔截 AbstractApplicationContext 的 refresh 方法來自動發現應用程式。透過 AbstractApplicationContext 建立的任何 bean 都將被發現為一個託管資源,前提是已儀器化元件知道如何管理和監控它。一些在 ApplicationContext 之外建立的元件也將被自動發現。當 AbstractApplicationContext 關閉時,其關聯的託管資源將被解除安裝。

一旦託管資源被自動發現,Spring Framework 儀器化會自動建立代表其發現的每個應用程式資源的 JMX ModelMBean,並將這些 ModelMBean 註冊到自動檢測到的 MBeanServer 中。這些 MBean 包含預先確定的屬性,這些屬性代表被管理資源的度量或屬性,以及提供被管理資源執行時控制的操作。

已儀器化的 Spring Framework 使用編譯時織入的方面和對現有 Spring Framework 程式碼的鉤子相結合的方式來監控其大多數託管資源。已儀器化的 Spring Framework 還使用 Spring AOP 代理來監控您應用程式中被標記為 @Controller@Transactional@Service@Repository@Component 的元件的方法執行。

我們不將已儀器化的 Spring Framework 僅限於核心 Spring Framework,還將其功能提供給 Spring Web FlowSpring SecuritySpring Web Services。Spring 3.0 還引入了額外的註解,以實現高階度量捕獲。我們希望在未來的部落格中更詳細地介紹這一點。

使用 Hyperic HQ 進行監控

Hyperic HQ 管理、監控和控制大型 IT 環境 — 從數百到數千臺機器。這相當於管理數萬個資源,涵蓋單個應用程式、應用程式伺服器、作業系統、資料庫和網路介面。

HQ 的自動發現功能由 Hyperic 的系統資訊收集器(SIGAR)提供支援,這是一個用於收集軟體清單資料的跨平臺 API。HQ 代理使用 SIGAR 來發現廣泛的系統資訊,包括 CPU 速度、記憶體大小、作業系統版本、主機名和 IP 地址。自動發現適用於所有主要平臺 — Unix、Linux、Windows、Mac OSX、Solaris、HP-UX 和 AIX。

與所有 SpringSource 產品一樣,Hyperic HQ 是建立在開源基礎之上的。由於這篇部落格專注於高階報告,其最終結果將是一份能讓經理理解的報告,我將使用 Hyperic 企業版。您可以在 Hyperic 企業版Hyperic HQ 開源版 之間找到完整的詳細資訊,網址為 http://www.hyperic.com

如果您正在使用已儀器化的 Spring Framework,它將自動發現您應用程式中的內部度量。這包括關於 Spring Core、Spring DAO、Spring ORM、Spring JEE 整合、Spring MVC 的內部度量以及您使用已儀器化 Spring Framework 註解的應用程式度量。

例如,我將已儀器化的 Spring Framework 新增到 Spring Travel 演示應用程式中,將其部署在 Tomcat 中,並使用 Apache jMeter 對系統施加負載。以下是我使用 HQ 自動檢測到的 Spring ORM 的 Hibernate 度量的螢幕截圖。

ChrisHarrisBlog_Screenshot01

本部落格的重點在於獲取業務度量。已儀器化的 Spring Framework 會自動公開用 @Service 註解的所有公共方法。這意味著我的服務中的 "saveBooking" 方法會自動暴露

ChrisHarrisBlog_Screenshot02

太棒了,我現在能夠衡量最新開發迭代對業務造成的影響。此外,從運營角度來看,我現在可以衡量環境中每臺機器的業務價值。請記住,我所做的只是引入了已儀器化的 Spring Framework,剩下的 Hyperic 就完成了。哇!

正如我們所見,我們從環境中獲得了大量有價值的資料。我該如何將其展示給我的經理?

展示經理檢視

Hyperic IQ 是一個報告和智慧平臺,它將 Hyperic HQ 收集的資料轉化為業務使用者可以用來分析、評估、規劃和制定戰略決策的系統智慧。這可以應用於任何資料中心的任何資源的任何度量,並且透過在 Hyperic IQ 中進行幾次點選,我就可以獲得

ChrisHarrisBlog_Screenshot03

也許以折線圖的形式展示效果更好(您怎麼看??)

ChrisHarrisBlog_Screenshot04

正如您所見,預訂數量開始下降。這可能是由於這些時間段內使用者的自然下降,但是,由於 Hyperic HQ 正在監控整個環境,我們可以很容易地檢查這種下降是由於應用程式內部還是基礎設施本身的問題。

我現在可以讓 IQ 每週將此報告的 PDF 傳送給我的管理團隊,每個人都能完全理解應用程式正在提供的真實業務價值。

如果您有興趣瞭解更多資訊,歡迎參加我們每週四上午 11 點 PDT / 下午 2 點 EDT 的免費每週 HQ 直播演示。您也可以透過下載試用版在您自己的環境中試用 Hyperic HQ 企業版。

我寫這篇部落格花費的時間比從我的應用程式中提取這些資料所需的時間還要長。我引入了已儀器化的 Spring Framework,剩下的 Hyperic 就完成了。太棒了!

獲取 Spring 新聞通訊

透過 Spring 新聞通訊保持聯絡

訂閱

領先一步

VMware 提供培訓和認證,助您加速進步。

瞭解更多

獲得支援

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案,只需一份簡單的訂閱。

瞭解更多

即將舉行的活動

檢視 Spring 社群所有即將舉行的活動。

檢視所有