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

ƘɌỈ*_*ƬƠƑ 1 python java tomcat jmx jolokia

Jolokia对我来说是一个未知的领域,在阅读完文档之后,我仍然不确定它是否适用于我想到的场景.

建立:

  • Tomcat应用程序服务器(版本范围从6.x到7.x),通常在Windows平台上,偶尔会出现Linux的风格.
  • 部署的第三方Java Web应用程序(SAP BusinessObjects)启用了JMX监视(可通过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应用程序连接?

Rol*_*Huß 5

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

对你的问题:

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

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

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

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

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