关于docker:使用-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 文件中,除此之外,通过我测试发现,能够间接应用环境变量的形式进行设置,上面我将以两者形式的配置进行阐明。

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 能够看到如下图所示内容:

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 部署 tomact 并接入 skywalking 的应用,因为在网上并没有查到太多相干的信息,所以这里记录下来,须要对有需要的小伙伴提供一些帮忙。这里还是存在一些问题,比方这里 skywalking agent 间接打到镜像文件外面并不敌对,集体感觉能够自定义一个 tomcat 的根底镜像,并将 skywalking agent 打到根底镜像中,这样所有的 tomcat 援用这个根底镜像来构建镜像,就能够实现接入 skywalking。如果是应用 k8s 部署的话,能够在 pod 中定义一个初始容器,在 pod 启动时,将初始容器中的 skywalking agent 复制到咱们的利用中,对于如何在 k8s 应用 skywalking,并且无侵入的将 pod 的利用接入 skywalking ,我将在下一篇文章中介绍。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理