如何使用 Prometheus jmx-exporter 监控 JBoss EAP

Posted

技术标签:

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

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

我知道我必须使用jmx_exporter。

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

哪个配置文件?

【问题讨论】:

【参考方案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 上获得:

在主分支上JBoss 7.3 在旧分支上JBoss 6.4 (and 7.1 and 7.2)

【讨论】:

我们正在尝试在域模式下为 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"

【讨论】:

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

以上是关于如何使用 Prometheus jmx-exporter 监控 JBoss EAP的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 grafana 可视化 prometheus 端点指标

如何使用联合从多个 Prometheus 实例(每个使用 instance="localhost:9090")中收集 Prometheus 的指标

prometheus如何调取数据

如何使用 prometheus 查找容器的状态?

如何使用 prometheus 的 AlertManager 设置/触发电子邮件警报

如何使用 Grafana 警报显示 Prometheus 标签