我想跟踪可能滞留在Apache Artemis队列中的数据,我想将其JMX管理功能与我们的Zabbix实例一起使用。
要通过JMX成功将Zabbix连接到Artemis,我需要采取什么步骤? https://activemq.apache.org/artemis/docs/latest/management.html中提到的内容对我来说还不太清楚。
答案 0 :(得分:0)
如the documentation所述,您需要将其添加到management.xml
:
<connector connector-port="1099"/>
这将在localhost
上公开一个JMX连接器,因此,如果您希望能够从网络上的另一台计算机(即Zabbix实例)远程访问它,则应执行以下操作:
<connector connector-port="1099" connector-host="myhost" />
此外,如果托管代理的计算机上有多个IP地址,则需要在JAVA_ARGS
的{{1}}变量中设置此系统属性:
artemis.profile
然后使用如下网址将您的Zabbix实例指向代理:
-Djava.rmi.server.hostname=myhost
您可以通过在service:jmx:rmi:///jndi/rmi://myhost:1099/jmxrmi
目录中运行Artemis附带的jmx
示例来查看此操作。只需导航到该目录并运行examples/features/standard/
。运行该示例将创建一个代理实例,启动该代理实例,然后自动运行所有客户端。在示例运行之后,您可以进入mvn verify
目录并查看所有配置文件以将它们与您自己的配置文件进行比较。如果愿意,也可以独立于示例启动代理(通过从target/server0
目录运行./artemis run
)。代理运行后,您应该能够使用JConsole毫无问题地使用JConsole连接到它,如下所示:
target/server0/bin
答案 1 :(得分:0)
我必须禁用内部连接器,然后通过将其添加到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"
但是,我知道,这种方式除了安全之外什么都没有。