【问题标题】:Use Jolokia to monitor JMX endpoint of webapp on same Tomcat server使用 Jolokia 监控同一 Tomcat 服务器上 webapp 的 JMX 端点
【发布时间】:2015-03-18 08:11:54
【问题描述】:

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 应用程序?

【问题讨论】:

    标签: java python tomcat jmx jolokia


    【解决方案1】:

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

    对于您的问题:

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

    2. 作为替代方案,您还可以使用 JVM 代理,它会在额外端口(默认值:8778)上打开自己的 HTTP 服务器。更多信息请关注reference manual

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

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

    下一步是探索 JMX 命名空间,可以使用浏览器(以及类似 http://localhost:8080/jolokia/list 的操作“列表”,但这很乏味)或使用像 j4pshhawt.io 这样的客户端。希望您能找到您正在寻找的 Web 应用程序的 MBean。

    【讨论】:

    • 很好的信息,谢谢。该教程还不够恕我直言,因为它没有提到如何浏览数据 - 或者我错过了什么?
    • Nvm 我错过了。信息在这里:jolokia.org/reference/html/protocol.html
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多