【问题标题】:RedHat Jboss 6.4 JMX Unable to connect JConsole to remote slaveRedHat Jboss 6.4 JMX 无法将 JConsole 连接到远程从站
【发布时间】:2017-08-01 10:59:03
【问题描述】:

我正在尝试让 JConsole 连接到远程从 EAP 实例。 它以域模式运行。

我可以通过本机管理端口连接到主主机控制器和从主机控制器,但不能通过端口4447+offset 连接到从机实例。

我创建了角色为SuperUser(和superuser)的应用程序用户

我将 domain.xml 中的 JMX 子系统设置为

<subsystem xmlns="urn:jboss:domain:jmx:1.3">
   <expose-resolved-model/>
   <expose-expression-model/>
   <remoting-connector use-management-endpoint="false"/>
   <sensitivity non-core-mbeans="true"/>
</subsystem>

没有成功。

然后我尝试使用简单的 JMX 客户端,并且能够看到用户已通过身份验证并建立了连接,但是当我尝试获取 MBean 计数时,它返回 0。

我可以从连接中看到可用的 JMX 域,但看不到任何 MBean。

来自 Java 客户端的代码 sn-p:

JMXConnector jmxConnector = JMXConnectorFactory
            .connect(serviceURL, env);
    MBeanServerConnection connection = jmxConnector
            .getMBeanServerConnection();

    // Invoke on the JBoss AS MBean server
    int count = connection.getMBeanCount();

    System.out.println("MBeanCount:" + count);
    System.out.println("Domains:" + Arrays.toString(connection.getDomains()));

输出:

MBeanCount:0
Domains:[jboss.as, jboss.as.expr, jboss.jsr77, java.util.logging, org.switchyard.admin, jboss.ws, jboss.msc, jboss.jta, java.nio, jgroups, JMImplementation, com.oracle.jdbc, java.lang, com.sun.management, org.apache.camel, jboss.infinispan, jboss.modules]

我在配置中遗漏了哪一步?

谢谢。

【问题讨论】:

    标签: jboss redhat jmx jboss6.x


    【解决方案1】:

    我找到了一个解决方案,我在 JBoos 和 RedHat 网站上搜索和搜索的任何资源中都找不到该解决方案。

    所有资源都告诉我们: 要连接到 jmx:remoting-jmx 子系统用户必须在 ApplicationRealm 中并且必须具有 SuperUser 角色。 但实际上...

    我在分配给ManagementRealmjboss:domain:remoting 子系统中打开了另一个端口/连接器,我得到了我需要的东西。 所以我的解决方案如下:

    • mgmt-users.properties 文件中 jmx 连接的用户:

      jmxadmin=...pasword hash...
      

    mgmt-groups.properties 文件中的管理组

         jmxadmin=SuperUser
    
    • domain.xml文件

      1. &lt;management&gt;元素:

        <management>
          <access-control provider="rbac">
            <role-mapping>
              ...
              <role name="SuperUser">
                  <include>
                    <user name="jmxadmin"/>
                    ...
                  </include>
              </role>
              ...
            </role-mapping>
          </access-control>
        </management>
        
      2. &lt;subsystem xmlns="urn:jboss:domain:jmx:1.3"&gt;元素

        <subsystem xmlns="urn:jboss:domain:jmx:1.3">
            <expose-resolved-model/>
            <expose-expression-model/>
            <remoting-connector use-management-endpoint="false"/>
            <sensitivity non-core-mbeans="true"/>
        </subsystem>
        
      3. &lt;subsystem xmlns="urn:jboss:domain:remoting:1.2"&gt;元素

        <subsystem xmlns="urn:jboss:domain:remoting:1.2">
            <connector name="remoting-connector" socket-binding="remoting" security-realm="ApplicationRealm"/>
            <connector name="remoting-mgmt-connector" socket-binding="mgmt-remoting" security-realm="ManagementRealm"/>
        </subsystem>
        
      4. &lt;socket-binding-groups&gt;元素

        <socket-binding-groups>
            <socket-binding-group name="full-ha-sockets" default-interface="public">
        ...
        <socket-binding name="remoting" port="4447"/>
        <socket-binding name="mgmt-remoting" port="4457"/>
        ...
        

    毕竟我能够连接 JConsole 或使用自定义 JMX 连接来查看我想通过使用 ManagementRealm 连接来查看的所有 MBean:

    service:jmx:remoting-jmx://jboss_slave_host:4457+${jboss.socket.binding.port-offset}
    

    不通过ApplicationRealm 端口4447+${jboss.socket.binding.port-offset}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-22
      • 2019-07-12
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 2015-12-12
      相关资源
      最近更新 更多