使用 docker部署tomcat并接入skywalking的使用

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/
目录一、概述二、使用 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文件,有如下描述:

使用 docker部署tomcat并接入skywalking的使用插图

在下图中定义了读取 setenv.sh 的脚本:

使用 docker部署tomcat并接入skywalking的使用插图1

意思是:不要在catalina.sh这个脚本中设置变量,为了让你的自定义变量分离,应该把自定义的环境变量放在CATALINA_BASE/bin/setenv.sh 文件中,除此之外,经过我测试发现,可以直接使用环境变量的方式进行设置,下面我将以两者方式的配置进行说明。

1、将自定义的变量写在 setenv.sh 文件中

首先我们需要下载 skywalking agent,关于下载 agent 可以查看本文开头的文章,之后将agent 放在一个可以访问的目录,我这里是测试,所以将 agent 目录复制到了我的 Dockerfile 的同级目录,其中 Dockerfile 的内容如下:

FROM tomcat LABEL maintaner=”xiniao” COPY agent /usr/skywalking/agent WORKDIR /usr/local/tomcat/bin RUN echo CATALINA_OPTS=”$CATALINA_OPTS -javaagent:/usr/skywalking/agent/skywalking-agent.jar”; > setenv.sh ENV SW_AGENT_NAME=”my-spring-demo” SW_AGENT_COLLECTOR_BACKEND_SERVICES=”127.0.0.1:11800″ WORKDIR /usr/local/tomcat/webapps/ROOT COPY target/my-spring-demo.war my-spring-demo.war RUN 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 可以看到如下图所示内容:

使用 docker部署tomcat并接入skywalking的使用插图2

2、使用环境变量指定 skywalking agent 的路径

详细的 Dockerfile 内容如下:

FROM tomcat LABEL maintaner=”xiniao” COPY agent /usr/skywalking/agent ENV 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/ROOT COPY target/my-spring-demo.war my-spring-demo.war RUN 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的使用插图3

总结

这里主要介绍了使用 docker 部署 tomact 并接入 skywalking 的使用,因为在网上并没有查到太多相关的信息,所以这里记录下来,需要对有需求的小伙伴提供一些帮助。这里还是存在一些问题,比如这里 skywalking agent 直接打到镜像文件里面并不友好,个人觉得可以自定义一个 tomcat 的基础镜像,并将 skywalking agent 打到基础镜像中,这样所有的 tomcat 引用这个基础镜像来构建镜像,就可以实现接入 skywalking。如果是使用 k8s 部署的话,可以在 pod 中定义一个初始容器,在 pod 启动时,将初始容器中的 skywalking agent 复制到我们的应用中,关于如何在 k8s 使用 skywalking,并且无侵入的将 pod 的应用接入 skywalking ,我将在下一篇文章中介绍。

免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容