jboss Wildfly 17在同一服务器上启用JMX远程会导致日志管理器错误

b5lpy0ml  于 2022-11-08  发布在  其他
关注(0)|答案(3)|浏览(191)

我希望启用JMX,以允许datadog监视我们的java JBoss wildfly系统,但总是遇到运行时错误
我已经使用以下内容设置了standalone.xml

<subsystem xmlns="urn:jboss:domain:jmx:1.3">              
            <expose-resolved-model/>                     
            <expose-expression-model/>                           
            <remoting-connector use-management-endpoint="true"/>                       
</subsystem>

还有

<interfaces>
    <interface name="management">
    <inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>

以及

<socket-binding name="management-http" interface="management" port="${jboss.management.http.port:9990}"/>

然后在我的www.example.com中startup.sh我添加了

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"

但这给了我
java.lang.IllegalStateException:日志管理器安装不正确(必须将“java.util.logging.manager”系统属性设置为“org.jboss.logmanage r.LogManager”)
这似乎是相当普遍的,如果我看看这里和谷歌,但似乎有不同的解决方案取决于版本的wildfly。
我想我需要在standalone.conf的开头执行类似Set的操作

JBOSS_MODULES_SYSTEM_PKGS="org.jboss.logmanager"

然后呢

JBOSS_HOME="/opt/wildfly"
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Xbootclasspath/p:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.11.Final.jar -Xbootclasspath/p:$JBOSS_HOME/modules/system/layers/base/org/jboss/log4j/logmanager/main/log4j-jboss-logmanager-1.2.0.Final.jar"

到最后。
但我仍然收到错误“无法加载日志管理器“org.jboss.logmanager.LogManager””
如有任何建议,我们将不胜感激。

5anewei6

5anewei61#

当我将Wildfly服务器版本从10.1升级到24.0.0时,我遇到了同样的问题,我使用以下更改解决了它。
以下JAVA_OPTS变更需要添加到standalone.conf文件的末尾

JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/wildfly/common/main/wildfly-common-1.5.4.Final.jar -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.18.Final.jar  -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/jboss/log4j/logmanager/main/log4j-jboss-logmanager-1.2.0.Final.jar"

# Enable jmx remote management

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=4447 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false  -Dsun.util.logging.disableCallerCheck=true  -Djava.rmi.server.hostname=localhost -Dcom.sun.management.jmxremote.local.only=false"

**注意:**应使用-Xbootclasspath/a将wildfly-common-.jar、jboss-logmanager-.jar、log4j-jboss-logmanager-.jar依赖项添加到类路径中

tjjdgumg

tjjdgumg2#

使用bin中提供的jconsole.sh脚本,不要尝试手动构建类路径。您还需要使用自定义服务url。有关详细信息,请参阅文档

gab6jxml

gab6jxml3#

在www.example.com中的变更standalone.sh:#!/bin/sh变更为#!/bin/bash
然后
在standalone.conf中:

JBOSS_MODULES_SYSTEM_PKGS="org.jboss.logmanager,jdk.nashorn.api,com.sun.crypto.provider,$JBOSS_MODULES_SYSTEM_PKGS"

...

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

...

BOOT_CP=()
BOOT_CP=("$(find $JBOSS_HOME/modules -type f -name "jboss-logmanager-*.jar")")
BOOT_CP+=("$(find $JBOSS_HOME/modules -type f -name "wildfly-common*.jar")")
for f in $(find $JBOSS_HOME/modules -type f -name "javax.json-*.jar"); do
    BOOT_CP+=("$f")
done
x="-Xbootclasspath/a"
for p in "${BOOT_CP[@]}"; do
    x+=":$p"
done
JAVA_OPTS="-Djava.util.logging.manager=org.jboss.logmanager.LogManager -Dsun.util.logging.disableCallerCheck=true $x $JAVA_OPTS"

工作正常,但我还有一些问题...

相关问题