簡體   English   中英

在同一台服務器上啟用 JMX 遠程的 Wildfly 17 會出現日志管理器錯誤

[英]Wildfly 17 enabling JMX remote on the same server gives logmanager errors

我希望啟用 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}"/>

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

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

但這給了我

java.lang.IllegalStateException:LogManager 未正確安裝(您必須將“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"

在最后。

但我仍然收到錯誤“無法加載 Logmanager“org.jboss.logmanager.LogManager””

任何意見,將不勝感激。

在 bin 中使用提供的 jconsole.sh 腳本,不要嘗試手動構建類路徑。 您還需要使用自定義服務 url。 有關詳細信息,請參閱文檔

當我將 Wildfly 服務器版本從 10.1 升級到 24.0.0 時遇到了同樣的問題,我使用以下更改解決了它。

需要在standalone.conf文件的末尾添加以下JAVA_OPTS更改

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"

注意: wildfly-common-.jar,jboss-logmanager-.jar,log4j-jboss-logmanager-.jar 依賴項應該添加到類路徑-Xbootclasspath/a

在 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"

這是工作,但我仍然有一些問題......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM