我想跟踪可能卡在Apache Artemis队列中的数据,我想利用其JMX管理功能与我们的Zabbix实例。
我需要采取哪些步骤才能通过JMX成功将Zabbix连接到Artemis?https://activemq.apache.org/artemis/docs/latest/management.html 中提到的那些对我来说不太清楚。
我不得不禁用内部连接器,并通过将其添加到artemis.profile
文件中来反之道而行之:
JAVA_ARGS="$JAVA_ARGS -Dcom.sun.management.jmxremote"
JAVA_ARGS="$JAVA_ARGS -Dcom.sun.management.jmxremote.authenticate=false"
JAVA_ARGS="$JAVA_ARGS -Dcom.sun.management.jmxremote.ssl=false"
JAVA_ARGS="$JAVA_ARGS -Dcom.sun.management.jmxremote.port=1099"
JAVA_ARGS="$JAVA_ARGS -Dcom.sun.management.jmxremote.rmi.port=1098"
JAVA_ARGS="$JAVA_ARGS -Djava.rmi.server.hostname=edimq-broker-master-az1.dc01.clouedi.local"
但是,我知道,这种方式绝不安全。
正如文档所述,您需要将其添加到您的management.xml
:
<connector connector-port="1099"/>
这将在localhost
上公开一个JMX连接器,所以如果你想能够从网络上的另一台机器(即你的Zabbix实例(远程访问它,那么你应该做这样的事情:
<connector connector-port="1099" connector-host="myhost" />
此外,如果您在托管代理的计算机上有多个 IP 地址,则需要在artemis.profile
的JAVA_ARGS
变量中设置此系统属性:
-Djava.rmi.server.hostname=myhost
然后使用如下网址将Zabbix实例指向代理:
service:jmx:rmi:///jndi/rmi://myhost:1099/jmxrmi
您可以通过在examples/features/standard/
目录中运行 Artemis 附带的jmx
示例来查看此操作。只需导航到该目录并运行mvn verify
.运行该示例将创建一个代理实例,启动代理实例,并自动运行客户端。示例运行后,您可以转到target/server0
目录并查看所有配置文件以将它们与您自己的配置文件进行比较。如果您愿意,您也可以独立于示例启动 broker(通过从target/server0/bin
目录运行./artemis run
(。一旦代理运行,你应该能够使用 JConsole 连接到它,使用这样的 JMX url 没有问题:
service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi