安装与配置Java Agent

安装Java Agent

在Docker中安装Java Agent

配置Java Agent

配置Web容器

兼容性说明



安装Java Agent

要监控Java应用和Java虚拟机,在透视宝云端的“配置→应用”页面中选择“Java”语言,按照页面中的引导安装Java Agent,详细说明如下。

获取授权编号

授权编号是透视宝用户身份识别的License Key,每个用户对应一个唯一的授权编号,在后续配置中需要使用。

安装SendProxy(可选)

SendProxy是主机与透视宝平台通讯的插件,如果您的主机需要与透视宝平台直接通讯且没有安装过SendProxy,请下载并安装该插件,详细说明请参考“安装SendProxy”。

下载Java Agent安装包

Java Agent支持Linux、Windows、Aix操作系统,支持JDK1.5及以上版本,但JDK1.5需下载单独的安装包。

选择JDK版本后点击<下载Java Agent(版本)>按钮或复制Wget链接,下载最新版本的Java Agent安装包。

提示:Java Agent(V2.0.17)及以上版本默认支持批量发送,使用(V2.0.17)以下版本的客户更新时需要先更新至Sendproxy_2.2.0或改为单次发送。

在Linux&Aix系统下安装Java Agent

1、创建cloudwise文件夹(如/var/cloudwise)并确保拥有读写权限,例如:

mkdir -p /var/cloudwise

2、解压缩安装包到cloudwise目录,例如:

unzip JavaAgent_2.0.0.zip -d /var/cloudwise

3、进入Java Agent目录(如JavaAgent_2.0.0),配置License Key,例如:

java -jar javaagent-bootstrap.jar -l 'J45Engw88Ner03Dg/So6MhERjkvt8hwk72kuJ7ewFzTv9vyfnhxvRg!!!!'

4、配置SendProxy地址(可选)

Java Agent默认设置由本机SendProxy发送数据,如果需要从其他主机发送数据,则需要配置可用的SendProxy地址,例如:

java -jar javaagent-bootstrap.jar -s 'http://10.0.3.46:26789'

5、执行如下命令启动Java Agent:

java -jar javaagent-bootstrap.jar start

6、配置Web容器

安装Java Agent后,您需要根据应用的服务器配置对应的Web容器,详细说明请参考“配置Web容器”。

注意:配置完成后,请重启对应的Web容器。

7、监控Java虚拟机

安装JavaAgent并配置Web容器后,可以在透视宝的“主机→JVM”页面查看JVM运行状态。

要深入监控JVM,请参考“配置Java Agent”配置相关参数。

8、监控Docker

安装JavaAgent在docker中,需要下载AgentService,才能更好的展示Docker中的应用,请参考“在Docker中安装Java Agent”按流程安装。

安装配置完成后,大致两分钟后您就可以在“应用”模块中查看数据。 注:从来没人访问过的应用不会出现在应用清单中。

在Windows系统下安装Java Agent

1、解压缩安装包。

2、进入Java Agent目录(如JavaAgent_2.0.0),配置License Key,例如:

java -jar javaagent-bootstrap.jar -l J45Engw88Ner03Dg/So6MhERjkvt8hwk72kuJ7ewFzTv9vyfnhxvRg!!!!

3、配置SendProxy地址(可选)

Java Agent默认设置由本机SendProxy发送数据,如果需要从其他主机发送数据,则需要配置可用的SendProxy地址,例如:

java -jar javaagent-bootstrap.jar -s http://10.0.3.46:26789

4、执行如下命令启动Java Agent:

java -jar javaagent-bootstrap.jar start

5、配置Web容器

安装Java Agent后,您需要根据应用的服务器配置对应的Web容器,详细说明请参考“配置Web容器”。

6、监控Java虚拟机

安装JavaAgent并配置Web容器后,可以在透视宝的“主机→JVM”页面查看JVM运行状态。

要深入监控JVM,请参考“配置Java Agent”配置相关参数。

安装配置完成后,大致两分钟后您就可以在“应用”模块中查看数据。 注:从来没人访问过的应用不会出现在应用清单中。


在Docker中安装Java Agent

要监控Docker中的Java应用,需要安装Java Agent、AgentService和SendProxy,请按照下述步骤进行安装。

版本说明:本安装说明仅针对JavaAgent_2.1.2及AgentService_1.0.2以上(含)版本,使用老版本探针请及时升级,或沿用以往部署安装方式。

注意:该安装方法仅适用于使用Dockerfile构建镜像的场景,同时请确保Docker镜像中安装有curl命令。

1、首先在透视宝云端的“配置→应用”页面下载Java Agent、Agent Service和SendProxy安装包。

2、将下载的压缩包拷贝到宿主机系统的某个目录下(如/var/cloudwise,后续相关步骤均以此目录为例)并解压,例如:

unzip AgentService.zip -d /var/cloudwise
unzip JavaAgent.zip –d /var/cloudwise
unzip SendProxy.zip –d /var/cloudwise

3、通过基础镜像启动容器,复制容器中的catalina.sh文件到/var/cloudwise目录下,并在复制后的文件中添加如下代码,请将命令中的{javaagent目录名称}替换为Java Agent在docker中的目录,例如/var/cloudwise

if [ "$1" = "start" -o "$1" = "run" ]; then
export JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:{javaagent目录名称}/conf/ -javaagent:{javaagent目录名称}/lib/CAgent-1.0.0.jar={javaagent目录名称}/"
fi

4、常规部署如下:

将AgentService目录中的startup.sh_javaagent_demo文件(不包含#!/bin/bash)内容拷贝到catalina.sh文件中内容的最上方,startup.sh_javaagent_demo文件(不包含#!/bin/bash)内容如下(注意修改JavaAgent所在目录路径):

hosts=`grep $(hostname) /etc/hosts | awk -F. '{print $1"."$2"."$3"."1}' | head -1`
#export hosts=${hosts}
cw_hostip=`curl http://${hosts}:27799/smartagent/getHostIP 2>/dev/null`
if [ ! -n "${cw_hostip}" ] ||  [ "${cw_hostip}x" = "x" ];then
        echo "is null"
        hosts=`grep $(hostname) /etc/hosts | awk -F. '{print $1"."$2"."42"."1}' | head -1`
        cw_hostip=`curl http://${hosts}:27799/smartagent/getHostIP 2>/dev/null`
else
        echo "not is null"
fi
export hosts=${hosts}
export cwhostip=${cw_hostip}
echo ${cwhostip}
export cwapptype=2
hostKeyApi="http://${hosts}:27799/smartagent/getHostKey"
hostKeySa=`curl $hostKeyApi 2>/dev/null`
sendProxy="http://${hosts}:26789"
export hostKey=${hostKeySa}
export sendProxy=${sendProxy}
java -jar /var/cloudwise/JavaAgent_2.1.1/javaagent-bootstrap.jar startindocker
#the '/var/cloudwise/JavaAgent_2.1.1' : Directory for the JavaAgent in the container

其他部署环境:

run jar部署如下:

docker环境jar作为主进程支撑docker容器时,把相关的容器启动参数加入jar的启动参数中; 在执行jar之前调用startup.sh脚本文件,如:

主进程脚本:

#/bin/bash
bash /var/cloudwise/startup.sh
java
-Xbootclasspath/p:{javaagent目录名称}/conf/ \
-javaagent:{javaagent目录名称}/lib/CAgent-1.0.0.jar={javaagent目录名称}/ \
–jar
xxx.jar

startup.sh脚本:

#/bin/bash
hosts=`grep $(hostname) /etc/hosts | awk -F. '{print $1"."$2"."$3"."1}' | head -1`
#export hosts=${hosts}
cw_hostip=`curl http://${hosts}:27799/smartagent/getHostIP 2>/dev/null`
if [ ! -n "${cw_hostip}" ] ||  [ "${cw_hostip}x" = "x" ];then
        echo "is null"
        hosts=`grep $(hostname) /etc/hosts | awk -F. '{print $1"."$2"."42"."1}' | head -1`
        cw_hostip=`curl http://${hosts}:27799/smartagent/getHostIP 2>/dev/null`
else
        echo "not is null"
fi
export hosts=${hosts}
export cwhostip=${cw_hostip}
echo ${cwhostip}
export cwapptype=2
hostKeyApi="http://${hosts}:27799/smartagent/getHostKey"
hostKeySa=`curl $hostKeyApi 2>/dev/null`
sendProxy="http://${hosts}:26789"
export hostKey=${hostKeySa}
export sendProxy=${sendProxy}
java -jar /var/cloudwise/JavaAgent_2.1.1/javaagent-bootstrap.jar startindocker
#the '/var/cloudwise/JavaAgent_2.1.1' : Directory for the JavaAgent in the container

5、将AgentService中的Dockerfile_javaagent_demo移动到上一层,并修改名称为Dockerfile,修改命令如下:

cp Dockerfile_javaagent_demo ../Dockerfile

6、修改Dockerfile配置,将JavaAgent文件加入到docker镜像(注意:按截图中的注释修改文件内容)

27.png

FROM tomcat:7-jre8
#tomcat:7-jre8为新镜像的基础镜像
ADD ./JavaAgent_2.0.14/ /var/cloudwise/JavaAgent_2.0.14
#./ 为Dockerfile所在目录的相对路径, /var/cloudwise/ 为镜像的绝对路径
ADD ./catalina.sh /usr/local/tomcat/bin/catalina.sh
#./catalina.sh 为Dockerfile所在目录的相对路径,
#/usr/local/tomcat/bin/catalina.sh为镜像下catalina.sh文件的绝对路径

7、在Dockerfile所在目录(如/data)下运行如下命令,创建新镜像(注意最后有一个点)

docker build -t <new_image> .

8、进入/var/cloudwise/SendProxy目录,启动SendProxy

./SendProxy.sh restart

9、进入/var/cloudwise/AgentService目录,配置License Key

./init_licensekey.sh -c ‘J45Engw88Nc/fR1k7e53nvDuCBhOY1YDQll8UqotxYgsR5VnW1eKWg!!!!’

10、进入/var/cloudwise/AgentService目录,启动AgentService

./AgentService.sh start

11、通过生成的新镜像启动容器

(将本地的8080端口映射到容器的8080端口,实现外部访问容器)

docker run -dit -p 8080:8080 --name test_java_agent  <new_image>



 配置Java Agent

安装Java Agent后,您可以在Java Agent conf目录中的agent.properties文件中对JavaAgent进行配置,主要配置项及相关说明见下表,其中动态生效项在修改后不需要重启应用,非动态生效项在修改后需重启应用。


配置项

默认值

动态生效

配置描述

HostKey

MyHostKey

探针身份识别字符串,探针在执行start命令成功后该值会替换为一长字符串

js


是否开启web页面用户体验监控,可配置tomcat7,tomcat8,weblogic12,视运行容器而定,开启后将自动注入JS代码至web页面源码

SendProxy

http://127.0.0.1:26789

数据发送代理地址

jsEnvAdd

portal.toushibao.com/rum/EndUserAgent.js?v=1.2.0

js配置项非空时生效,即自动注入js代码中js文件的地址,私有化部署透视宝平台时该值需修改

agent.log.level

ERROR

探针日志级别

http.trace.exclude

~.*js;~.*jpg;~.*css;~.*png;~.*jpeg;~.*gif

配置不监控哪些url性能,例如设置为“~.*js;~.*css;~.*jpg”,则排除所有以js、css、jpg结尾的url,不获取以js、css、jpg结尾的url的数据

sqlParam

false

是否获取SQL中参数信息

param

true

是否获取request中的所有参数

packg.include


配置应用请求执行过程中获取哪些代码的详细耗时,需要设置Java程序的包名,例如"com.aa.service"  。

appname

defaultJVM

配置应用实例名称 ,目前仅用于更改JVM名称

jvm_period

60

JVM数据发送频率,单位为秒

objectTrace

true

是否开启对象追踪,默认开启,需配置count_pack 指定包路径

count_pack


开启对象追踪后,用于指定需要监控的包空间下的对象,例如需要监控com.neu下的所有对象,则将count_pack的值设置为com.neu.*,有多个包时需要以分号分割,如"com.neu*;com.baidu.bean"。

dumpThread

false

是否开启线程监控功能

debug

false

是否开启CPU分析器相关的对象追踪,默认不开启。需配置debugPackage指定包路径

debugPackg


用于指定需要监控的CPU分析器相关的对象包路径

batch

true

JavaAgent(2.0.17及以上版本)支持批量及单次两种数据发送方式,bath默认为true,代表采用批量方式发送数据,有助于降低资源占用,false代表采用单次方式发送数据。

批量方式发送数据需配合使用2.2.0及以上版本SendProxy,单次方式无此限制。




 配置Web容器

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

手动配置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 -Xbootclasspath/p:{javaagent目录名称}/conf/ -javaagent:{javaagent目录名称}/lib/CAgent-1.0.0.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% -Xbootclasspath/p:{javaagent目录名称}\conf -javaagent:{javaagent目录名称}\lib\CAgent-1.0.0.jar={javaagent目录名称}\"
:end_javaagent

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


手动配置JBoss

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

在Linux下配置JBoss

1、配置standalone.sh文件

在standalone.sh文件中搜索到“# Display our environment”,该文件一般位于Jboss安装目录的bin目录下。

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

export JAVA_OPTS="$JAVA_OPTS -javaagent:{javaagent目录名称}/lib/CAgent-1.0.0.jar={javaagent目录名称}/ -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
export 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 -Xbootclasspath/p:{javaagent目录名称}/conf"

2、配置standalone.conf文件

在standalone.conf文件内搜索“if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then”,该文件一般位于Jboss安装目录的bin目录下。

  • 如果没有,添加如下命令至文件内。

if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then
JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,com.cloudwise.agent.core.intercept,org.jboss.logmanager"
Fi

54.png

  • 如果有,只需将“com.cloudwise.agent.core.intercept”赋值给JBOSS_MODULES_SYSTEM_PKGS即可。

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\CAgent-1.0.0.jar={javaagent目录名称}\ -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 -Xbootclasspath/p: {javaagent目录名称}\conf

2、配置standalone.conf.bat文件

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

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

添加界面如下图所示:

55.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 -Xbootclasspath/p:{javaagent目录名称}/conf -javaagent:{javaagent目录名称}/lib/CAgent-1.0.0.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\CAgent-1.0.0.jar={javaagent目录名称}\ -Xbootclasspath/p:{javaagent目录名称}\conf"

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


手动配置Jetty

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

在Linux下配置Jetty

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

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

JAVA_OPTIONS="$JAVA_OPTIONS -Xbootclasspath/p:{javaagent目录名称}/conf -javaagent:{javaagent目录名称}/lib/CAgent-1.0.0.jar={javaagent目录名称}/"

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

在Windows下配置Jetty

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

  • 通过新建脚本配置

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

56.png

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

set JAVA=%JAVA_HOME%\bin\java
set JAVA_OPTS=-Xbootclasspath/p:{javaagent目录名称}\conf javaagent:{javaagent目录名称}\lib\CAgent-1.0.0.jar={javaagent目录名称 }\
"%JAVA%" %JAVA_OPTS% -jar start.jar

如果没有配置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=-Xbootclasspath/p:{javaagent目录名称}\conf -javaagent:{javaagent目录名称}\lib\CAgent-1.0.0.jar={javaagent目录名称}\
"%JAVA%" %JAVA_OPTS% -jar start.jar

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

  • 通过start.ini文件配置

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

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

-Xbootclasspath/p:{javaagent目录名称}\conf
-javaagent:{javaagent目录名称}\lib\CAgent-1.0.0.jar={javaagent目录名称}

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


手动配置WebSphere

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

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

通过控制台配置WebSphere

启动服务后,以管理员身份登录到 WebSphere的控制台,在左侧导航栏中选择“服务器→服务器类型→WebSphere Application Server”,在右侧的应用程序服务器列表中选择待监控server,如下图所示。

1.png

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

2.png

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

3.png

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

Linux系统中输入以下命令:

-Xbootclasspath/p:{javaAgent目录名称}/conf/ -javaagent:{javaAgent目录名称}/lib/CAgent-1.0.0.jar={javaAgent目录名称}/

Windows系统中输入以下命令:

-Xbootclasspath/p:{javaagent目录名称}\conf -javaagent:{javaagent目录名称}\lib\CAgent-1.0.0.jar={javaagent目录名称}\

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


通过配置文件配置WebSphere

  • 在Linux下配置WebSphere

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

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

4.png

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

-Xbootclasspath/p:{javaAgent目录名称}/conf/ -javaagent:{javaAgent目录名称}/lib/CAgent-1.0.0.jar={javaAgent目录名称}/

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

  • 在Windows下配置WebSphere

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

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

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

-Xbootclasspath/p:{javaagent目录名称}\conf -javaagent:{javaagent目录名称}\lib\CAgent-1.0.0.jar={javaagent目录名称}\

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


手动配置Resin

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

在Linux下配置Resin

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

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

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

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

<jvm-arg>-Xbootclasspath/p:{javaagent目录名称}/conf</jvm-arg>
<jvm-arg>-javaagent:{javaagent目录名称}/lib/CAgent-1.0.0.jar={javaagent目录名称}/</jvm-arg>

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

  • 修改resin.properties文件

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

在文件中搜索到“jvm_args”,如果该行已被注释掉,请首先删除该行前面的注释符。然后,在该行的最后添加空格及如下命令,请将命令中的{javaagent目录名称}替换为Java Agent的目录。

-Xbootclasspath/p:{javaagent目录名称}/conf -javaagent:{javaagent目录名称}/lib/CAgent-1.0.0.jar={javaagent目录名称}/

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


在Windows下配置Resin

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

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

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

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

<jvm-arg>-Xbootclasspath/p:{javaagent目录名称}\conf</jvm-arg>
<jvm-arg>-javaagent:{javaagent目录名称}\lib\CAgent-1.0.0.jar={javaagent目录名称}\</jvm-arg>

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

  • 修改resin.properties文件

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

在文件中搜索到“jvm_args”,如果该行已被注释掉,请首先删除该行前面的注释符。然后,在该行的最后添加空格及以下命令,,请将命令中的{javaagent目录名称}替换为Java Agent的目录。

-Xbootclasspath/p:{javaagent目录名称}\conf -javaagent:{javaagent目录名称}\lib\CAgent-1.0.0.jar={javaagent目录名称}\

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


手动配置Karaf

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

在Linux下配置Karaf

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

  • 安全配置

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

在该配置项最后添加“,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.*

添加界面如下图所示:

5.png

  • 启动配置

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

在该行下方,最终执行 JAVA 命令之前的位置添加如下命令,请将命令中的{javaagent目录名称}替换为Java Agent的目录。

JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:{javaAgent目录名称}/conf/ -javaagent:{javaAgent目录名称}/lib/CAgent-1.0.0.jar={javaAgent目录名称}/
  • 重启Karaf

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

在Windows下配置Karaf

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

  • 安全配置

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

在该配置项最后添加“,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.*

添加界面如下图所示:

6.png

  • 启动配置

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

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

set "JAVA_OPTS=%JAVA_OPTS% -Xbootclasspath/p:{javaagent目录名称}\conf -javaagent: {javaagent目录名称}\lib\CAgent-1.0.0.jar={javaagent目录名称}\"
  • 重启Karaf

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


手动配置WildFly

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

在Linux下配置WildFly

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

  • 配置日志相关jar

在wildfly-8.2.1.Final/bin/standalone.conf中配置以下信息:

-Xbootclasspath/p:/root/wxytest/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:/root/wxytest/wildfly-8.2.1.Final/modules/system/layers/base/org/jboss/logging/main/jboss-logging-3.1.4.GA.jar -Xbootclasspath/p:/root/wxytest/wildfly-8.2.1.Final/modules/system/layers/base/org/jboss/log4j/logmanager/main/log4j-jboss-logmanager-1.1.0.Final.jar -Xbootclasspath/p:/root/wxytest/wildfly-8.2.1.Final/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-1.5.2.Final.jar

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

  • 配置JAVA_OPTS支持参数

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

  • 配置日志管理器

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

  • 配置Java Agent

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

-Xbootclasspath/p:{javaAgent目录名称}/conf/ -javaagent:{javaAgent目录名称}/lib/CAgent-1.0.0.jar={javaAgent目录名称}/

在Windows下配置WildFly

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

  • 配置日志相关jar

在wildfly-8.2.1.Final/bin/standalone.conf.bat中配置以下信息:

-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版本可能不同。

  • 配置JAVA_OPTS支持参数

-Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager,com.cloudwise.agent
  • 配置日志管理器

-Djava.util.logging.manager=org.jboss.logmanager.LogManager
  • 配置Java Agent

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

-Xbootclasspath/p:D:{javaagent目录名称}\conf -javaagent:D:{javaagent目录名称}\lib\CAgent-1.0.0.jar=D:{javaagent目录名称}\



兼容性说明

目前,Java Agent支持的JDK、应用框架、应用服务器、数据库等说明如下:

类型

支持类型/版本

Web/App   Server

  • Tomcat 5.0/5.5/6/7/8.5

  • JBoss

  • Jboss EAP

  • WebLogic 9.2.3/10.3/ 12.1.3/12c

  • Jetty 6.1.9/6.1.14/6.1.26/7.0.2/7.6.17/8.1.7/ 9.2.14/9.2.6

  • WebSphere 6.1/7.0/8.5.5

  • Resin (resin-pro3.1.6/ resin-pro3.1.8/ resin-pro4.0.45)

  • Karaf 2.2.11/2.3.11/2.4.3/3.0.5/4.0.2

  • Netty 3.6.4/3.9.0/4.0

  • WildFly

  • apache mina

  • axis

应用框架

  • Struts

  • Spring

  • Hibernate

  • CXF

  • Play

  • Dubbo

  • HttpClient

  • HSF

  • iBatis

  • JSP

  • JSF

JDK

JDK 1.5/1.6/1.7/1.8

消息中间件

RabbitMQ

RPC Service

  • Thrift Client 0.8.0/0.9.0/0.10.0

  • Restlet

  • Resteasy

  • Dubbo Consumer

  • Apache Axis

  • Apache CXF

SQL数据库

JDBC   drivers

  • Oracle

  • MariaDB 1.1.8/1.1.9/1.2.3/1.3.7/1.4.6

  • MySQL

  • DB2 2.8.46/2.9.31/4.11.69/4.16.53

  • SQLServer

  • DRDS

  • PostgreSQL

NoSQL数据库

  • Memcached 2.0.0 (spymemcache 2.11.1)

  • Redis (Jedis 2.1.0/2.2.0/2.7.3/2.8.1/2.9.0)

  • MongoDB 2.11.0/2.14.2/3/3.1.0

Java虚拟机

  • Oracle Hotspot JVM for Linux, Solaris, Windows, AIX, UX

  • Oracle Hotspot JVM for Sun 1.6/1.7/1.8

  • Oracle Jrockit

  • IBM JVM for Linux

  • OpenJDK

JVM语言

Play

其他

  • Quartz Job Scheduler

  • Taobao Scheduler

  • java.net (HttpURLConnection)