JMX经验点滴

使用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目录下)即可。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值