1. 程式人生 > >通過JMX監控管理weblogic的執行

通過JMX監控管理weblogic的執行

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 1.JMX概述 2.Weblogic6.1的實現 3.一個小例子 1.JMX概述 JMX(Java Management Extensions)是SUN建立的一套規範。BEA WebLogic Server實現了JMX大部分的API,並且提供了一個完全相容JMX的控制檯來管理各種資源。OPEN SOURCE的應用伺服器JBoss也是基於JMX來實現。並且對之評價很高,認為是目前為止最好的軟體整合工具。JBoss的成功依靠於JMX。 (載自JBoss線上文件,原文是:Our goal is to provide the full J2EE stack in the free/open world. We are already there and the reason for our success lies on JMX. JMX or Java Management eXtension is the best weapon we have found for integration of software. It provides a common spine in which we plug in modules, containers and plugins. ) 關於JMX的具體描述不是這篇短文所能完成的(我也是初學,比你知道的多不了多少)。這裡只是簡短的描述一下,方便大家理解。有興趣的可以下載JMX文件(java.sun.com ) JMX specification定義的overall management architecture如下 Instrumentation level Agent level Distributed services level Additional management protocol APIs(比如SNMP協議,TMN等 ) 不考慮附加的管理協議API,整個結構分為三個層次Instrumentation level,Agent level, Distributed services level.名字我就不翻譯了,以免引起誤解。JMX1.0白皮書上有一張很好的圖示,描述的很清楚。簡要的說,Instrumentation level定義了一套被管理的資源需要遵守的規範。這裡被管理資源是一個很廣泛的概念。可以是一個應用程式,一個具體的類,一個服務,甚至一個硬體。不過,所有的資源都是由java語言開發的,其它的資源需要提供一個java封裝。在JMX中,被管理的資源被封裝為Managed Bean ,簡稱MBean.MBean是對所有資源的一種抽象。目前,JMX定義了四種類型的MBean:standard, dynamic, open and model MBeans.其中, open MBean ,model MBean 繼承自dynamic MBean。不過,在1.0中open MBean的定義並沒有完成,但是根據規範的描述,其提供的功能確實令人激動。SUN公司也承諾將來open Mbean會成為JMX產品強制實現的部分。此外,Instrumentation level還定義了JMX Notification Model以及MBean Metadata Classes。MBean通過JMX Notification Model將其狀態變化的訊息通知管理程式和Agent。Agent通過 Metadata獲得MBean的資訊。 Instrumentation level具體的細節這裡不再描述。 The agent level provides a specification for implementing agents. Management agents directly control the resources and make them available to remote management applications. A JMX agent is a management entity which runs in a JVM and acts as the liaison between the MBeans and the management application. A JMX agent is composed of an MBean server, a set of MBeans representing managed resources, a minimum number of agent services implemented as MBeans, and typically at least one protocol adaptor or connector. The distributed services level provides the interfaces for implementing JMX managers. This level defines management interfaces and components that can operate on agents or hierarchies of agents. 2.Weblogic6.1的實現 weblogic6.1採用sun的JMX參考實現(在weblogic.jar裡包含了com.sun.management包和javax.management包),不過自己又加入了一些新的特性。我注意到的有以下一些: a.定義介面WebLogicMBean,該介面繼承了DynamicMBean(上面描述的dynamic MBean必須實現的介面),MBeanRegistration(用於MBean在Agent註冊),NotificationBroadcaster(用於傳送Notification,參見JMX Notification Model)。所有的weblogic的MBean都是該介面的子類。也就是說,weblogic裡面所有的MBean都是dynamic MBean,當然,你也可以自己寫一些standard MBean註冊到weblogic的Agent上去。 WebLogicMBean主要具有以下三種類型的MBeans: Administration MBeans, 封裝從config.xml讀取的整個weblgoic domain的配置資訊。 Configuration MBeans, 每個weblogic server一份,是Administration MBeans的copy,用於server配置自己 Runtime MBeans, 代表著執行時刻WebLogic Server的各種元件和子系統。 我們通過weblogic提供的HTMl形式的控制檯對weblogic的配置操作,最終都通過呼叫Administration MBeans實現,在系統執行結束時寫回config.xml配置檔案。明白了這些,你也就完全可以寫一個Swing格式的控制檯或者來對weblogic進行配置。或者說,對於終端使用者比較關心的JDBC資料來源的資訊,你完全可以自己寫一個圖形介面來配置。從而不讓使用者通過瀏覽器進入weblogic自己帶的console進行操作。這樣就可以避免使用者修改一些很關鍵的系統資訊。 在weblogic server的JMX Agent的視圖裡,一個EJB元件,一個JDBC資料來源都是Runtime MBeans,甚至weblgoic自己的shutdown類也是一個Runtime MBeans。weblogic為各種資源定義了不同的子Runtime MBeans介面。 比如對大家都熟悉的EJB來說,就定義了介面EJBRuntimeMBean,而且更詳細的是,對於不同的Bean還定義了不同子介面,比如:EntityEJBRuntimeMBean, MessageDrivenEJBRuntimeMBean, StatefulEJBRuntimeMBean, StatelessEJBRuntimeMBean。 當我們呼叫一個EJB的某個方法時,請求會首先送到JMX的Agent,Agnet根據請求確定要訪問哪一個Runtime MBeans,然後呼叫該Runtime MBeans的方法,這是通過DynamicMBean的方法invoke(java.lang.String actionName, java.lang.Object[] params, java.lang.String[] signature) (actionName:要呼叫的方法名;params:引數陣列 ;signature:該方法的型構)來實現的,invoke的返回結果就是被呼叫的ejb的方法的返回結果。最後,將結果返回給呼叫者。 b.為MBean定義了Home介面,這是JMX1.0規範所沒有的,這樣,對於應用程式來說就可以像訪問EJB那樣在遠端首先通過JNDI查詢該MBean的Home介面,獲得Home介面後就可以獲得該MBean,然後,就可以通過MBean對資源進行管理操作。這個流程與EJB幾乎完全一樣。 而且,更方便的是,weblogic提供了一個類weblogic.management.Helper,該類通過了一組靜態方法getMBeanHome可以非常方便的得到MBeanHome物件。他的用法下面的例子將會說明 3.一個小例子 下面的程式編已通過並在weblogic 6.1執行成功。 其中getMBeanHome引數中12345678是我的weblogic 的system的使用者密碼,SERVER_NAME是我的weblogic的sever的名字,可以在config.xml中找到。 TestJMX執行後,將打印出我的weblogic上所有的MBean ----源程式 TestJMX.java--------------------------------------------------------------


import java.util.*; 

import weblogic.management.*; 



public class TestJMX  { 

public MBeanHome localHome; 

public MBeanHome adminHome ; 

public static String SERVER_NAME = "myserver"; 

public void find() { 

String url = "t3://127.0.0.1:7001" ; 

try { 

localHome = (MBeanHome)Helper.getMBeanHome("system","12345678",url,SERVER_NAME); 

adminHome = (MBeanHome)Helper.getAdminMBeanHome("system","12345678",url); 

System.out.println("Local and Admin Homes  found using the Helper class"); 

} catch (IllegalArgumentException iae) { 

System.out.println("Illegal Argument Exception: "   iae); 

} 

} 

public static void main(String[] args ) { 

TestJMX test = new TestJMX(); 

test.find(); 

Set allMBeans =test.localHome.getAllMBeans(); 

System.out.println("Size: "   allMBeans.size()); 

for (Iterator itr = allMBeans.iterator(); itr.hasNext(); ) { 

WebLogicMBean mbean = (WebLogicMBean)itr.next(); 

WebLogicObjectName objectName = mbean.getObjectName(); 

System.out.println(objectName.getName()  " isa " mbean.getType()); 

} 

Set all2MBeans =test.adminHome.getAllMBeans(); 

System.out.println("Size: "   all2MBeans.size()); 

for (Iterator itr = all2MBeans.iterator(); itr.hasNext(); ) { 

WebLogicMBean mbean = (WebLogicMBean)itr.next(); 

WebLogicObjectName objectName = mbean.getObjectName(); 

System.out.println(objectName.getName()  "  isa " mbean.getType()); 

} 

} 

} 

-------------------------------------------------------------------------------------- 下面是它的執行輸出結果中的部分,我們看到,從weblogic返回的 WebLogicMBean包括了幾乎所有的內容。 (DBManagerDataSource是我在weblogic自己配的JDBC資料來源;unix是我在weblogic自己配的一個web應用;Process_CRM是一個部署的EJB;eos10是weblogic自己實現的SNMP Agent) .... eos10 isa(n) SNMPAgentConfig eos10 isa(n) SNMPAgent unix isa(n) WebAppComponent roleejb isa(n) Application eos10 isa(n) SNMPAgentConfig DBManagerDataSource isa(n) JDBCTxDataSource .... 你也可以呼叫MBeanHome的getMBean方法獲得自己感興趣的某種MBean物件,具體的用法參見weblogic6.1文件得到了這些MBean的引用後,就可以設定他的屬性,呼叫他的方法等等。而且,你還可以把他造型為更具體的子類,比如,對於SNMPAgent,你可以直接造型為SNMPAgentMBean(WeblogicMBean的子介面),這樣就可以執行一些網路管理指令,獲得網路管理資訊(我對SNMP一竅不通,如果說的不好,見笑了),SNMPAgentMBean提供瞭如下操作:
 

boolean addSNMPAttributeChange(SNMPAttributeChangeMBean attrchange) 

boolean addSNMPCounterMonitor(SNMPCounterMonitorMBean countermonitor) 

boolean addSNMPGaugeMonitor(SNMPGaugeMonitorMBean gaugemonitor) 

boolean addSNMPProxy(SNMPProxyMBean snmpProxy) 

boolean addSNMPStringMonitor(SNMPStringMonitorMBean stringmonitor) 

void setSNMPLogFilters(SNMPLogFilterMBean[] snmpLogFilters) 

void setSNMPPort(int port) 

void setSNMPProxies(SNMPProxyMBean[] snmpProxys) 

void setSNMPStringMonitors(SNMPStringMonitorMBean[] snmpStringMonitors) 

void setTargetedTrapDestinations(SNMPTrapDestinationMBean[] snmpTrapDestinations) 

void setUserDefinedMib(java.lang.String mibName 
自己做一個監聽類掛上去就可以實現監控,具體的介面方法參見weblogic文件 此外,還可以做的事情有,自己註冊一個新的MBean到weblogic的MBean Server上。總之,通過jmx,我們可以很方便的進行對weblogic進行管理監控。這只是一個JMX的具體應用。在很多領域,JMX大有用武之地。 我對JMX以及weblogic的學習還不是很深,如果出現錯誤的地方,歡迎指正,我們可以討論學習 我的mail :[email protected]

相關推薦

通過JMX監控管理weblogic執行

<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 1.JMX概述 2.

Weblogic如何通過JMX監控JDBC資源(資料來源)資料

    今天一同事問到了我這個問題,由於本人對Weblogic不太瞭解,所以決定先嚐試一下。     新建一個數據源,通過傳統的Jconsole連線(需要在Weblogic啟動引數中配置jmx引數,這裡省略),在MBean一欄中 沒有找到關於JDBC資源的監控項。 通過

通過JMX監控weblogic服務

一、JMX簡介   JMX是一種JAVA的正式規範,它主要目的是讓程式有被管理的功能,那麼怎麼理解所謂的“被管理”呢?試想你開發了一個軟體(如WEB網站),它是在24小時不間斷執行的,那麼你可能會想要“監控”這個軟體的執行情況,比如收到了多少資料,有多少人登入等等。或者你又想“配置”這個軟體,比如現在訪問人

zabbix通過jmx監控tomcat

zabbix通過jmx監控tomcat通過jmx監控tomcat 一、服務端配置 1、安裝jdk(版本1.8.0_91) [root@iZ25kscmkn3Z ~]# rpm -ivh jdk-8u91-linux-x64.rpm [root@iZ25kscmkn3Z ~]# vi /etc/profile

Zabbix3.2.6之通過JMX監控Tomcat

ngs 開關 上傳 而且 pid code row 選項 ooo 參考博文:http://blog.51cto.com/wzlinux/1692444 JMX的全稱是Java Management Extensions,即Java管理擴展。Java程序會開放一些端口,用來獲

性能測試之監控--zabbix通過jmx監控tomcat

rap light 主機 關註 ali opts stat jdk1.8 x64 前提: 已經安裝好了zabbix server 實驗環境 Centos 7 Zabbix 3.0 Tomcat 7.0 JDK 1.8 安裝JDK tar -zxvf j

Zabbix通過JMX監控Java應用

Zabbix通過JMX(Java Management Extensions)可以對Java Application進行監控,Zabbix利用原生的Zabbix Java gateway,一個Java守護程序監控JMX應用。當Zabbix想要知道某個JMX counter當前的資料時,它只去詢問Za

通過JMX監控JVM

轉載自cn-done的部落格[https://cn-done.iteye.com/blog/2041971] 近日關注效能調優,關注JMX,發現java.lang.management.*之強大。同時查閱了資料,整合一版關於JVM引數獲取的note,僅供參考: MemoryM

zabbix通過jmx監控jdbc連線池的各項指標

看到一堆寫了zabbix監控jdbc的,大部分都是寫zabbix監控tomcat的部分,監控jdbc的內容基本沒有。 在看了一堆的東西和自己的摸索後,終於發現如何通過jmx來監控(zabbix版本3.4,tomcat版本8.5) 1、首先要建立tomcat的jdbc與my

用Zabbix通過JMX方式監控weblogic

JMX(Java Management Extensions,即Java管理擴充套件)是一個為應用程式、裝置、系統等植入管理功能的框架。JMX可以跨越一系列異構作業系統平臺、系統體系結構和網路傳輸協議,靈活的開發無縫整合的系統、網路和服務管理應用。 上面的介紹有點繞,我

通過Spark Rest 服務監控Spark任務執行情況

com 理想 ask cin *** lib add pan etime 1、Rest服務   Spark源為了方便用戶對任務做監控,從1.4版本啟用Rest服務,用戶可以通過訪問地址,得到application的運行狀態。   Spark的REST API返回的信息是JS

通過ansible批量管理Linux服務器:配置Inventory和批量執行命令

ice 單引號 p地址 pytho 不支持 passwd 賬號密碼 常用 系統 ansible是一款比較新的自動化運維工具,基於Python開發,集合了眾多運維工具(puppet、cfengine、chef、func、fabric)的優點,實現了批量系統配置、批量程序部署、

Linux Centos7通過shell指令碼來監控mysql的執行狀態

vim checkmysql.sh #!/bin/sh #create by mingongge at 2018-10-10 port=`netstat -lnt|grep 3306|wc -l` if  [ $post -ne 1 ] ;then    now

【轉】開源框架是如何通過JMX來做監控的(一)

相信很多做Java開發的同學都使用過JDK自帶的 jconsole 或者 jvisualvm 監控過JVM的執行情況,但不知道有沒有留意過它們會有一個MBean的功能/標籤,通過MBean可以看到在JVM中執行的元件的一些屬性和操作     例如,可以看到Tomcat

通過JMX以HTTP的方式動態管理Logback的配置

對Logback的配置基本瞭解後,我們在實際專案中就可以應用它,不知大家有沒有碰到這樣一種業務,使用JMX動態管理Logback的配置(對JMX不瞭解的,建議上網搜尋相關資料),而無需重啟伺服器。好在Logback內部實現了JMX,我們只需在logback.xml中新增&l

zabbix通過snmp監控帶外管理ping不可用的問題

最近在配置zabbix通過snmp監控帶外管理時發現ping不可用,導致無法監測帶外管理狀態是否正常 檢視報錯:at least one of "/usr/sbin/fping" "/usr/sbin/fping6" must exist. both ar

效能測試 -- weblogic 執行監控(jconsole)

效能測試時,想知道weblogic的jdk執行情況如何,可以用jconsole監控: jconsole介紹 ...... 這裡不用解釋(請狗狗...) 給圖看看:)  示例: 伺服器環境: CentOS 5.5final , WebLogic : 10.3 (weblog

win10下通過jconsole監控遠端centos tomcat執行情況

最近在阿里雲上的執行的BS系統過一段時間就down機。突然想到在pc上經常用到jconsole和jvisualvm監控專案的執行情況。 今天先配置jconsole的遠端監控。 1、伺服器系統centos6.5 64位、jdk1.8.0_65、tomcat-7.0.65。 2

用Zabbix通過JMX方式監控tomcat

參考文章:http://www.huilog.com/?p=688 1、安裝zabbix-java-gateway 2、對zabbix-java-gateway進行配置 zabbix-java-gateway的配置檔案是/etc/zabbix/zabbix_java_ga

使用jmx監控weblogic啟用iiop協議

 使用jmx監控weblogic伺服器。建一個java工程,引入weblogic.jar到工程裡面。 package com.tst.idc.weblogic; import java.io.IOException; import java.text.SimpleDate