快速入门
业务系统分析
创建业务系统
分析业务系统
Web应用性能管理
理解应用性能管理
管理应用列表
查看应用概览
追踪关键事务
追踪请求详情
分析单个请求
分析单次请求快照
追踪外部服务
分析消息队列
追踪数据库详情
追踪NoSQL详情
追踪错误&异常信息
对比分析
设置应用
后台任务性能管理
后台任务概述
管理后台任务列表
查看后台任务概览
追踪慢后台任务
追踪单次慢后台任务
追踪错误信息
运维者视图
创建运维视图
分析运维视图
设置运维视图
移动应用性能管理
理解移动应用性能管理
移动应用概览
用户行为分析
网络分析
Webview性能分析
运营分析
地域分析
崩溃分析
ANR/卡顿分析
组合分析
劫持分析
交互分析
移动拓扑分析
移动应用设置
浏览器性能管理
理解浏览器性能管理
向前端页面注入JS
查看浏览器项目列表
查看Web页面性能概览
按区域分析Web页面性能
按网页分析Web页面性能
按浏览器分析Web页面性能
按运营商分析Web页面性能
多维度追踪单页面请求性能
分析Web页面Ajax请求
分析Web页面JS错误
主机性能管理
理解主机性能管理
管理主机和服务列表
查看主机概览
分析服务器性能
分析Apache性能
分析Redis性能
分析MySQL性能
分析Memcache性能
分析Tomcat性能
分析MongoDB性能
分析Nginx性能
分析Weblogic性能
分析Oracle性能
分析SQL Server性能
分析PostgreSQL性能
分析Varnish性能
分析CouchBase性能
分析Java虚拟机性能
分析Docker性能
设置主机信息
告警管理
概述
设置应用/移动告警/浏览器告警
设置主机告警
查看并处理告警
管理告警
设置URL回调
报告管理
概述
查看在线报告
预定邮件报告
创建自定义报告
账户管理
用户权限说明
管理部门和用户
设置个人信息

要监控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镜像(注意:按截图中的注释修改文件内容)

30.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>


在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

1506482692133994.png

说明:由于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/为镜像的绝对路径

1506482728495555.png

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>