今天就跟大家聊聊有关如何用Tomcat MBean实现监控应用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
做为一款发行多年的成熟开源应用服务器,Tomcat 有众多的优点,其中方便的监控就是其中之一。
在 Tomcat 中,要实现监控,无论是监控应用,还是监控容器内部,都可以通过 JMX 的方式实现。
打开JConsole的窗口可以看到,在列出的本地JVM进程中,包含已经启动的 Tomcat 进程,其中名称一栏是当前应用的 Main-Class 的名称, PID 和 jps 命令显示一致。对于不清楚哪个是要 attach 的应用时,可以通过 jps 命令显示详情,通过载入的配置,JVM 参数等来明确。(jps 命令请参考这篇 你可能不知道的几个java小工具 )
attach之后,就会看到 Tomcat 以及 JVM 对外暴露的一系列对象,在 JMX 里称之为 MBean。 这里 JConsole 仅仅是一个 Client, 我们所连接到的这个进程所提供的,是一个 Server, JMX 里称为 MBeanServer。这些 MBean 就是 这个Server 上对外提供属性和方法的对象。
下面这张图,是 attach 到 Tomcat 进程后看到的 一些MBean, Catalina 这个很明显是 Tomcat 提供的, 一些java开头的,是 JVM 提供的。
这里的 Engine 就是一个MBean, 红框中的属性和操作,是MBean对象提供的可供读取和执行的内容, 而右侧这里的ObjectName,是我们在一个MBeanServer上 来定位一个MBean 的名称。
JMX
说到MBean,就不得不提 JMX。什么是JMX?
JMX 是 Java Management Extensions 的缩写,Wikipedia上这样介绍:
JMX is a Java technology that supplies tools for managing and monitoring applications, system objects, devices (such as printers) and service-oriented networks. Those resources are represented by objects called MBeans (for Managed Bean).
最主要的功能,是用来对应用进行管理和监控。我们上面提到的几个概念,就是 JMX 中最核心的几个概念。
wikipedia上这张图借来一用。我们看到 Console 通过不同的协议连接到MBeanServer上。
JMX 在 Tomcat 中的使用
Tomcat 使用 JMX 实现其自身的监控和管理。其中 我们在Catalina 包下看到的这些 MBean,在不同的包中有不同的MBean 描述文件描述。
如果对于自己部署的应用有监控和管理的需要等,我们自己也可以开发MBean,然后直接获取平台的MBeanServer,这样就可以和Tomcat的进程在一起。
Tomcat 内部对于一些应用部署,属性提供等都可以通过 JMX 的形式来完成,我们之前写过一些这部分的内容:
你了解JMX在Tomcat的应用吗?
你一定不知道IDE里的Tomcat是怎么工作的!
里面有介绍IDE内应用部署是如何通过JMX实现的等。
此处,当前 Tomcat 内部署了哪些Web应用,同时创建了哪些 线程池, Connector 等,都可以通过 JMX 的 MBean 进行获取和管理。
要获取这些信息,所需要做的,仅仅是写一个 JMX 的 Client,然后通过 ObjectName 读取其即可,所有的属性读取,操作执行,完全可以理解成普通的JavaBean 在进行反射调用一样。
对于一个Web应用,在web.xml里配置的那些信息,在MBean里一样有体现
还有关于请求数的统计
一个Web应用内的 Servlet 、Jsp 都分别罗列出来,做为不同的MBean,他们的ObjectName格式类似这样:
Catalina:j2eeType=Servlet,WebModule=//localhost/examples,name=HelloWorldExample,J2EEApplication=none,J2EEServer=none
只需要修改黑体字部分即可。
而通过 JMX 实现的管理,是通过对MBean提供的一些操作的执行,来实现应用内一些内容的动态变更。比如像Connector的启动暂停。
可以在Jconsole里直接进行方法的调用。
看完上述内容,你们对如何用Tomcat MBean实现监控应用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。