搜索

6.2. 使用 JMX 管理 AMQ Broker

download PDF

您可以使用 Java 管理扩展(JMX)来管理代理。管理 API 由代理使用 MBeans 接口公开。代理将其资源注册到域 org.apache.activemq

例如,管理名为 exampleQueue 的队列的 ObjectName 是:

org.apache.activemq.artemis:broker="__BROKER_NAME__",component=addresses,address="exampleQueue",subcomponent=queues,routingtype="anycast",queue="exampleQueue"

MBean 是:

org.apache.activemq.artemis.api.management.QueueControl

MBean 的 ObjectName 使用帮助程序类 org.apache.activemq.artemis.api.core.management.ObjectNameBuilder 构建。您还可以使用 jconsole 来查找您要管理的 MBeans 的 ObjectName

使用 JMX 管理代理与使用 JMX 管理任何 Java 应用程序完全相同。它可以通过反映或创建 MBeans 的代理来完成。

6.2.1. 配置 JMX 管理

默认情况下,可以使用 JMX 来管理代理。您可以通过在 broker.xml 配置文件中设置 jmx-management-enabled 属性来启用或禁用 JMX 管理。

流程

  1. 打开 & lt;broker_instance_dir> /etc/broker.xml 配置文件。
  2. 设置 & lt;jmx-management-enabled>

    <jmx-management-enabled>true</jmx-management-enabled>

    如果启用了 JMX,可以使用 jconsole 在本地管理代理。

    注意

    出于安全原因,默认不启用远程连接到 JMX。

  3. 如果要从同一 MBeanServer 管理多个代理,请为每个代理配置 JMX 域。

    默认情况下,代理使用 JMX 域 org.apache.activemq.artemis

    <jmx-domain>my.org.apache.activemq</jmx-domain>
    注意

    如果您在 Windows 系统上使用 AMQ Broker,则必须在 artemis 或 artemis.cmd 中设置系统属性。shell 脚本位于 < install_dir>/bin 下。

其他资源

  • 有关为远程管理配置代理的更多信息,请参阅 Oracle 的 Java 管理指南

6.2.2. 配置 JMX 管理访问

默认情况下,出于安全原因禁用对代理的远程 JMX 访问。但是,AMQ Broker 有一个 JMX 代理,允许远程访问 JMX MBeans。您可以通过在代理 management.xml 配置文件中配置连接器元素来启用 JMX 访问。

注意

虽然也可以使用 'com.sun.management.jmxremote ' JVM 系统属性启用 JMX 访问,但该方法不被支持,且不安全。修改该 JVM 系统属性可以绕过代理上的 RBAC。为最大程度降低安全风险,请考虑对本地主机的有限访问。

重要

为远程管理公开代理的 JMX 代理存在安全隐患。

要保护您的配置,如此流程所述:

  • 将 SSL 用于所有连接。
  • 显式定义连接器主机,即要公开代理的主机和端口。
  • 显式定义 RMI (远程方法调用)registry 绑定的端口。

先决条件

  • 一个可正常工作的代理实例
  • Java jconsole 工具

流程

  1. 打开 & lt;broker-instance-dir&gt; /etc/management.xml 配置文件。
  2. 为 JMX 代理定义连接器。connector-port 设置建立 RMI registry,客户端如对 JMX 连接器服务器的 jconsole 查询。例如,允许在端口 1099 上远程访问:

    <connector connector-port="1099"/>
  3. 使用 jconsole 验证到 JMX 代理的连接:

    service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
  4. 在连接器上定义附加属性,如下所述。

    connector-host
    要公开代理的代理服务器主机。要防止远程访问,请将 connector-host 设置为 127.0.0.1 (localhost)。
    rmi-registry-port
    JMX RMI 连接器服务器绑定到的端口。如果没有设置,则端口始终是随机的。设置此属性以避免通过防火墙发起的远程 JMX 连接出现问题。
    jmx-realm
    用于身份验证的 JMX 域。默认值为 activemq,以匹配 JAAS 配置。
    object-name
    用于公开远程连接器的对象名称。默认值为 connector:name=rmi
    secured
    指定连接器是否使用 SSL 保护。默认值为 false。将值设为 true 以确保安全通信。
    key-store-path
    密钥存储的位置。如果您设置了 secured="true",则需要此项。
    key-store-password
    密钥存储密码。如果您设置了 secured="true",则需要此项。可以加密密码。
    key-store-provider
    密钥存储提供程序。如果您设置了 secured="true",则需要此项。默认值为 JKS
    trust-store-path
    信任存储的位置。如果您设置了 secured="true",则需要此项。
    trust-store-password
    truststore 密码。如果您设置了 secured="true",则需要此项。可以加密密码。
    trust-store-provider
    truststore 供应商。如果您设置了 secured="true",则需要此项。默认值为 JKS
    password-codec
    要使用的密码 codec 的完全限定类名称。如需了解如何工作的更多详细信息,请参见以下链接密码屏蔽文档。
    注意

    RMI registry 选择要绑定到的 IP 地址。如果系统上有多个 IP 地址/NIC,您可以通过将以下内容添加到 artemis.profile 文件中来选择要使用的 IP 地址: -Djava.rmi.server.hostname=localhost

  5. 使用 jdk.serialFilter 为端点序列化设置适当的值,如 Java Platform 文档所述

其他资源

6.2.3. MBeanServer 配置

当代理以独立模式运行时,它使用 Java 虚拟机的 平台 MBeanServer 注册其 MBeans。默认情况下,还会部署 Jolokia,以允许使用 REST 访问 MBean 服务器。

6.2.4. JMX 如何使用 Jolokia 公开

默认情况下,AMQ Broker 附带了 Jolokia HTTP 代理作为 Web 应用程序部署。Jolokia 是一个通过 HTTP 桥接的远程 JMX,它公开 MBeans。

注意

要使用 Jolokia,用户必须属于 < broker_instance_dir> /etc/artemis.profile 配置文件中的 hawtio. role 系统属性定义的角色。默认情况下,此角色为 amq

例 6.1. 使用 Jolokia 查询代理版本

本例使用 Jolokia REST URL 来查找代理版本。Origin 标志应该为代理服务器指定域名或 DNS 主机名。另外,您为 Origin 指定的值必须与 Jolokia Cross- Origin Resource Sharing (CORS)规格中的 <allow-origin > 的条目对应。

$ curl http://admin:admin@localhost:8161/console/jolokia/read/org.apache.activemq.artemis:broker=\"0.0.0.0\"/Version -H "Origin: mydomain.com"
{"request":{"mbean":"org.apache.activemq.artemis:broker=\"0.0.0.0\"","attribute":"Version","type":"read"},"value":"2.4.0.amq-710002-redhat-1","timestamp":1527105236,"status":200}

其他资源

  • 有关使用 JMX-HTTP 网桥的更多信息,请参阅 Jolokia 文档
  • 有关为用户分配角色的更多信息,请参阅 添加用户
  • 有关指定 Jolokia Cross-Origin Resource Sharing (CORS)的更多信息,请参阅 Security 的 4.1.5 部分。

6.2.5. 订阅 JMX 管理通知

如果在您的环境中启用了 JMX,您可以订阅管理通知。

流程

  • 订阅 ObjectName org.apache.activemq.artemis:broker=" <broker-name>".

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.