使用Jolokia监视同一Tomcat服务器上的webapp的JMX端点

时间:2015-03-18 08:11:54

标签: java python tomcat jmx jolokia

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)和Requests HTTP库自己编写客户端代码。

我一直在阅读Jolokia文档(再次,我在这一点上是一个完整的新手),但无法弄清楚这是否可行(因为我似乎无法找到输入JMX / RMI URL或身份验证信息。)

问题:

  1. 我可以使用WAR代理进行此设置吗?
  2. 如果没有,请你解释原因(所以我能理解,不是因为我不相信你)。另外,还有另一个更适合这种情况的代理吗?
  3. 如果是,您能否指出我如何将Jolokia配置为连接到Web应用程序的正确方向?

1 个答案:

答案 0 :(得分:5)

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

问题:

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

  2. 作为替代方案,您还可以使用JVM代理,该代理在额外端口上打开自己的HTTP服务器(默认值:8778)。有关详情,请参阅reference manual

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

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

    下一步是探索JMX命名空间,或者使用浏览器(和操作"列表"像http://localhost:8080/jolokia/list一样,但这很乏味)或者像客户端一样j4pshhawt.io。希望您能找到您正在寻找的webapp的MBean。