利用JMX来监控大部分java应用

               

    JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

   实际上来说我们可以用jmx来监控一些java应用的运行情况,还有自己写的一些服务类的应用。

   以下是我们用来做监控的jmx源代码

package com.shine.framework.Jmx;import java.util.HashMap;import java.util.Map;import javax.management.MBeanServerConnection;import javax.management.ObjectName;import javax.management.remote.JMXConnector;import javax.management.remote.JMXConnectorFactory;import javax.management.remote.JMXServiceURL;public class JMXManager { /**  * 建立连接  *   * @param ip  * @param jmxport  * @return  */ public static MBeanServerConnection createMBeanServer(String ip,   String jmxport, String userName, String password) {  try {   String jmxURL = "service:jmx:rmi:///jndi/rmi://" + ip + ":"     + jmxport + "/jmxrmi";   // jmx   // url   JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);   Map map = new HashMap();   String[] credentials = new String[] { userName, password };   map.put("jmx.remote.credentials", credentials);   JMXConnector connector = JMXConnectorFactory.connect(serviceURL,     map);   MBeanServerConnection mbsc = connector.getMBeanServerConnection();   return mbsc;  } catch (Exception e) {   // e.printStackTrace();   System.err.println(ip + "的中间件不可以达");  }  return null; } /**  * 获取所有属性  *   * @param mbeanServer  * @param objName  * @return  */ public static Map getAllAttribute(MBeanServerConnection mbeanServer,   ObjectName objName) {  if (mbeanServer == null || objName == null)   throw new IllegalArgumentException();  try {   return null;  } catch (Exception e) {   return null;  } } /**  * 使用MBeanServer获取对象名为[objName]的MBean的[objAttr]属性值  * <p>  * 静态代码: return MBeanServer.getAttribute(ObjectName name, String attribute)  *   * @param mbeanServer  *            - MBeanServer实例  * @param objName  *            - MBean的对象名  * @param objAttr  *            - MBean的某个属性名  * @return 属性值  */ private static Object getAttribute(MBeanServerConnection mbeanServer,   ObjectName objName, String objAttr) {  if (mbeanServer == null || objName == null || objAttr == null)   throw new IllegalArgumentException();  try {   return String.valueOf(mbeanServer.getAttribute(objName,     "currentThreadsBusy"));  } catch (Exception e) {   return null;  } }}

 下面我补充一下怎么开启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

 

           
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值