JMX经验点滴

来源:互联网 发布:淘宝巴黎心店卖假货 编辑:程序博客网 时间:2024/05/19 01:59

使用Java构建的大规模分布式架构网站。为了了解整个网站中的每个节点运行状况,在考虑性能、开发速度而不考虑多开发语言支持的情况下,JMX无疑是最适合的方式。

JMX(Java 管理扩展,Java Management Extensions)是Sun公司在J2SE 5中提出来的。JMX可以访问到java应用的信息,也可以访问到JVM的信息。一个最简单的方式,单独设立一个监控节点,轮训访问整个网站所有节点的信息,发现任何一台有问题,给运维人员发邮件或者短信报警。

对于Java开发工程师而言,开发量真心不大。简单例子(标准MBean,这里不讨论MXBean,Dynamic,Model和Open这些MBean)如下:

对于需要监控的数据类,创建其父接口,名字为类名+MBean。假设有一个管理类ConfigureManager,则让它的父接口为ConfigureManagerMBean

在main函数中,添加如下语句:

try {mBeanServer = ManagementFactory.getPlatformMBeanServer();objectName = new ObjectName("net.sourceforge.ppcool:id=ConfigureManager");mBeanServer.registerMBean(ConfigureManager.Instance(), objectName);} catch (Exception e) {logger.error(e.getMessage(), e);}

即可让ConfigureManager内部数据暴露出来。

运行此程序时,需要在java执行启动命令中添加以下红色部分

nohup java -agentpath:/app/jprofiler8/bin/linux-x86/libjprofilerti.so=port=8849 -Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=外网IP地址 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=提供服务的端口号 -Dcom.sun.management.jmxremote.ssl=false -jar ppgateway.jar /app/javagateway/gateway.conf &

分别说明一下:

-Dcom.sun.management.jmxremote 提供本地JMX查询服务

-Djava.rmi.server.hostname=外网IP地址 提供远程JMX查询服务,需要IP地址

-Dcom.sun.management.jmxremote.authenticate=false 无需做密码认证

-Dcom.sun.management.jmxremote.port=提供服务的端口号 提供远程JMX查询服务,需要端口号

-Dcom.sun.management.jmxremote.ssl=false 不使用SSL

具体其他信息,你可以参考:http://docs.oracle.com/javase/1.5.0/docs/guide/management/


对于节点的Java开发工程师,无需和监控点的开发工程师对接调试。只需要使用JConsole(在JDK的bin目录下)即可。


0 0
原创粉丝点击