目前项目中使用了jmx技术对项目进行监控,这里简单记录一下。
JMX(Java Management Exrensions)技术是标准Java平台的一部分。https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/index.html
我目前对jmx的理解就是被监控应用作为“服务器”提供端口接入能力,为监控应用提供相应的数据和已开发或已实现的操作能力; 举个例子,例如我的web服务对外提供了http接口服务,用来修改某个循环速度,那么通过jmx监控端相应接口也可以实现此效果;web的服务端口是80或433,它的端口可以自定义。
被监控端每次需要在应用启动的时候相应的启动jmx服务
JMXConnectorServerFactory.newJMXConnectorServer(jmxServerURL,environment,MBeanServers).start();
这三个参数分别是连接地址、环境配置、扩展MBean对象。
其实这个操作类似于启动一个socket端口,其实本质上它就是启动一个socket端口,在此端口进行所有的jmx操作和数据通信,jmx已经实现好它的通信包,所以不需要像做socket服务一起设计包结构,但是jmx设计者只是帮助实现了公共部分,具体的监控数据需要自行设计(我们使用json);在这个数据交互上分为主动和被动两种,例如主动就是调用自己扩展的MBean或系统提供的MBean,被动去订阅需要收取的广播。
连接的方法类似,使用url和参数进行连接。
JMXConnectorFactory.connect(jmxServiceURL, env);