使用JMX搭建WebLogic9監控軟件

 

使用JMX搭建WebLogic9監控軟件

因筆者工作需要,監控多臺weblogic服務器,當服務器的狀態不正常時進行郵件通知。
根據需求的情況,決定使用WebLogic的JMX功能。

一。WebLogic9在JMX方面的變化和新特性 WebLogic9與之前的8.1系列版本的差別很大,在9之前,weblogic使用自己基於JMX1.0規範的實現,自9開始,Weblogic使用包含在JDK1.5中的JMX1.2的實現。因此,監控程序針對不同的版本實現是完全不一樣的。隨着JSR-160的發佈,原來的 weblogic.management.MBeanHome已經不再使用了。

二。讓我們先了解一下Domain WebLogic的Domain結構中,必須包含一個AdminServer。
最簡單的Domain可以包含一個服務器實例,既作爲管理角色,也部署應用和資源,這種最簡單的部署環境多用於開發環境,在生產環境中負載通常被部署在ManagedServer上。


***********************************************************************
***********************************************************************
三。WebLogic9 Mbean介紹
1.WebLogic提供了一系列MBean,可用於配置、監控和管理weblogic服務器資源。

MBean的類型有下面幾種:
A.Runtime MBean,包含了服務器及資源的運行狀態,一般僅包含服務或資源的當前狀態,並且這些狀態是不會被持久化的。服務實例停止後,運行期的這些統計和度量都不會保存。Runtime MBean在整個運行期是可用的,當啓動服務器實例時,服務器實例化了一個ServerRuntimeMBean,並且用運行數據填充。

B.Configuration MBean,包含了服務器及資源的配置信息,這些信息存儲在domain的XML配置文件中。

Weblogic不提供用於應用模塊的MBean。
1) 在Domain中的每個服務器都有自己的domain配置文檔的拷貝。在服務器啓動期間,每個服務器聯繫AdminServer來更新自己的配置文件。

2) 要改變domain的配置,管理服務器會維護一個單獨的,可編輯的domain配置文件副本,這個副本放在domain的config/pending目錄中。

3) 當關掉服務實例,在該服務器實例上的config mbean會被銷燬


***********************************************************************
2.MBean的數據模型,通過對數據模型的瞭解,可以指導我們編寫通用的訪問邏輯。
儘管JMX規範並沒有強制要求組織MBean的模型,然而 WebLogic的domain配置是以XML的方式描述的,所以weblogic使用層次模型組織MBean來映射XML結構。例如,domain配置文檔的根是,根下面的元素是和,每個domain維護一個單獨的類型爲DomainMBean的MBean來表示的根元素,在DomainMBean的內部,JMX的屬性提供了訪問和MBean 的方法。


***********************************************************************
3.WebLogic的MBean Object Name 所有的MBean都必須基於javax.management.ObjectName類型註冊在MBean服務中。
具體細節可以參考在線文檔。

Weblogic服務命名格式如下: com.bea:Name=name,Type=type[,TypeOfParentMBean=NameOfParentMBean][,TypeOfParentMBean1=NameOfParentMBean1]...

com.bea是JMX的domain名字,對於weblogic,jmx的domain名字都是com.bea,如果你自己創建 MBean,domain的名字需要自己命名。

Name=name,Type=type[,TypeOfParentMBean=NameOfParentMBean] [,TypeOfParentMBean1=NameOfParentMBean1]...,是jmx的關鍵屬性,關鍵屬性是形如key=value的鍵值對,關鍵屬性的順序不重要,名字必須以com.bea:開頭。


***********************************************************************
4.MBean Server。是JMX代理的核心,承擔MBean容器的角色。

AdminServer的JVM中包括BEA提供的3個MBean Server,分別是:  
DomainRuntimeMBean Server:提供了Domain範圍的服務,只有AdminServer有此實例。

RuntimeMBean Server:提供了監控、運行期控制和指定服務器實例的主動配置,自己定製的MBean也在這個服務中註冊。在domain中的每個服務器都有此實例。

EditMBean Server:提供了pending的配置,通過ConfigurationManagerMBean鎖定、保存和激活變更。
只有AdminServer 有此實例。



***********************************************************************
***********************************************************************
五。程序結構分析設計上面介紹了WebLogic中JMX的一些基本內容,下面我們看一下如何來實現。

首先,我們整理一下需求:

監控多臺weblogic9服務器,其中服務器分佈在不同的物理/虛擬主機上,無法在每個服務器上都部署代理應用

對服務器的狀態進行監控,目前需要監控:
服務器是否處於生產模式
當前JVM堆的大小
連接池的運行狀態
未來可能增加連接池泄漏的連接數量、連接池失敗重連接的次數等監控。

其次,我們對需求進行分析,從上述的需求中,可以歸納出下面的需求:
程序的監控點需要支持可擴展,可以動態增加
需要使用JMX的遠程API連接
監控點間互不影響,即如果某一個監控出問題,則其他的監控項目還能繼續執行
使用郵件通知針對需求分析及實現機制:
可以動態增加監控項目
提供可配置能力,將監控項目寫到配置文件中。
提供插件能力,用戶可以自己編寫插件實現特定的監控能力。
使用JMX遠程連接
對三種方式進行封裝
監控點間互不影響
應用多線程方式,對每個監控點啓用單獨的線程
通知機制
使用郵件方式通知,郵件的通知方式可配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章