`
xinklabi
  • 浏览: 1563358 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

利用JMX来监控大部分java应用(转)

    博客分类:
  • JMX
 
阅读更多

转自:http://blog.csdn.net/arjick/article/details/6268376

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

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

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

 

[java] view plaincopy
 
  1. package com.shine.framework.Jmx;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import javax.management.MBeanServerConnection;  
  7. import javax.management.ObjectName;  
  8. import javax.management.remote.JMXConnector;  
  9. import javax.management.remote.JMXConnectorFactory;  
  10. import javax.management.remote.JMXServiceURL;  
  11.   
  12. public class JMXManager {  
  13.     /** 
  14.      * 建立连接 
  15.      *  
  16.      * @param ip 
  17.      * @param jmxport 
  18.      * @return 
  19.      */  
  20.     public static MBeanServerConnection createMBeanServer(String ip,  
  21.             String jmxport, String userName, String password) {  
  22.         try {  
  23.             String jmxURL = "service:jmx:rmi:///jndi/rmi://" + ip + ":"  
  24.                     + jmxport + "/jmxrmi";  
  25.             // jmx  
  26.             // url  
  27.             JMXServiceURL serviceURL = new JMXServiceURL(jmxURL);  
  28.   
  29.             Map map = new HashMap();  
  30.             String[] credentials = new String[] { userName, password };  
  31.             map.put("jmx.remote.credentials", credentials);  
  32.             JMXConnector connector = JMXConnectorFactory.connect(serviceURL,  
  33.                     map);  
  34.             MBeanServerConnection mbsc = connector.getMBeanServerConnection();  
  35.             return mbsc;  
  36.   
  37.         } catch (Exception e) {  
  38.             // e.printStackTrace();  
  39.             System.err.println(ip + "的中间件不可以达");  
  40.         }  
  41.         return null;  
  42.     }  
  43.   
  44.     /** 
  45.      * 获取所有属性 
  46.      *  
  47.      * @param mbeanServer 
  48.      * @param objName 
  49.      * @return 
  50.      */  
  51.     public static Map getAllAttribute(MBeanServerConnection mbeanServer,  
  52.             ObjectName objName) {  
  53.         if (mbeanServer == null || objName == null)  
  54.             throw new IllegalArgumentException();  
  55.         try {  
  56.             return null;  
  57.         } catch (Exception e) {  
  58.             return null;  
  59.         }  
  60.     }  
  61.   
  62.     /** 
  63.      * 使用MBeanServer获取对象名为[objName]的MBean的[objAttr]属性值 
  64.      * <p> 
  65.      * 静态代码: return MBeanServer.getAttribute(ObjectName name, String attribute) 
  66.      *  
  67.      * @param mbeanServer 
  68.      *            - MBeanServer实例 
  69.      * @param objName 
  70.      *            - MBean的对象名 
  71.      * @param objAttr 
  72.      *            - MBean的某个属性名 
  73.      * @return 属性值 
  74.      */  
  75.     private static Object getAttribute(MBeanServerConnection mbeanServer,  
  76.             ObjectName objName, String objAttr) {  
  77.         if (mbeanServer == null || objName == null || objAttr == null)  
  78.             throw new IllegalArgumentException();  
  79.         try {  
  80.             return String.valueOf(mbeanServer.getAttribute(objName,  
  81.                     "currentThreadsBusy"));  
  82.         } catch (Exception e) {  
  83.             return null;  
  84.         }  
  85.     }  
  86.   
  87. }  

 

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

分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    JAVA上百实例源码以及开源项目源代码

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    java开源包11

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包9

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包101

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包5

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包8

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包1

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包2

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包7

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Java资源包01

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Hadoop权威指南(中文版)2015上传.rar

    Java管理扩展(JMX) 维护 日常管理过程 委任节点和解除节点 升级 第11章 Pig简介 安装与运行Pig 执行类型 运行Pig程序 Grunt Pig Latin编辑器 示例 生成示例 与数据库比较 PigLatin 结构 语句 表达式 1.4.4 类型 ...

    Hadoop权威指南 第二版(中文版)

     Java管理扩展(JMX)  维护  日常管理过程  委任节点和解除节点  升级 第11章 Pig简介  安装与运行Pig  执行类型  运行Pig程序  Grunt  Pig Latin编辑器  示例  生成示例  与数据库比较  PigLatin  ...

Global site tag (gtag.js) - Google Analytics