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. CodeForces888E Maximum Subsequence(折半枚举+two-pointers)

    题意 给定一个包含\(n\)个数的序列\(a\),在其中任选若干个数,使得他们的和对\(m\)取模后最大.(\(n\leq 35\)) 题解 显然,\(2^n\)的暴枚是不现实的...,于是我们想到了 ...

  2. Flask实战第68天:项目上线部署

    在开发机上的准备工作 1.确认项目没有bug 2.用pip freeze >requirements.txt将当前环境的包导出到requirements.txt文件中,方便部署的时候安装 3.将 ...

  3. http://download.eclipse.org/technology/m2e/releases install error

    Can you try running Eclipse as Admin and try this again?. Let me know how that goes. what is the upd ...

  4. smail修改字符串 汉字

    韩梦飞沙 yue31313 韩亚飞 han_meng_fei_sha  313134555@qq.com 将smali文件中的unicode字符串变为汉字

  5. 【Kruskal+dfs】BZOJ1016- [JSOI2008]最小生成树计数

    [题目大意] 现在给出了一个简单无向加权图.你不满足于求出这个图的最小生成树,而希望知道这个图中有多少个不同的最小生成树. [思路] 拖欠了三个月整(?)的题目,搞出来弄掉了……本年度写的时候姿势最丑 ...

  6. 小Z的城市之旅

    题目大意: 从(0,0)走到(x,y),每次可以向上下左右走一格,问走r步刚好到(x,y)的方案数. 思路: 找规律发现答案就是C((r+x-y)/2,r)*C((r-x-y)/2,r). #incl ...

  7. Codeforces Round #127 (Div. 1) E. Thoroughly Bureaucratic Organization 二分 数学

    E. Thoroughly Bureaucratic Organization 题目连接: http://www.codeforces.com/contest/201/problem/E Descri ...

  8. opensuse语言环境和中文输入法

    Auth: JinDate: 20140414 版本:13.1 步骤 1.安装opensuse 语言选择英文 2.设置最近的源 比如sohu,163 3.update 4.Control Center ...

  9. Clover 的功能就是给资源管理器加上 Chrome 一样的标签页

    官网下载地址:http://cn.ejie.me/

  10. 发一个比trace功能更强大debug工具,MonterDebugger

    经常看到兄弟说trace不出东西啊,这样给你调试会带来很多不便:加入说我们需要将运行时的debug信息和之前某个版本的进行比对:又加入说我们需要在运行时通过debug动态调整显示对象的属性:查看当前整 ...