这篇文章将为大家详细讲解有关如何使用docker部署tomcat并接入skywalking,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、概述
使用 docker 部署 spring boot 并接入 skywalking,其中描述了使用 docker-compose 搭建 skywalking,这一篇文章就不介绍 skywalking 的搭建了,这里主要记录一下使用 docker 部署一个 tomcat 并接入 skywalking 进行服务链路追踪。
二、使用 docker 部署 tomcat 并接入 skywalking
关于如何将 tomcat 应用接入 skywalking 官网有如下描述:
详细信息可以查看官网:skywalking agent 官网
Linux Tomcat 7 / Tomcat 8
在tomcat/bin/catalina.sh
第一行添加以下内容:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTS
Windows Tomcat 7 / Tomcat 8
在tomcat/bin/catalina.bat第一行添加以下内容:
set "CATALINA_OPTS=-javaagent:<skywalking-agent-path>"
JAR File 或 Spring Boot
在应用程序的启动命令行中添加 -javaagent
参数:
java -javaagent:<skywalking-agent-path> -jar yourApp.jar
注意:
-javaagent
参数一定要在-jar参数之前。
由于我这里是使用 docker 部署 tomcat ,所以不打算修改 tomcat/bin/catalina.sh
文件,而且查看tomcat/bin/catalina.sh
文件,有如下描述:
在下图中定义了读取 setenv.sh
的脚本:
意思是:不要在catalina.sh
这个脚本中设置变量,为了让你的自定义变量分离,应该把自定义的环境变量放在CATALINA_BASE/bin/setenv.sh
文件中,除此之外,经过我测试发现,可以直接使用环境变量的方式进行设置,下面我将以两者方式的配置进行说明。
将自定义的变量写在 setenv.sh 文件中
首先我们需要下载 skywalking agent,关于下载 agent 可以查看本文开头的文章,之后将agent 放在一个可以访问的目录,我这里是测试,所以将 agent 目录复制到了我的 Dockerfile 的同级目录,其中 Dockerfile
的内容如下:
FROM tomcatLABEL maintaner="xiniao"COPY agent /usr/skywalking/agentWORKDIR /usr/local/tomcat/binRUN echo 'CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/skywalking/agent/skywalking-agent.jar";' > setenv.shENV SW_AGENT_NAME="my-spring-demo" \ SW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800"WORKDIR /usr/local/tomcat/webapps/ROOTCOPY target/my-spring-demo.war my-spring-demo.warRUN jar -xf my-spring-demo.war
关于 skywalking agent 的其他配置,则可以通过环境变量的方式进行定义,比如这里指定了 skywalking 中显示的服务名为 ENV SW_AGENT_NAME="my-spring-demo"
以及 skywalking 的后端服务地址 SW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800"
,我们访问 skywalking ui 可以看到如下图所示内容:
使用环境变量指定 skywalking agent 的路径
详细的 Dockerfile
内容如下:
FROM tomcatLABEL maintaner="xiniao"COPY agent /usr/skywalking/agentENV CATALINA_OPTS="$CATALINA_OPTS -javaagent:/usr/skywalking/agent/skywalking-agent.jar" \ SW_AGENT_NAME="my-spring-demo-env" \ SW_AGENT_COLLECTOR_BACKEND_SERVICES="127.0.0.1:11800"WORKDIR /usr/local/tomcat/webapps/ROOTCOPY target/my-spring-demo.war my-spring-demo.warRUN jar -xf my-spring-demo.war
使用如下命令构建镜像:
docker build -t my-spring-demo .
使用如下命令运行容器:
docker run --rm -p 8080:8080 my-spring-demo
访问 skywalking ui 可以看到监控的信息如下:
关于“如何使用docker部署tomcat并接入skywalking”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。