`
xinklabi
  • 浏览: 1587946 次
  • 性别: 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

分享到:
评论

相关推荐

    Hbase和Hadoop JMX监控实战

    JMX允许开发者在Java应用中定义管理对象(MBeans),这些对象可以暴露有关应用状态的信息,并提供操作来改变应用的行为。对于HBase和Hadoop,JMX可以用来监控诸如节点健康状况、内存使用、磁盘I/O、网络流量等关键...

    JVM JMX java

    Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。JMX(Java Management ...通过深入理解JVM的运作机制和利用JMX提供的功能,开发者可以更好地优化和维护复杂的Java系统。

    论文研究-JMX技术在网络监控中的应用.pdf

    在JMX技术的实际应用方面,JBoss提供了一个基于JMX的中间件平台,它利用JMX来管理EJB容器以及其它服务。JBoss应用服务器内置了JMX管理框架,使得开发者和管理员能够以编程方式或者通过图形用户界面来访问MBean的信息...

    java做的监控应用实例

    Java监控应用实例是一种用于观察和分析Java应用程序运行时性能、资源使用情况以及可能出现的问题的工具。在Java开发中,理解如何构建这样的应用是至关重要的,因为它可以帮助开发者优化代码,提高程序效率,及时发现...

    jmxdemo.rar

    jmxdemo.rar是一个包含JMX服务端和客户端的示例,帮助我们理解如何利用JMX进行远程监控Java项目,而VisualVM是一个强大的Java诊断工具,它可以利用JMX进行远程连接和监控。 首先,我们需要了解JMX的基本概念。JMX的...

    JMX HelloWorld Download

    8. **使用与实践**:学习这个示例可以帮助开发者了解如何在实际项目中利用JMX来增强应用程序的管理和监控能力。 总之,"JMX HelloWorld Download"是一个学习JMX基础的实用资源,通过解压并研究其中的源代码,可以...

    Designing Manageable Java EE Platform-Based Applications with the JMX API

    JMX API是Java标准平台的一部分,自Java SE 5.0起成为其标准组件之一,为开发人员提供了管理和监控Java应用程序的强大工具。 #### JMX API简介 JMX API提供了一套标准化的方法来暴露管理信息和操作,包括但不限于...

    java 远程监控程序JSN

    Java远程监控程序JSN是一种用于监视和管理分布式Java应用程序的工具。它允许开发者或系统管理员在不中断应用程序运行的情况下收集性能...通过有效利用JMX、JConsole、VisualVM等工具,可以构建强大的远程监控解决方案。

    JMX1.4规范中文版

    部署层则整合了管理和监控系统的解决方案,允许开发者利用JMX规范来增强或替代现存的管理策略。JMX还可以与现有的管理和监控技术相兼容,从而降低Java应用程序的管理成本。 在JMX的设备层和代理层规范中,开发者...

    jmx 入门文档,附有开发实例文档

    Java Management Extensions(JMX)是Java平台上的一个标准,用于创建和管理应用...通过理解MBean的类型和工作原理,以及如何利用MBean服务器和MBean工具,开发者可以有效地利用JMX来管理和监控他们的Java应用程序。

    基于JAVA 网络远程监控系统软件的实现

    其次,为了实现数据采集,我们可以利用Java的JMX(Java Management Extensions)来监控操作系统和应用程序的资源使用情况。JMX允许我们注册MBeans(管理 beans),这些MBeans提供了对系统资源的访问接口,如CPU利用...

    JMX.rar_jmx

    **JMX(Java Management Extensions)** 是Java平台上的一个核心组件,它提供了一种标准的框架,用于在Java应用程序中实现管理和监控的功能。这个强大的工具允许开发者创建可管理和监控的组件,使得系统管理员能够...

    Java 监控 运行时

    - **Prometheus + Grafana**:流行的开源监控解决方案,可以配合JMX Exporter监控Java应用。 10. **性能调优** - 通过监控数据,结合JVM调优指南,可以调整JVM参数以优化性能,例如增大堆内存、调整GC策略等。 ...

    JBOSS使用指南,JMX原理和应用,EJB3.0使用说明

    JMX是Java平台的一个核心部分,用于管理和监控Java应用程序。在JBoss中,JMX用于监控服务器状态,如内存使用情况、线程池状态、部署的应用等。 1. JMX架构:JMX由MBeans(Managed Beans)、Server和代理(Agents)...

    如何用JMX检测应用程序[归纳].pdf

    在【标题】"如何用JMX检测应用程序[归纳].pdf"和【描述】中,主要讨论了如何利用JMX来增强应用程序的监控能力。 首先,JMX的核心组件是MBean,它是一个实现了特定管理接口的Java对象。MBean可以代表任何可以管理的...

    jmxtools-1.2.1.jar +jmxri-1.2.1.jar+ jms-1.1.jar

    总的来说,`jmxtools-1.2.1.jar`、`jmxri-1.2.1.jar`和`jms-1.1.jar`是JMX生态系统的关键组成部分,它们提供了一套强大的管理和监控Java应用程序的框架。通过下载并集成这些库,开发者和运维人员可以构建出高度可...

    jmxtools-1.2 jmxri jar

    Java Management Extensions(JMX)是Java平台提供的一种标准框架,用于管理和监控Java应用程序及系统资源。JMX允许开发者创建管理接口,以便对运行时的组件进行动态监控和配置。在这个场景中,我们关注的是两个特定...

    利用Java内置的API开发JMX功能

    总的来说,JMX为复杂的Java应用程序提供了一种结构化、标准化的管理和监控机制。通过定义和注册MBeans,开发者可以轻松地暴露系统状态,允许远程监控和配置,从而提高了系统的可维护性和可靠性。对于大型、分布式...

    Ehcache 简单的监控

    Ehcache是一个开源的、高性能的缓存解决方案,广泛应用于Java应用程序中,以提高数据访问的速度和效率。本文将深入探讨Ehcache的简单监控,帮助开发者更好地理解其工作原理和性能状态。 首先,了解Ehcache的核心...

Global site tag (gtag.js) - Google Analytics