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或身份验证信息)。
问题:
- 我可以使用WAR代理进行此设置吗
- 如果没有,你能解释一下原因吗(这样我就能理解,而不是因为我不相信你)。此外,还有其他更适合这种情况的代理吗
- 如果是,你能告诉我如何将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
中的安全约束中引用该角色。
回答您的问题:
-
是的,你可以。如果您没有任何特定的身份验证需求,只需将jolokia.war放入tomcat的
/webapps
目录即可。我建议在添加安全性之前先尝试一下。要解除代理程序的安装,只需取消战争即可。 -
作为替代方案,您也可以使用JVM代理,它在一个额外的端口上打开自己的HTTP服务器(默认值:8778)。参考手册中对此有更多介绍
-
不需要到web应用程序的专用连接,因为MBean是全局注册的,并且可以从JVM中的任何位置访问。网络应用程序当然应该仔细选择它公开的管理信息。因此,不需要额外的步骤,您可以直接访问WEB应用程序的MBean(除非它在Java安全方面做了一些不寻常的事情,但我不这么认为)。
要测试安装,只需使用浏览器和上下文/jolokia
连接到Tomcat即可(例如"http://localhost:8080/jolokia")。您应该看到有关代理本身的版本信息。
下一步是探索JMX名称空间,或者使用浏览器(和中的操作"list"http://localhost:8080/jolokia/list,但这很乏味)或使用j4psh或hawt.io这样的客户端。希望你能找到你正在寻找的网络应用程序的MBean。