使用Jolokia在同一Tomcat服务器上监视Web应用程序的JMX端点



Jolokia对我来说是一个未知的领域,在阅读了文档之后,我仍然不确定它是否能与我心目中的场景一起工作。

设置:

  • Tomcat应用程序服务器(版本从6.x到7.x不等),通常在Windows平台上,偶尔也有Linux的味道
  • 部署了启用JMX监控的第三方Java web应用程序(SAP BusinessObjects)(可通过RMI访问)

可能的问题:

  • 要监控的Java web应用程序是商业的、封闭的源代码,因此不可能进行修改。唯一可以更改的是JMX端口号
  • JMX端点是一个自定义端点,因此不是默认的jmxrmi端点
  • JMX连接需要身份验证

目标:

我想做的是将Jolokia WAR文件部署到Tomcat服务器上,然后对其进行配置,以便从其他web应用程序中读取MBean属性。

我会使用Python(版本3)和RequestsHTTP库自己编写客户端代码。

我一直在阅读Jolokia文档(在这一点上,我还是一个完全的新手),但不知道这是否可能(因为我似乎找不到在哪里输入JMX/RMI url或身份验证信息)。

问题:

  1. 我可以使用WAR代理进行此设置吗
  2. 如果没有,你能解释一下原因吗(这样我就能理解,而不是因为我不相信你)。此外,还有其他更适合这种情况的代理吗
  3. 如果是,你能告诉我如何将Jolokia配置为要连接的web应用程序吗

首先,Jolokia完全绕过JSR-160连接器,因此不需要任何JMX/RMI身份验证。Jolokia的全部目的是为内部JMX子系统提供一个HTTP/JSON桥接器。根据代理商的不同,您可以很容易地保护Jolokia。对于WAR代理,安全保护与任何Java EE web应用程序相同:为tomcat设置一些角色和用户(例如在tomcat-users.xml中),并在jolokia.war/WEB-INF/web.xml中的安全约束中引用该角色。

回答您的问题:

  1. 是的,你可以。如果您没有任何特定的身份验证需求,只需将jolokia.war放入tomcat的/webapps目录即可。我建议在添加安全性之前先尝试一下。要解除代理程序的安装,只需取消战争即可。

  2. 作为替代方案,您也可以使用JVM代理,它在一个额外的端口上打开自己的HTTP服务器(默认值:8778)。参考手册中对此有更多介绍

  3. 不需要到web应用程序的专用连接,因为MBean是全局注册的,并且可以从JVM中的任何位置访问。网络应用程序当然应该仔细选择它公开的管理信息。因此,不需要额外的步骤,您可以直接访问WEB应用程序的MBean(除非它在Java安全方面做了一些不寻常的事情,但我不这么认为)。

要测试安装,只需使用浏览器和上下文/jolokia连接到Tomcat即可(例如"http://localhost:8080/jolokia")。您应该看到有关代理本身的版本信息。

下一步是探索JMX名称空间,或者使用浏览器(和中的操作"list"http://localhost:8080/jolokia/list,但这很乏味)或使用j4psh或hawt.io这样的客户端。希望你能找到你正在寻找的网络应用程序的MBean。

相关内容

  • 没有找到相关文章

最新更新