【问题标题】:Apache Artemis queue monitoring with Zabbix使用 Zabbix 进行 Apache Artemis 队列监控
【发布时间】:2018-10-24 11:15:21
【问题描述】:

我想跟踪可能卡在 Apache Artemis 队列中的数据,并且我想将它的 JMX 管理功能与我们的 Zabbix 实例结合使用。

为了通过 JMX 成功地将 Zabbix 连接到 Artemis,我需要采取哪些步骤? https://activemq.apache.org/artemis/docs/latest/management.html 中提到的那些我不太清楚。

【问题讨论】:

    标签: jmx zabbix activemq-artemis


    【解决方案1】:

    我不得不禁用内部连接器,然后将其添加到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"
    

    但是,我知道这样一点都不安全。

    【讨论】:

    • 这不是推荐的方法。您能否详细说明为什么文档中概述的方法不适合您?
    • 我不知道为什么它不起作用。 JConsole 并没有过多地分享失败的原因,Zabbix 也是如此(尽管我无权访问日志)。我所知道的是无法建立连接。
    • 你看过我们在examples/features/standard/jmx上发布的“jmx”示例吗?它演示了这一切是如何工作的。一个程序化客户端通过 JMX 连接到远程代理并执行一些管理方法。
    • 您只需要运行mvn verify 即可构建并运行示例。它将创建一个代理实例,启动代理,并自动运行客户端。示例运行后,您可以进入target/server0 目录并查看所有配置文件。如果您愿意,您可以独立于示例启动代理。你应该可以用 JConsole 连接它没问题(我可以)。
    • 我发现该示例可以运行,因为它在关闭防火墙的机器上运行。问题是防火墙上有两个端口需要打开,其中一个 - RMI 服务器端口 - 事先不知道。
    【解决方案2】:

    正如the documentation 所说,您需要将此添加到您的management.xml

    <connector connector-port="1099"/>
    

    这将在localhost 上公开一个 JMX 连接器,因此如果您希望能够从网络上的另一台机器(即您的 Zabbix 实例)远程访问它,那么您应该执行以下操作:

    <connector connector-port="1099" connector-host="myhost" />
    

    另外,如果您在托管代理的机器上有多个 IP 地址,您需要在 artemis.profileJAVA_ARGS 变量中设置此系统属性:

    -Djava.rmi.server.hostname=myhost
    

    然后使用如下 URL 将您的 Zabbix 实例指向代理:

    service:jmx:rmi:///jndi/rmi://myhost:1099/jmxrmi
    

    您可以通过运行 examples/features/standard/ 目录中 Artemis 附带的 jmx 示例来查看此操作。只需导航到该目录并运行mvn verify。运行该示例将创建一个代理实例,启动代理实例,并自动运行客户端。示例运行后,您可以进入target/server0 目录并查看所有配置文件以将它们与您自己的进行比较。如果您愿意,您也可以独立于示例启动代理(通过从target/server0/bin 目录运行./artemis run)。代理运行后,您应该能够使用 JConsole 连接到它,使用这样的 JMX url 没有问题:

    service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
    

    【讨论】:

    • 您收到任何错误吗?行为是什么?只是说它“不起作用”并没有太大帮助。
    • 我明白了。除了“连接超时”之外没有错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多