Jboss サーバー用 Java エージェント

エージェントのダウンロード

  1. 以下のリンクからエージェントの tar ファイルをダウンロードします。
curl --header "PRIVATE-TOKEN: $TOKEN " --output agent.zip "https://artifacts-observability.sixthsense.rakuten.com/api/v4/projects/4/packages/generic/sixthsense/{{AGENT_VERSION}}/agent.zip
  1. $JBOSS_HOME フォルダに tar をコピーし、ファイルを解凍します。

エージェントの設定

エージェントの agent.config ファイルで以下のパラメータを更新します。

agent.service_name= APPLICATION_NAME
agent.force_tls= true (For OneCloud Platform use agent.force_tls=${SW_AGENT_FORCE_TLS:false})
collector.backend_service = URL
# (One Cloud) For connectivity to backend using intra public network:
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:133.237.176.44:80}
# (One Cloud) For connectivity to backend using onecloud private network:
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:100.99.116.221:80}
agent.authentication = TOKEN_FROM_UI

JBoss サーバーの設定

Unix 環境

JBoss サーバーの standalone.conf ファイルに以下のエントリを追加します。

JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,org.jboss.logmanager,org.apache.skywalking"

standalone.conf ファイルへのパスは JBOSS_HOME/bin/ です。

JAVA_OPTS="$JAVA_OPTS -javaagent:$JBOSS_HOME/agent/sixthsense-agent.jar"
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.14.Final-redhat-00001.jar"
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/wildfly/common/main/wildfly-common-1.5.1.Final-redhat-00001.jar"

Windows環境

JBoss サーバーのstandalone.conf.bat ファイルに以下のエントリを追加します。standalone.conf.bat ファイルへのパスは JBOSS_HOME/bin/ です。

set JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,org.jboss.logmanager,org.apache.skywalking"
set "JAVA_OPTS=%JAVA_OPTS% -javaagent:%JBOSS_HOME%/sixthsense-agent/sixthsense-agent.jar"
set "JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
set "JAVA_OPTS=%JAVA_OPTS% -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager,org.apache.skywalking -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Dorg.jboss.logging.Logger.pluginClass=org.jboss.logging.logmanager.LoggerPluginImpl"
set "JAVA_OPTS=%JAVA_OPTS% -Dsun.util.logging.disableCallerCheck=true"
set "JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.14.Final-redhat-00001.jar"
set "JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/wildfly/common/main/wildfly-common-1.5.1.Final-redhat-00001.jar"
set "JAVA_OPTS=%JAVA_OPTS% -javaagent:%JBOSS_HOME%/sixthsense-agent/sixthsense-agent.jar"
set "JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
set "JAVA_OPTS=%JAVA_OPTS% -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager,org.apache.skywalking -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Dorg.jboss.logging.Logger.pluginClass=org.jboss.logging.logmanager.LoggerPluginImpl"
set "JAVA_OPTS=%JAVA_OPTS% -Dsun.util.logging.disableCallerCheck=true"
set "JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.14.Final-redhat-00001.jar"
set "JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/wildfly/common/main/wildfly-common-1.5.1.Final-redhat-00001.jar"

デバッグ問題

JBoss または WildFly サーバーが以下のエラーで起動に失敗した場合:

WARNING: Failed to instantiate LoggerFinder provider; Using default.
java.lang.IllegalStateException: The LogManager was not properly installed (you must set the "java.util.logging.manager" system property to "org.jboss.logmanager.LogManager")
at org.jboss.logmanager.Logger.getLogger(Logger.java:57)
at org.jboss.as.server@12.0.1.Final//org.jboss.as.server.Main.main(Main.java:89)
at org.jboss.modules.Module.run(Module.java:352)
at org.jboss.modules.Module.run(Module.java:320)
at org.jboss.modules.Main.main(Main.java:617)

次に、同じ順番で JAVA_OPTS に以下の2つの引数を追加します。

JAVA_OPTS="$JAVA_OPTS -javaagent:$JBOSS_HOME/agent/sixthsense-agent.jar"
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
//Add these two argument in same order
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 -Dsun.util.logging.disableCallerCheck=true"
//
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.14.Final-redhat-00001.jar"
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/wildfly/common/main/wildfly-common-1.5.1.Final-redhat-00001.jar"

JBoss または WildFly サーバーが以下のエラーで起動に失敗した場合、

Could not load Logmanager "org.jboss.logmanager.LogManager"
java.lang.ClassNotFoundException: org.jboss.logmanager.LogManager
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.util.logging.LogManager$1.run(LogManager.java:195)

JBoss と Wildfly の引数を以下に置き換えます。

JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.15.Final.jar"
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/a:$JBOSS_HOME/modules/system/layers/base/org/wildfly/common/main/wildfly-common-1.5.4.Final.jar"