安装配置Java Agent后,根据Java应用运行的Web容器,您还需要在监控主机中配置对应Web容器的JVM运行参数,配置完成后需重启容器。

手动配置Tomcat

在Linux下配置Tomcat

在Windows下配置Tomcat


手动配置JBoss

在Linux下配置JBoss

在Windows下配置JBoss


手动配置Weblogic

在Linux下配置Weblogic

在Windows下配置Weblogic


手动配置Jetty

在Linux下配置Jetty

在Windows下配置Jetty


手动配置WebSphere

通过控制台配置WebSphere

通过配置文件配置WebSphere


手动配置Resin

在Linux下配置Resin

在Windows下配置Resin


手动配置Karaf

在Linux下配置Karaf

在Windows下配置Karaf


手动配置WildFly

在Linux下配置WildFly

在Windows下配置WildFly


手动配置Glassfish

在Linux下配置Glassfish

在Linux系统下配置Glassfish页面

在Windows下配置Glassfish

在Windows系统下配置Glassfish页面


手动配置Websphere-Liberty

在Linux系统下配置Websphere-Liberty

在Windows系统下配置Websphere-Liberty


集成JavaAgent

JavaAgent集成方式说明

JavaAgent集成样例说明

其他说明



手动配置Tomcat

如果Java应用运行在Tomcat容器中,需要在Tomcat中配置JVM运行参数。

在Linux下配置Tomcat

在Tomcat 的catalina.sh文件中搜索到“Execute The Requested Command”,该文件一般位于Tomcat安装目录的bin目录下。

在该行上方添加如下命令,请将命令中的“javaagent目录绝对路径”替换为Java Agent的目录绝对路径。

if [ "$1" = "start" -o "$1" = "run" ]; then
export JAVA_OPTS="$JAVA_OPTS -javaagent:/JavaAgent目录绝对路径/lib/agent.jar=/JavaAgent目录绝对路径"
fi

配置完成后,重新启动Tomcat。

在Windows下配置Tomcat

在Tomcat的catalina.bat文件中搜索到“rem Execute Java”,该文件一般位于Tomcat安装目录的bin目录下。

在该行上方添加如下命令,请将命令中的“javaagent目录名称”替换为Java Agent的目录。

if "%1"=="stop" goto end_javaagent
set "JAVA_OPTS=%JAVA_OPTS% -javaagent: javaagent目录名称\lib\agent.jar"
:end_javaagent

配置完成后,需要重新启动Tomcat。


手动配置JBoss

如果Java应用运行在Jboss容器中,需要在Jboss中配置JVM运行参数。

在Linux下配置JBoss

1.      打开standalone.sh文件,该文件一般位于 Jboss安装目录的 bin 目录下。

提示:部分老版本的Jboss在bin目录下不存在standalone.sh 文件,可尝试寻找run.sh文件。

2.      配置standalone.sh或run.sh文件。

1)      在standalone.sh或run.sh文件中搜索查找“# Display our environment”。

2)      在该行上方添加如下命令,请将命令中的“javaagent目录绝对路径”替换为Java Agent的目录绝对路径。

export JAVA_OPTS="$JAVA_OPTS -javaagent:/javaagent 目录绝对路径/lib/agent.jar=/javaagent 目录绝对路径"

3.      重新启动Jboss。

在Windows下配置JBoss

1.      配置standalone.bat文件。

在standalone.bat文件中搜索到“JBoss Bootstrap Environment”,该文件一般位于Jboss安装目录的bin目录下。

在该行上方添加如下命令,请将命令中的{javaagent目录名称}替换为Java Agent的目录。

set "JAVA_OPTS=%JAVA_OPTS% -javaagent:{javaagent目录名称}\lib\agent.jar -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
set "JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/p:%JBOSS_HOME%\modules\org\apache\log4j\main\log4j-1.2.16.jar -Xbootclasspath/p:%JBOSS_HOME%\modules\org\jboss\logmanager\log4j\main\jboss-logmanager-log4j-1.0.0.GA.jar -Xbootclasspath/p:%JBOSS_HOME%\modules\org\jboss\logmanager\main\jboss-logmanager-1.2.2.GA.jar

2.      配置standalone.conf.bat文件。

在standalone.conf.bat文件中搜索“-Djboss.modules.system.pkgs=”,该文件一般位于Jboss安装目录的bin目录下。

将 “com.cloudwise.agent.core.intercept”赋值给-Djboss.modules.system.pkgs即可。

添加界面如下图所示:

1658126560556978.png

3.      配置完成后,重新启动Jboss。


手动配置Weblogic

如果Java应用运行在Weblogic容器中,需要在Weblogic中配置JVM运行参数。

在Linux下配置Weblogic

1.      配置weblogic.policy文件

在weblogic.policy文件中搜索到“Web App default permissions”,该文件在Weblogic安装目录的wlserver/server/lib目录下。

在该行上方添加如下命令,请将命令中的“javaagent目录绝对路径”替换为Java Agent的目录绝对路径。

grant codeBase "file:/javaagent目录绝对路径/-"
{
permission java.security.AllPermission;
};

2.      配置startWebLogic.sh文件

在startWebLogic.sh文件中搜索到“if [ "${WLS_REDIRECT_LOG}" = "" ] ; then”,该文件在Weblogic安装目录的user_projects/domains/{domain_name}/bin目录下。其中,{domain_name}代表某个域。

在该行上方添加如下命令,请将命令中的“javaagent目录绝对路径”替换为Java Agent的目录绝对路径。

export JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:/JavaAgent目录绝对路径/lib/agent.jar=/JavaAgent目录绝对路径"

3.      配置完成后,重启weblogic。

在Windows下配置Weblogic

1.      配置weblogic.policy文件。

在weblogic.policy文件中搜索到“Web App default permissions”,该文件在Weblogic安装目录的wlserver/server/lib目录下。

在该行上方添加如下命令,请将命令中的”javaagent目录名称”替换为Java Agent的目录。

grant codeBase "file:/javaagent目录名称/-" 
{
permission java.security.AllPermission;
};

2.      配置startWebLogic.cmd文件。

在startWebLogic. cmd文件中搜索到“if "%WLS_REDIRECT_LOG%"==""”,该文件在Weblogic安装目录的user_projects\domains\{domain_name}\bin目录下。其中,{domain_name}代表某个域。

在该行上方添加如下命令,请将命令中的”javaagent目录名称”替换为Java Agent的目录。

set "JAVA_OPTIONS=%JAVA_OPTIONS% -javaagent: javaagent目录名称\lib\agent.jar "

3.      配置完成后,重启weblogic。


手动配置Jetty

如果Java应用运行在Jetty容器中,需要在Jetty中配置JVM运行参数。

在Linux下配置Jetty

在jetty.sh文件中搜索到“Add jetty properties to Java VM options”,该文件一般位于Jetty安装目录的bin目录下。

1.      在注释下方的JAVA_OPTIONS的下方添加如下命令,请将命令中的“javaagent目录绝对路径”替换为Java Agent的目录绝对路径。

JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:/JavaAgent目录绝对路径/lib/agent.jar=/JavaAgent目录绝对路径"

2.      配置完成后,重新启动Jetty。

在Windows下配置Jetty

在Windows下可以采用以下两种方式来配置Jetty:

方式一:通过新建脚本配置

1.      在Jetty根目录下新建 jettyStart.bat脚本文件,如下图所示。

image015.png

2.      添加脚本。

n  如果配置了JAVA_HOME环境变量,在脚本中添加如下命令,请将命令中的”javaagent目录名称”替换为Java Agent的目录。

set JAVA=%JAVA_HOME%\bin\java
set JAVA_OPTS=-javaagent:javaagent目录名称\lib\agent.jar
"%JAVA%" %JAVA_OPTS% -jar start.jar

n  如果没有配置JAVA_HOME环境变量,在脚本中添加如下命令,请将命令中的”javaagent目录名称”替换为Java Agent的目录。

set JAVA_HOME=D:\app\Java8_64\jdk1.8.0_60
set JAVA=%JAVA_HOME%\bin\java
set JAVA_OPTS=-javaagent:javaagent目录名称\lib\agent.jar
"%JAVA%" %JAVA_OPTS% -jar start.jar

3.      配置完成,使用 jettyStart.bat 脚本重新启动Jetty即可。

方式二:通过start.ini文件配置

如果Jetty的版本为Jetty7/8/9且作为Windows启动服务时,可配置start.ini文件,该文件一般位于Jetty的根目录下。

1.      在start.ini文件中搜索到“-XX:CMSInitiatingOccupancyFraction=80”,在该行上方添加如下命令,请将命令中的{javaagent目录名称}替换为Java Agent的目录。

-javaagent:{javaagent目录名称}\lib\agent.jar

2.      配置完成后,重新启动Jetty。


手动配置WebSphere

如果Java应用运行在WebSphere容器中,需要在WebSphere中配置JVM运行参数。

您可以在控制台中配置WebSphere,也可以通过修改配置文件server.xml来配置。

通过控制台配置WebSphere

1.      启动服务后,以管理员身份登录到 WebSphere的控制台。

2.      在左侧导航栏中选择“服务器→服务器类型→WebSphere Application Server”,在右侧的应用程序服务器列表中选择待监控server,如下图所示。

1658130750546495.png

3.      在应用程序服务器的配置页面,选择“Java和进程管理→进程定义”,如下图所示。

1658130724121293.png

4.      在进程定义的配置页面,选择其他属性中的“Java虚拟机”,如下图所示。

image022.png

5.      在Java虚拟机的配置页面,找到“通用JVM参数”配置项,在对应的编辑框中输入以下命令(请根据操作系统选择),请在Linux系统将命令中的“javaagent目录绝对路径”替换为Java Agent的目录绝对路径,在Windows系统将命令中的“javaagent目录名称”替换为Java Agent的目录。

Linux系统中输入以下命令:

-javaagent:/JavaAgent目录绝对路径/lib/agent.jar=/JavaAgent目录绝对路径

Windows系统中输入以下命令:

-javaagent:javaagent目录名称\lib\agent.jar

6.      配置完成后,需重新启动WebSphere。

通过配置文件配置WebSphere
  • 在Linux下配置WebSphere

1.      参考以下目录找到WebSphere待监控服务对应的server.xml配置文件,请将${WebSphere_home}替换为WebSphere的安装目录,将<*-name> 替换为相应的服务器、节点或服务名称:

${WebSphere_home}\profiles\<appsrv-name>\config\cells\<cell-name>\nodes\<node-name>\servers\<server-name>\server.xml

image023.png

2.      在server.xml文件中搜索到jvmentries配置项,在“genericJvmArguments“中添加以下命令,请将命令中的“javaagent目录绝对路径”替换为Java Agent的目录绝对路径。

-javaagent:/JavaAgent 目录绝对路径/lib/agent.jar=/JavaAgent 目录绝对路径

3.      配置完成后,需重新启动WebSphere。

  • 在Windows下配置WebSphere

1.      参考以下目录找到WebSphere待监控服务对应的server.xml配置文件,请将${WebSphere_home}替换为WebSphere的安装目录,将<*-name> 替换为相应的服务器、节点或服务名称:

${WebSphere_home}\profiles\<appsrv-name>\config\cells\<cell-name>\nodes\<node-name>\servers\<server-name>\server.xml

2.      在server.xml文件中搜索到jvmentries配置项,在“genericJvmArguments“中添加以下命令,在请将命令中的{javaagent目录名称}替换为Java Agent的目录。

-javaagent:{javaagent目录名称}\lib\agent.jar

3.      配置完成后,需重新启动WebSphere。


手动配置Resin

如果Java应用运行在Resin容器中,需要在Resin中配置JVM运行参数。


在Linux下配置Resin

您可以通过以下两种方式来配置Resin,不同版本的Resin配置方式也有所不同。

配置cluster-default.xml或resin.conf文件

Resin版本为4.x时,需修改cluster-default.xml 文件;Resin版本为3.x时,需修改resin.conf文件。文件一般位于Resin安装目录的conf目录下。

1.      在文件中搜索到“<server-default>”配置项,在该配置项的开头添加如下命令,请将命令中的“javaagent目录绝对路径”替换为Java Agent的目录绝对路径。

<jvm-arg>-javaagent:/javaagent 目录绝对路径/lib/agent.jar=/javaagent 目录绝对路径</jvm-arg>

2.      配置完成后,需重新启动Resin。

修改resin.properties文件

Resin版本为4.x时,还可以修改resin.properties文件,该文件一般位于Resin安装目录的conf目录下。

1.      在文件中搜索到“jvm_args”,如果该行已被注释掉,请首先删除该行前面的注释符。

2.      然后,在该行的最后添加空格及如下命令,请将命令中的“”替换为Java Agent的目录绝对路径。

-javaagent://lib/agent.jar=/

3.      配置完成后,需重新启动Resin。


在Windows下配置Resin

您可以通过以下两种方式来配置Resin,不同版本的Resin配置方式也有所不同。

修改cluster-default.xml或resin.conf文件

Resin版本为4.x时,需修改cluster-default.xml 文件;Resin版本为3.x时,需修改resin.conf文件。文件一般位于Resin安装目录的conf目录下。

1.      在文件中搜索到“<server-default>”,在该配置项的开头添加以下命令,请将命令中的javaagent目录名称替换为Java Agent的目录。

<jvm-arg>-javaagent:javaagent目录名称\lib\agent.jar</jvm-arg>

2.      配置完成后,需重新启动Resin。

修改resin.properties文件

Resin版本为4.x时,还可以修改resin.properties文件,该文件一般位于Resin安装目录的conf目录下。

1.      在文件中搜索到“jvm_args”,如果该行已被注释掉,请首先删除该行前面的注释符。

2.      然后,在该行的最后添加空格及以下命令,,请将命令中的{javaagent目录名称}替换为Java Agent的目录。

-javaagent:{javaagent目录名称}\lib\agent.jar

3.      配置完成后,需重新启动Resin。


手动配置Karaf

如果Java应用运行在Karaf容器中,需要在Karaf中配置JVM运行参数。

在Linux下配置Karaf

配置JVM运行参数前,还需要进行安全配置。

1.      安全配置。

1)      在config.properties文件中搜索找到“org.osgi.framework.bootdelegation”,该文件一般位于Karaf安装目录的etc目录下。

2)      在该配置项最后添加“,com.cloudwise.*”,或者添加”,\“后换行后再输入“com.cloudwise.*”,如:

org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,sun.*,com.sun.*,javax.transaction,javax.transaction.*,javax.xml.crypto,javax.xml.crypto.*,org.apache.xerces.jaxp.datatype,org.apache.xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.validation,org.apache.xerces.dom, com.cloudwise.*

添加界面如下图所示:

image024.png

2.      启动配置。

1)      在karaf文件中搜索到cd "$KARAF_BASE",该文件一般位于Karaf安装目录的bin目录下。

2)      在该行下方,最终执行 JAVA 命令之前的位置添加如下命令,请将命令中的“”替换为Java Agent的目录绝对路径。

JAVA_OPTS="$JAVA_OPTS -javaagent://lib/agent.jar=/"

3.      重启Karaf。

在Windows下配置Karaf

配置JVM运行参数前,还需要进行安全配置。

1.      安全配置

1)      在config.properties文件中搜索到“org.osgi.framework.bootdelegation”,该文件一般位于Karaf安装目录的etc目录下。

2)      在该配置项最后添加“,com.cloudwise.*”,或者添加”,\“后换行后再输入“com.cloudwise.*”,如:

org.osgi.framework.bootdelegation=org.apache.karaf.jaas.boot,sun.*,com.sun.*,javax.transaction,javax.transaction.*,javax.xml.crypto,javax.xml.crypto.*,org.apache.xerces.jaxp.datatype,org.apache.xerces.stax,org.apache.xerces.parsers,org.apache.xerces.jaxp,org.apache.xerces.jaxp.validation,org.apache.xerces.dom, \
com.cloudwise.*

添加界面如下图所示:

1658130514327710.png

2.      启动配置

1)      在karaf.bat文件中搜索到cd "%KARAF_BASE%",该文件一般位于Karaf安装目录的bin目录下。

2)      在该行上方,最终执行 JAVA 命令之前添加如下命令,请将命令中的“javaagent目录名称”替换为Java Agent的目录。

set "JAVA_OPTS=%JAVA_OPTS% -javaagent: javaagent目录名称\lib\agent.jar"

3.      重启Karaf


手动配置WildFly

如果Java应用运行在WildFly容器中,需要在WildFly中配置JVM运行参数。

在Linux下配置WildFly

1.      打开standalone.sh文件,该文件一般位于wildfly 安装目录的 bin 目录下。

提示:若bin目录下不存在standalone.sh 文件,可尝试寻找run.sh文件。

2.      配置standalone.sh或run.sh文件。

1)      在standalone.sh或run.sh文件中搜索查找“# Display our environment”。

2)      在该行上方添加如下命令,请将命令中的“”替换为Java Agent的目录绝对路径。

JAVA_OPTS="$JAVA_OPTS -javaagent:/JavaAgent 目录绝对路径/lib/agent.jar=/JavaAgent 目录绝对路径"

3.      重新启动Wildfly。

在Windows下配置WildFly

下面以standalone启动方式,wildfly-8.2.1.Final/bin/standalone.conf.bat为例进行说明。

1.      配置日志相关jar。

在wildfly-8.2.1.Final/bin/standalone.conf.bat中配置以下信息:
Set “Java_OPTS=%Java_OPTS% -Djboss.moldules.system.pkgs=org.jboss.byteman,org.jboss.logmanager,com.cloudwise.agent”Set “Java_OPTS=%Java_OPTS% -Djava.util.logging.manager=org.jboss.logmanager.LogManager”Set “Java_OPTS=%Java_OPTS% -javaagent:C:\agent\JavaAgent_2.4.1\lob\agent.jar”Set “Java_OPTS=%Java_OPTS% -Xbootclasspath/p:D:\wildfly-8.2.1.Final\modules\system\layers\base\org\jboss\logging\jul-to-slf4j-stub\main\jul-to-slf4j-stub-1.0.1.Final.jar”-Xbootclasspath/p:D:\wildfly-8.2.1.Final\modules\system\layers\base\org\jboss\logging\main\jboss-logging-3.1.4.GA.jar -Xbootclasspath/p:D:\wildfly-8.2.1.Final\modules\system\layers\base\org\jboss\log4j\logmanager\main\log4j-jboss-logmanager-1.1.0.Final.jar -Xbootclasspath/p:D:\wildfly-8.2.1.Final\modules\system\layers\base\org\jboss\logmanager\main\jboss-logmanager-1.5.2.Final.jar”

注意:不同版本的wildfly需要配置的jar版本可能不同。

2.      配置JAVA_OPTS支持参数

-Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager,com.cloudwise.agent

3.      配置日志管理器

-Djava.util.logging.manager=org.jboss.logmanager.LogManager

4.      配置Java Agent

请将命令中的”javaagent目录名称”替换为Java Agent的目录。

-javaagent:\javaagent目录名称\lib\agent.jar

手动配置Glassfish

在Linux下配置Glassfish

1.     在Glassfish安装目录的/glassfish5/glassfish/domains/{domain}/config目录找到domain.xml文件,在<config name="server-config">标签下的<java-config>标签添加如下命令:

<jvm-options>-Dorg.osgi.framework.bootdelegation=com.cloudwise.*</jvm-options>
<jvm-options>-javaagent:/JavaAgent目录绝对路径 /lib/agent.jar=/JavaAgent目录绝对路径</jvm-options>

2.     配置完成后,重新启动Glassfish。

在Linux系统下配置Glassfish页面

1.     从Configurations -> server-config -> JVM Settings -> JVM Options 进入,添加如下两项配置:

-Dorg.osgi.framework.bootdelegation=com.cloudwise.*
-javaagent: /JavaAgent目录绝对路径/lib/agent.jar=/JavaAgent目录绝对路径

image026.png

2.     配置完成后,重新启动Glassfish。

在Windows下配置Glassfish

1.     在Glassfish安装目录的\glassfish5\glassfish\domains\{domain}\config目录找到domain.xml文件,在<config name="server-config">标签下的<java-config>标签添加如下命令:

<jvm-options>-Dorg.osgi.framework.bootdelegation=com.cloudwise.*</jvm-options>
<jvm-options>-javaagent: \JavaAgent目录绝对路径\lib\agent.jar=\JavaAgent目录绝对路径</jvm-options>

2.     配置完成后,重新启动Glassfish。

在Windows系统下配置Glassfish页面

1.     从Configurations -> server-config -> JVM Settings -> JVM Options 进入,添加如下两项配置:

-Dorg.osgi.framework.bootdelegation=com.cloudwise.*
-javaagent: \JavaAgent目录绝对路径\lib\agent.jar=\JavaAgent目录绝对路径

image027.png

2.     配置完成后,重新启动Glassfish。


手动配置Websphere-Liberty

在Linux系统下配置Websphere-Liberty

1.     在Websphere-liberty安装目录的/usr/servers/defaultServer/目录找到jvm.options文件,如果没有找到该文件自行创建jvm.options文件,在该文件中添加如下两行配置:

-Dorg.osgi.framework.bootdelegation=com.cloudwise.*
-javaagent:/JavaAgent目录绝对路径/lib/agent.jar=/JavaAgent目录绝对路径

2.     配置完成后,重新启动Websphere-Liberty。

在Windows系统下配置Websphere-Liberty

1.     在Websphere-liberty安装目录的\usr\servers\defaultServer\目录找到jvm.options文件,如果没有找到该文件自行创建jvm.options文件,在该文件中添加如下两行配置:

-Dorg.osgi.framework.bootdelegation=com.cloudwise.*
-javaagent:\JavaAgent目录绝对路径\lib\agent.jar=\JavaAgent目录绝对路径

2.     配置完成后,重新启动Websphere-Liberty。


集成JavaAgent

JavaAgent集成方式说明

SpringBoot、SpringCloud应用,通常以jar包形式发布。

该场景下集成JavaAgent,将 "-javaagent:/javaagent目录名称/lib/agent.jar=/javaagent目录名称"配置,添加在 java命令的 -jar 之前即可。

JavaAgent集成样例说明

n  样例1:

原始启动命令: java -jar 应用.jar

集成JavaAgent:

java -javaagent:/javaagent目录名称/lib/agent.jar=/javaagent目录名称 -jar 应用.jar

n  样例2:

原始启动命令: java {其他JVM启动参数配置} -jar 应用.jar {其他Spring启动参数配置}
例如:

java -Xmx1024m -Xms512m -DsomeArg=argValue -jar 应用.jar --server.port=8080

集成JavaAgent: java {其他JVM启动参数配置} -javaagent:/javaagent目录名称/lib/agent.jar=/javaagent目录名称 -jar 应用.jar

例如:

java -Xmx1024m -Xms512m -DsomeArg=argValue -javaagent:/javaagent目录名称/lib/agent.jar=/javaagent目录名称 -jar 应用.jar --server.port=8080

其他说明

启动jar应用的相关java命令,实际场景中,通常会预编写在如sh等形式的脚本文件当中,此时需要根据实际情况,找到sh脚本中对应位置进行修改。