使用Hyperic-HQ解決應(yīng)用程序問題
?近期某項目, 在客戶方運(yùn)行時經(jīng)常莫名其妙的死機(jī), 因此急需調(diào)查死機(jī)的原因以及盡可能的尋找解決辦法.
分析此場景, 此系統(tǒng)是一個Java的web系統(tǒng), 使用到了EJB. 具體系統(tǒng)架構(gòu)為:由客戶端訪問某Sun ONE Server, 系統(tǒng)的JSP、Servlet存在于此Sun ONE Server上, 然后Sun ONE Server上的Servlet或JavaBeans再訪問另一臺機(jī)器上的Weblogic上的EJB, 然后EJB通過DAO訪問三臺Oracle數(shù)據(jù)庫, 其中一臺Oracle數(shù)據(jù)庫中又被劃分為五個表空間, 因此在Weblogic上分別建立了七個Connection Pool以及對應(yīng)的七個XA datasource. 此系統(tǒng)的EJB數(shù)量多達(dá)500+,?發(fā)布的J2EE應(yīng)用程序以及web應(yīng)用程序有200+,?總體來說, 整體結(jié)構(gòu)比較復(fù)雜.
對于這樣一個系統(tǒng), 要想分析一個無法再現(xiàn)的bug是非常不容易的, 這個也是這次具有挑戰(zhàn)性的地方.
首先, 我們打開了所有服務(wù)器上的日志輸出, 進(jìn)而分析了所有的日志. 最后把問題定位在Weblogic連接數(shù)據(jù)庫的connection pool上. 但是在Weblogic 8.1上, 我們通過JDBC log得到的Connection Pool的信息非常有限, 那么如何能更多的得到數(shù)據(jù)庫連接的信息呢? 我們在網(wǎng)上發(fā)現(xiàn)了一個開源工具Hyperic-HQ協(xié)助我們很好地解決了這次問題.
關(guān)于Hyperic-HQ, 是一個GPL的開源產(chǎn)品, 可以協(xié)助我們分析在發(fā)布環(huán)境下的系統(tǒng)各個機(jī)能的狀態(tài). 進(jìn)而找到應(yīng)用程序的問題.
要想使用Hyperic-HQ, 首先我們需要一臺Hyperic-HQ服務(wù)器, 可以用自己的PC機(jī)充當(dāng). 另外, 我們需要一臺數(shù)據(jù)庫服務(wù)器, 用來做Hyperic-HQ的數(shù)據(jù)倉庫. 我使用的是Hyperic-HQ 2.7.3版本, 這個版本支持Oracle和Postgresql作為Hyperic-HQ的后臺數(shù)據(jù)庫.接下來, 我們從Hyperic-HQ的網(wǎng)站上下載Hyperic-HQ的安裝程序, 有很多版本. 一般地, 根據(jù)操作系統(tǒng)不同不同, 另外, 有含有JRE和非JRE的, 以及agent和installer區(qū)分. 我們第一次安裝的時候, 因為要安裝Hyperic-HQ服務(wù)器, 所以應(yīng)該下載installer版本.
下載后我們在某個目錄下解壓縮, 目錄內(nèi)容如圖所示.
然后我們運(yùn)行setup程序, 安裝Hyperic-HQ服務(wù)器, 安裝過程中, 需要指定Hyperic-HQ服務(wù)器的后臺數(shù)據(jù)庫的信息. 一步步直到安裝完成. 安裝好后, 會有一段文字提示Hyperic-HQ服務(wù)器的運(yùn)行以及訪問地址, 包括默認(rèn)的賬號.
Hyperic-HQ服務(wù)器的默認(rèn)訪問地址是http://localhost:7080
默認(rèn)賬號是 hqadmin/hqadmin
安裝好Hyperic-HQ服務(wù)器后, 我們需要在被監(jiān)視的服務(wù)器上安裝Hyperic-HQ的agent. 你可以單獨(dú)下載agent, 如果你已經(jīng)下載了installer, 那么它里面就包含了agent. 和上述過程同樣, 依照提示一步一步安裝agent. 安裝agent的過程非常簡單.
全部準(zhǔn)備完畢后, 就可以開始監(jiān)視有問題的服務(wù)器了.
首先啟動Hyperic-HQ服務(wù)器, 啟動方法是運(yùn)行hq-server.exe.
啟動后, 我們可以訪問Hyperic-HQ服務(wù)器的web頁面, 登錄后應(yīng)該是沒有什么可用信息, 這是因為我們還未啟動任何agent.
現(xiàn)在就讓我們來啟動Hyperic-HQ服務(wù)器的agent. 在啟動agent的時候我們必須指定一些信息, 其中主要包括agent如何和Hyperic-HQ服務(wù)器通訊的信息.
此時, 我們再登錄Hyperic-HQ服務(wù)器的web頁面就可以看到agent管理的服務(wù)器上的資源.
然后我們在web頁面上就可以通過一些配置來配置我們所感興趣的資源. Hyperic agent就可以從被監(jiān)視的服務(wù)器上定時取下我們配置的資源, 通過Hyperic-HQ服務(wù)器顯示在web頁面上. 當(dāng)然也可以log到日志里.