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

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

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

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

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

利用JMX来监控大部分java应用的更多相关文章

  1. 利用VisualVm和JMX远程监控Java进程

    自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建 ...

  2. 利用JMX统计远程JAVA进程的CPU和Memory---jVM managerment API

    从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java.lang.management 包,包里提供了许多MXBean的接口类,可以很方便的获取到JVM的内存.GC.线程.锁.c ...

  3. 利用JMX统计远程JAVA进程的CPU和Memory

    http://songzi0206.iteye.com/blog/1541636 ******************** 从JAVA 5开始,JDK提供了一些JVM检测的API,这就是有名的java ...

  4. Zabbix通过JMX方式监控java中间件

    Zabbix2.0添加了支持用于监控JMX应用程序的服务进程,称为“Zabbix-Java-gateway”:它是用java写的一个程序. 工作原理: zabbix_server想知道一台主机上的特定 ...

  5. JAVA JMX协议监控

    JMX协议监控,可通过JMX协议远程监控,实时监控线上jvm情况,并通过平台管理界面进行 展示,可以通过监控实时获得线上服务器运行情况. 可以监控内存.实时线程.共享内存等各种信息. 获取实时线程信息 ...

  6. 利用jdk中工具完成Java程序监控方法记录

    转载加自己整理的部分内容,转载自:http://jiajun.iteye.com/blog/810150 记录下JConsole使用方法 一.JConsole是什么    从Java 5开始 引入了 ...

  7. linux下利用JMX监控Tomcat

    利用JMX监控Tomcat,就是相当于部署在tomcat上的应用作为服务端,也就是被管理资源的对象.然后通过程序或者jconsole远程连接到该应用上来.远程连接需要服务器端提供ip和port.如果需 ...

  8. 利用btrace工具监控在线运行java程序

     一.作用 可以用于对运行中java程序进行诊断监控分析,也可以用于开发阶段查看一些异常信息或者调用过程(如有些第三方代码没有源代码,不便于debug调试). 注:如果用于对在线运行系统的诊断,需 ...

  9. zabbix日常监控项java(四)

    yum install net-tools netstat命令 yum -y install bash-completion 命令自动补全包 https://github.com/qiueer/zab ...

随机推荐

  1. Nginx反代,后端一个IP绑定多个SSL证书,导致连接失败之解决方法:HTTPS和SNI扩展

    默认:SSL协议进行握手协商进行连接的时候,默认是不会发送主机名的,也就是是以IP的形式来进行https连接握手协商的,这就导致一个问题,当一台服务器上有多个虚拟主机使用同一个IP的时候, Nginx ...

  2. XPath语法和CSS选择器介绍

    XPath语法 XPath 是一门在 XML 文档中查找信息的语言.XPath 可用来在 XML 文档中对元素和属性进行遍历.XPath 是 W3C XSLT 标准的主要元素,并且 XQuery 和 ...

  3. cream 的qsqrt 及其原理

    首先,是creamk 的qsort: float Q_rsqrt( float number ) { long i; float x2, y; const float threehalfs = 1.5 ...

  4. 【DP+树状数组】BZOJ1264-[AHOI2006]基因匹配Match

    [题目大意] 给定n个数和两个长度为n*5的序列,两个序列中的数均有1..n组成,且1..n中每个数恰好出现5次,求两个序列的LCS. [思路] 预处理每个数字在a[i]中出现的五个位置.f[i]示以 ...

  5. 【深度搜索+剪枝】POJ1011-Sticks

    深搜部分和之前的POJ2362差不多,只是有几处需要额外的剪枝. [思路]排序后从最短木棒开始搜索至木棒长总和,如果木棒长总和sum能整除当前棒长,则进入深搜. [剪枝]先前POJ2362的剪枝部分不 ...

  6. bzoj 1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害

    1585: [Usaco2009 Mar]Earthquake Damage 2 地震伤害 Description Farmer John的农场里有P个牧场,有C条无向道路连接着他们,第i条道路连接着 ...

  7. [Andrew Stankevich's Contest#21] Lempel-Ziv Compression

    Time Limit: 20000/10000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)     Special Judge ...

  8. [转]Java程序员从笨鸟到菜鸟之(八十三)细谈Spring(十二)OpenSessionInView详解及用法

    首先我们来看一下什么是OpenSessionInView?    在hibernate中使用load方法时,并未把数据真正获取时就关闭了session,当我们真正想获取数据时会迫使load加载数据,而 ...

  9. WPF中的动画——(五)关键帧动画

    与 From/To/By 动画类似,关键帧动画以也可以以动画形式显示目标属性值. 和From/To/By 动画不同的是, From/To/By 动画只能控制在两个状态之间变化,而关键帧动画则可以在多个 ...

  10. C#-java RSA加密解密

    using Org.BouncyCastle.Math; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Securi ...