要监控Docker中的应用,需要安装AgentService、SendProxy和对应的Agent,目前Java Agent和PHP Agent已支持在Docker中的安装部署。
注意:该安装方法仅适用于使用Dockerfile构建镜像的场景,同时请确保Docker镜像中安装有curl命令。
在Docker中安装Java Agent
版本说明:本安装说明仅针对JavaAgent_2.1.2及AgentService_1.0.2以上(含)版本,使用老版本探针请及时升级,或沿用以往部署安装方式。
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镜像(注意:按截图中的注释修改文件内容)
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>
在Docker中安装PHP Agent
1、首先在透视宝云端的“配置→应用”页面下载PHP Agent、Agent Service和SendProxy安装包。
2、将下载的压缩包拷贝到宿主机系统的某个目录下(如/var/cloudwise,后续相关步骤均以此目录为例)并解压,例如:
unzip PHPAgent.zip –d /var/cloudwise unzip AgentService.zip -d /var/cloudwise unzip SendProxy.zip –d /var/cloudwise
3、将AgentService目录中的startup.sh文件移动到/var/cloudwise目录下并赋予可执行权限。
cd /etc/workdir/PHPAgent hosts=`grep $(hostname) /etc/hosts | awk -F. '{print $1"."$2"."$3"."1}'` cw_hostip=`curl http://${hosts}:27799/smartagent/getHostIP 2>/dev/null` export cwhostip=${cw_hostip} export cwapptype=2 bash install_phpindocker.sh startindocker apache2-foreground
说明:由于Dockerfile 仅最后一个CMD可以生效,所以使用startup.sh替换之前启动Apache的命令,并把启动Apache的命令集成到startup.sh中,同时对PHP Agent进行了初始化操作。
4、参考AgentService目录下dockerfile文件的内容,修改您自己的dockerfile配置,同时将PHP Agent引入到docker镜像。
FROM php:5-apache #php:5-apache 为新镜像的基础镜像 ADD ./data/ /etc/workdir/ #./data/ 为Dockerfile所在目录的相对路径 #/etc/workdir/为镜像的绝对路径 CMD ["/bin/bash","/etc/workdir/startup.sh"] #/etc/workdir/为镜像的绝对路径
5、在dockerfile文件所在的目录下创建新镜像,命令如下(请勿遗漏最后的标点“.”):
docker build -t <new_image> .
6、进入/var/cloudwise/AgentService目录,配置License Key,命令如下:
./init_licensekey.sh -c ‘J45Engw88Nc/fR1k7e53nvDuCBhOY1YDQll8UqotxYgsR5VnW1eKWg!!!!’
7、启动SendProxy,命令如下:
./SendProxy.sh restart
8、启动AgentService,命令如下:
./AgentService.sh start
9、通过生成的新镜像启动容器,例如:
docker run -dit --name test_php_agent <new_image>