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

早期是作为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.png

如果 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 ...

dashboard.png

开发一个真正满足应用的 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 中的效果是:

ganglia.png

结束语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(DFS or BFS)Find The Multiple(poj1426)

题目: 给定一个正整数n,请编写一个程序来寻找n的一个非零的倍数m,这个m应当在十进制表示时每一位上只包含0或者1。你可以假定n不大于200且m不多于100位。 提示:本题采用Special Judge,你无需输出所有符合条件的m&…

wsld2java axis_Weblogic+axis2安装

Weblogicaxis2安装实验环境系统版本使用到软件软件版本Redhat 6.3Ld-linux.so.2Ld-linux.so.2 安装的weblogic的需要安装(系统自带)Weblogic10.3Axis21.41在以下实验中我使用的是1.41的war包 ,下载war包的话可以在weblogic中进行部署。实验步骤:启动webl…

java stl分解_[STL训练]寻梦-题解(Java代码)极简思路

注意事项: insert()方法只能被 StringBuffer 类的对象调用参考代码:import java.util.Scanner;public class Main {private static int n 0;public static void main(String[] args) {Scanner scanner new Scanner(System.in);n scanner.nextInt();int m n * 2;for (int i…

(BFS)Prime Path (poj3126)

题目: 孤单的zydsg又一次孤单的度过了520,不过下一次不会再这样了。zydsg要做些改变,他想去和素数小姐姐约会。 所有的路口都被标号为了一个4位素数,zydsg现在的位置和素数小姐姐的家也是这样,如果两个路口间只差1个数…

java图片资源存放_Java编程中图片文件放哪

举个例子:importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;/*按扭类*/classBombextendsJButton{publicintnum_x,num_y;//第几号方块publicintBombRoundCount;//周围雷数...举个例子:import java.awt.*;import java.awt.event.*;import jav…

(BFS)Dungeon Master(poj2251)

题目: 你被困在一个3D地牢中且继续寻找最短路径逃生!地牢由立方体单位构成,立方体中不定会充满岩石。向上下前后左右移动一个单位需要一分钟。你不能对角线移动并且迷宫四周坚石环绕。 是否存在逃出生天的可能性?如果存在&#…

java流读写_java流概述以及文件读写示例

1. 先分清楚是字节流还是字符流。字节流:InputStream OutputStream字符流:Reader Writer字符流与字节流的区别是读取的单位长度不同,字节流读8字节,字符流读16字节,所以有中文时,就得用字符流。2. 在字节/字…

(DFS+DP)滑雪(poj1088)

题目 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数…

(BFS)Meteor Shower (poj3669)

题目: Bessie听说有场史无前例的流星雨即将来临;有谶言:陨星将落,徒留灰烬。为保生机,她誓将找寻安全之所(永避星坠之地)。目前她正在平面坐标系的原点放牧,打算在群星断其生路前转…

java的整型_java 整型

byte(1字节)、short(2字节)、int(4字节)、long(16字节)java中前缀加上0b或者0b就可以写二进制数,前缀加上0就可以写八进制数,前缀加上0x或者0x就可以写十六进制数一个字节是8位,最高位是符号位,最高位为0则是正数。最高位为1则是负…

(二分+区间搜索 )Mountain Walking(poj2110/poj2922)

题目 农夫约翰和贝西牛已经开始了其中一个“积极”的假期。他们整天都在山里散步,然后在一天结束时,他们厌倦了回到度假小屋。 由于攀爬需要大量能量并且已经疲惫,他们希望使用其最高和最低高度之间的差异最小的路径返回到机舱,…

python自动化操作应用程序错误_web自动化中踩过的低级错误坑(python+selenium)

1.定位了元素没有做下一步操作,比如,点击、输入等功能,而报错,报错信息如下:2.上传图片时,定位元素,应该定位input标签,点击页面input标签肉眼没有看到定位到任何元素,以…

(全排列)Smallest Difference (poj2718)

题目: Description - 题目描述 给定若干位十进制数,你可以通过选择一个非空子集并以某种顺序构建一个数。剩余元素可以用相同规则构建第二个数。除非构造的数恰好为0,否则不能以0打头。 举例来说,给定数字0,1&#x…

qgis折点打断_arcgis在折点处打断并建立网络分析(最短路径等问题)

目的:GIS网络分析用于对段路径等问题。这里仅仅讲述如何建立网络分析。网络建立前必须满足以下条件1.要素文件在节点处打断(本文下面会叙述)2.要素文件在地理数据库里的数据集里(一般是这样)3.要素文件包含的数据集里已经验证拓扑,并确保没有错误(可选)注…

(bfs)连连看(hdu1175)

题目: “连连看”相信很多人都玩过。没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子。如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子)&#…

base64 java php_利用PHP将图片转换成base64编码的实现方法

先来说一下为什么我们要对图片base64编码base64是当前网络上最为常见的传输8Bit字节代码的编码方式其中之一。base64主要不是加密,它主要的用途是把某些二进制数转成普通字符用于网络传输。由于这些二进制字符在传输协议中属于控制字符,不能直接传送&…

(BFS)Knight Moves(hdu1372)

题目: 在象棋王国,尼古拉斯.火山是一匹英俊的马,他非常幸运迎娶了白马王国的公主,他们将度蜜月,你现在是他们的女仆,火山会问你去一些地方最少需要多少步,这么简单的事当然难不倒你。由于火山是…

java上机作业要注意什么_Java第八次上机作业

1、请按照以下要求设计一个学生类Student,并进行测试。要求如下:1)Student类中包含姓名、成绩两个属性2)分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值.3)Student类中定义一个无参的构造方法和一个接收两…

(枚举)餐厅点餐(fzu2086)

问题: Jack最近喜欢到学校餐厅吃饭,好吃干净还便宜。 在学校餐厅,有a种汤,b种饭,c种面条,d种荤菜,e种素菜。 为了保证膳食搭配,Jack每顿饭都会点1~2样荤菜,1~2样素菜&…

java代下订单管理模块_用java语言开发一个订单管理系统

管理员登陆窗体(LoginForm):窗体中包含“管理员姓名”,“管理员密码”,按钮:"确定","取消"操作主窗体(MainFrame):包括:1、一个Jtable用来显示数据库中Orders表(订单表)中的...管理员登陆窗体(LoginForm)&…