利用JMX來監控大部分java應用

來源:互聯網
上載者:User

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

   實際上來說我們可以用jmx來監控一些java應用的運行情況,還有自己寫的一些服務類的應用。

   以下是我們用來做監控的jmx原始碼

package com.shine.framework.Jmx;</p><p>import java.util.HashMap;<br />import java.util.Map;</p><p>import javax.management.MBeanServerConnection;<br />import javax.management.ObjectName;<br />import javax.management.remote.JMXConnector;<br />import javax.management.remote.JMXConnectorFactory;<br />import javax.management.remote.JMXServiceURL;</p><p>public class JMXManager {<br />/**<br /> * 建立串連<br /> *<br /> * @param ip<br /> * @param jmxport<br /> * @return<br /> */<br />public static MBeanServerConnection createMBeanServer(String ip,<br />String jmxport, String userName, String password) {<br />try {<br />String jmxURL = "service:jmx:rmi:///jndi/rmi://" + ip + ":"<br />+ jmxport + "/jmxrmi";<br />// jmx<br />// url<br />JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);</p><p>Map map = new HashMap();<br />String[] credentials = new String[] { userName, password };<br />map.put("jmx.remote.credentials", credentials);<br />JMXConnector connector = JMXConnectorFactory.connect(serviceURL,<br />map);<br />MBeanServerConnection mbsc = connector.getMBeanServerConnection();<br />return mbsc;</p><p>} catch (Exception e) {<br />// e.printStackTrace();<br />System.err.println(ip + "的中介軟體不可以達");<br />}<br />return null;<br />}</p><p>/**<br /> * 擷取所有屬性<br /> *<br /> * @param mbeanServer<br /> * @param objName<br /> * @return<br /> */<br />public static Map getAllAttribute(MBeanServerConnection mbeanServer,<br />ObjectName objName) {<br />if (mbeanServer == null || objName == null)<br />throw new IllegalArgumentException();<br />try {<br />return null;<br />} catch (Exception e) {<br />return null;<br />}<br />}</p><p>/**<br /> * 使用MBeanServer擷取對象名為[objName]的MBean的[objAttr]屬性值<br /> * <p><br /> * 靜態代碼: return MBeanServer.getAttribute(ObjectName name, String attribute)<br /> *<br /> * @param mbeanServer<br /> * - MBeanServer執行個體<br /> * @param objName<br /> * - MBean的對象名<br /> * @param objAttr<br /> * - MBean的某個屬性名稱<br /> * @return 屬性值<br /> */<br />private static Object getAttribute(MBeanServerConnection mbeanServer,<br />ObjectName objName, String objAttr) {<br />if (mbeanServer == null || objName == null || objAttr == null)<br />throw new IllegalArgumentException();<br />try {<br />return String.valueOf(mbeanServer.getAttribute(objName,<br />"currentThreadsBusy"));<br />} catch (Exception e) {<br />return null;<br />}<br />}</p><p>}<br />

 下面我補充一下怎麼開啟tomcat和weblogic的服務吧

 

首先在domain找到需要監控的工程,例如sourceview ,D:/Weblogic/user_projects/domains/sourceview。然後開啟它的startWebLogic.cmd的加上 set JAVA_OPTIONS=%JAVA_OPTIONS%
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8050
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.access.file=D:/temp/jmxremote.access
-Dcom.sun.management.jmxremote.password.file=D:/temp/jmxremote.password

 

 

 

Tomcat加入jmx監控比weblogic要容易,可以擷取到的mib也要比weblogic10要多,首先我 們找到bin目錄底下:

 

 

 

 

catalina.bat 用於修改windows的jmx的,catalina.sh用於修改linux的jmx。具體修改方 法是一樣的。
在 rem ----- Execute The Requested Command ---------------------------------------
加入:
set JAVA_OPTS=-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8050
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.access.file=D:/temp/jmxremote.access
-Dcom.sun.management.jmxremote.password.file=D:/temp/jmxremote.password

 

 

如果同樣遇到提示 必須限制口令檔案的讀取許可權,可以按照weblogic一樣的解決辦法。
或者:
set JAVA_OPTS=-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8050
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.access.file=D:/temp/jmxremote.access
-Dcom.sun.management.jmxremote.password.file=D:/temp/jmxremote.password

附件:temp/jmxremote.access和temp/jmxremote.password

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.