早期是作为J2EE的一部分, 因此总给人一种开发起来会很"重"的感觉, 这让不少Java程序员宁愿选择自行实现"轻量级"方案. 时至今日, 借助一些优秀的开源项目, JMX 也可以用起来很"轻".

pojo-mbean 使用Annotation对MBean进行声明, 省去不少 JMX规范中要求的罗嗦代码, 不知道有多罗嗦的请见 这里 . 例如, ManagableServer 希望被声明为一个MBean, 只有两个步骤:

注解

@MBean(objectName="jsmx:type=Demo")

class ManagableServer {

@ManagedAttribute

public long getCount() {...}

@ManagedAttribute

public int getGauge() {...}

@ManagedOperation

public void shutdown() {...}

}

注册

ManagableServer mBean = new ManagableServer();

new MBeanRegistration(mBean).register();

运行之后, 你可以通过 jconsole 查看到已经发布的MBean.

如果 jconsole 就可以满足你对监控的要求, 那么下文的内容大可不必再看啦.

使用 jolokia 访问MBean

jconsole 作为JDK自带的们免费工作还是很强大的, 它提供JVM最基本的监控能力, 然而默认的RMI通讯方式可能会由于安全原因而被限制使用.

jolokia 实现了通过HTTP+JSON的方式访问MBean, 很好的解决这个问题. 无需额外编写代码便可使用, 只需要在启动命令中指定 -javaagent 选项即可实现:

java -javaagent:/path/to/jolokia-jvm-jdk6-x.xx-agent.jar=port=7777,host=localhost -cp ...

开发一个真正满足应用的 web console 肯定不是5分钟能够搞定的, 专业的监控平台还是有很多可供使用的, Ganglia 便是其中之一.

如题所述, jmxetric 就提供方便与 Ganglia 集成解决方案, 同样无需额外编写代码, 实现的两个步骤是:

声明数据采集点

java -javaagent:/path/to/jmxetric-0.0.x.jar=config=etc/jmxetric.xml,wireformat31x=true -cp ...

在 jmxetric -0.0.6中, 若要设置wireformat31x为true只有在 javaagent option中设置才能生效, 详情请见 issue25 .

在 Ganglia 中的效果是:

结束语

细节是魔鬼! "5分钟"虽有点标题党, 但丰富的开源资源确实令JMX使用变的超级容易啦.完整的Demo在 这里 . 期待更多更好更有创意的做法!

java jmx 监控_只用五分钟为系统实现基于JMX的监控相关推荐

  1. Java菜鸟起飞日记-每天五分钟(Hello World)

    Today,沈叔的Java菜鸟起飞日记-每天五分钟就正式开博了 其实本来是没有打算写这样一个东西的,不过就近来发现自己的学习状态存在很大的问题,很多东西都开始遗忘,于是乎,为了证明自己学过,还是用这样 ...

  2. java分布式架构_Java学习五分钟系列:从单体架构转向分布式架构的难点

    Java学习五分钟系列,目的是为让大家在短时间内搞清楚一项技术的概念.优缺点和适用场景,想要深入的了解,还需要投入更多的时间. 分布式架构和单体应用架构相比,可以充分利用多机器的性能优势,提高了系统的 ...

  3. matlab批量储存变量_科协五分钟|用Matlab工具包处理音频信号

    科协近期大事汇总 1. 9月28日晚,硬件人才计划顺利验收. 2. 9月28日下午,仪器设计大赛综合组交流. 3. 五系联合实验室参观筹办中,预计第六第七周举办 4. 仪器设计大赛新生组开发稳步进行. ...

  4. linux 查看防火墙状态_每天五分钟学习Linux系列之 - 系统安全配置

    20年IT从业,二哥的团队使用最多的系统就是Linux,开发,运维的小伙伴们都离不开Linux系统,特别是大数据和人工智能领域更是如此,但由于日常工作忙,小伙伴们没有太多成块的时间系统的学习Linux ...

  5. svm分类器训练详细步骤_「五分钟机器学习」向量支持机SVM——学霸中的战斗机...

    大家好,我是爱讲故事的某某某. 欢迎来到今天的[五分钟机器学习]专栏内容 --<向量支持机SVM> 今天的内容将详细介绍SVM这个算法的训练过程以及他的主要优缺点,还没有看过的小伙伴欢迎去 ...

  6. typora 分割线_实战 | 五分钟,使用Typora+PicGo提升百倍写作效率

    学习和工作中,我们经常需要写作.如果你正在学习编程,可能会写篇学习笔记记录一下.如果你是一名开发者,可能会写篇技术文档或者接口文档.如果一是一名博主,可能会写篇文章分享知识.又或者写篇散文,抒发下内心 ...

  7. 在线五子棋JAVA网络编程_实验五 Java网络编程及安全

    一.实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 二.实验步骤 1. 基于Java Socket实现安全传输 2. 基于TCP实现客户端和服务器,结对编 ...

  8. java对象转xml jackson_五分钟Jackson入门(三) JSON数据类XML转换(附项目源码)

    JSON数据看起来就像一棵树,也可以用类似于XML的解析方法来解析.将上篇文章的Demo改为: package com.hankcs; import org.codehaus.jackson.Json ...

  9. java 体检套餐_第五章项目:体检套餐

    窗体搭建的效果图如下: 一:实现的功能主要有以下几个方面: ①:显示指定套餐的项目明细 ②:向指定套餐添加检查项目信息 ③:删除套餐中的项目信息 ④:新建套餐 二:创建体检项目维护系统中的检查项目类( ...

最新文章

  1. unix oracle控制台,Linux平台下启动oracle11gEM控制台
  2. mysql查询员工表中所有员工入职20个月之后的日期_Mysql基础教程
  3. Java接口interface
  4. MyBatis-03 MyBatis XML方式之select元素
  5. VS2015中配置MSComm通讯控件和注意事项
  6. 背景图片自适应,不重复
  7. 深度学习(三十九)可视化理解卷积神经网络(2.0)
  8. java innerexception_java – 为什么使用反射访问外部类的私有成员抛出IllegalAccessException?...
  9. C#委托和事件的应用Observer模式实例
  10. 导致解码延时/丢帧的语法元素—H264
  11. python维度切片中三个是怎么取值的_总结python 多维切片之冒号和三个点的使用方法...
  12. echarts 地图增加背景图
  13. Java五子棋全代码
  14. BroadcastReceiver启动Service 3.1之后静态注册
  15. Feed流及其常见算法简介
  16. 解决Windows远程桌面连接工具连接不上远程操作系统的问题
  17. Hue 之 SparkSql interpreters的配置及使用
  18. js 编码解码 escape,encodeURI,encodeURIComponent
  19. 完整性约束条件:唯一性约束
  20. 我的2014作的一手好死,2015求轻虐

热门文章

  1. Linux debian安装PyCharm教程
  2. Android木马分析实验,Android木马简介与分析
  3. JQuery DataTables改变行或列的背景或字体颜色
  4. Windows环境中在同一个Tomcat下发布不同端口号的不同web程序
  5. 在windows环境下ftp服务器的文件上传和下载
  6. adaptivitypara设置选0还是1_喝牛奶,选全脂还是低脂?家里人能不能喝同1种牛奶?...
  7. mysql基础测试_MySQL基础知识测试
  8. python random函数_详细代码实战讲解:如何用 Python让自己变成天选之子
  9. 微型计算机主机箱内的所有部件均由大规模,2012年自考《计算机应用基础》模拟试题...
  10. Edge使用手机版切换到电脑模式的方法