【问题标题】:How to monitor JBoss EAP with Prometheus jmx-exporter如何使用 Prometheus jmx-exporter 监控 JBoss EAP
【发布时间】:2020-11-14 08:59:38
【问题描述】:

我想用 Prometheus/Grafana(以及一些 Wildfly)监控一些 JBoss EAP 7 服务器。

我知道我必须使用jmx_exporter

我应该将它用作嵌入式(代理)还是边车(http)?

哪个配置文件?

【问题讨论】:

    标签: monitoring prometheus jmx jmx-exporter prometheus-java


    【解决方案1】:

    推荐使用嵌入在Java JVM 虚拟机中的jmx-exporter(使用-javaagent)。这更容易、更稳健,并提供更好的洞察力。

    配置文件取决于版本(JBoss 使用 undertow...与 JBoss 6 收集的 mBean 不同)。

    jmx-exporter 项目提供 WildFly 10 example_configs/wildfly-10.yaml 的示例配置文件。

    但是,如果您使用“JBoss EAP for Openshift”容器镜像,jmx-exporter 代理已经嵌入到容器中(设置variables:AB_PROMETHEUS_ENABLE=true,有时也设置JAVA_OPTS_APPEND=-Dwildfly.statistics-enabled=true

    如果您不使用 Red Hat 的容器镜像,您仍然可以使用相同的 jmx-exporter 配置文件。这些文件 (jmx-exporter-config.yaml) 是开源的,可在 github 上获得:

    【讨论】:

    • 我们正在尝试在域模式下为 JBoss7.3 安装 jmx_exporter,但它失败并出现以下错误 [Server:server-two] java.lang.NoClassDefFoundError: org/wildfly/common/net/ org.jboss.logmanager.ExtLogRecord. 处的主机名 [Server:server-two]
    • @NageswaraRao 这是一篇博客文章,解释了如何在域模式下为 WF 设置 jmx-exporter。也许有帮助:WF domain mode
    【解决方案2】:

    我能够使用此配置抓取指标

    将以下配置添加到您的启动脚本或standalone.conf

    JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Dorg.jboss.logging.Logger.pluginClass=org.jboss.logging.logmanager.LoggerPluginImpl"
    JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.0.3.Final-redhat-1.jar"
    JAVA_OPTS="$JAVA_OPTS -javaagent:/path/to/exporter/jmx_exporter.jar=10001:/path/to/config/config.yaml"
    

    【讨论】:

    • 谢谢!经过一整天的研究,这对我有用!