RedHat Jboss 6.4 JMX无法将JConsole连接到远程从站

时间:2017-03-10 23:43:44

标签: jboss redhat jmx jboss6.x

我正在尝试将JConsole连接到远程Slave 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客户端的代码片段:

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]

我在配置中错过了哪一步?

感谢。

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,我无法在任何资源中看到我通过JBoos和RedHat网站搜索和搜索的资源。

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

我在分配给$scope.$watch('results', function(newVal, oldVal) { if (newVal !== oldVal) { updateRandomValues(); } }); 的{​​{1}}子系统中打开了另一个端口/连接器,我得到了我需要的东西。 所以我的解决方案看起来像:

  • jboss:domain:remoting文件中的jmx连接用户:

    ManagementRealm

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

jmxadmin=...pasword hash...
  • mgmt-groups.properties档案

    1. jmxadmin=SuperUser 元素:

      domain.xml
    2. <management>元素

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

      <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>
      
    4. <subsystem xmlns="urn:jboss:domain:remoting:1.2">元素

      <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>
      

毕竟我能够连接JConsole或使用自定义JMX连接来查看我希望使用<socket-binding-groups>连接看到的所有MBean:

<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"/>
...

不通过ManagementRealm

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