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

 更新时间:2021年04月20日 11:00:53   作者:惜鸟  
这里主要介绍了使用 docker 部署 tomact 并接入 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文件,有如下描述:

image.png

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

image.png

意思是:不要在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 可以看到如下图所示内容:

image.png

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 可以看到监控的信息如下:

image.png

总结

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

到此这篇关于使用 docker部署tomcat并接入skywalking的使用的文章就介绍到这了,更多相关 docker部署tomcat接入skywalking内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Jenkins整合Docker实现CICD自动化部署的详细过程(若依项目)

    Jenkins整合Docker实现CICD自动化部署的详细过程(若依项目)

    本文介绍了如何使用Jenkins和Docker实现CI/CD自动化部署,文章介绍了环境准备,包括Jenkins、Docker、JDK、Node和Maven,然后讨论了如何配置GitLab环境并利用Webhooks实现代码的自动拉取和部署,最后,展示了如何部署前后端分离的项目,并通过实际操作验证了整个流程的有效性
    2024-10-10
  • Docker给容器添加新端口映射两种方法及常用命令

    Docker给容器添加新端口映射两种方法及常用命令

    在使用Docker时容器的端口映射是一个核心概念,它允许容器与宿主机以及外部网络进行通信,这篇文章主要给大家介绍了关于Docker给容器添加新端口映射两种方法及常用命令的相关资料,需要的朋友可以参考下
    2024-07-07
  • docker中时区问题的处理方法

    docker中时区问题的处理方法

    这篇文章主要给大家介绍了关于docker中时区问题的处理方法,文中通过示例代码介绍的非常详细,对大家学习或者使用docker具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • docker安装redis 5.0.7并挂载外部配置和数据问题

    docker安装redis 5.0.7并挂载外部配置和数据问题

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 的 NoSQL 数据库,并提供多种语言的 API。这篇文章主要介绍了docker安装redis 5.0.7并挂载外部配置和数据,需要的朋友可以参考下
    2019-12-12
  • docker-compose使用volumes注意项介绍

    docker-compose使用volumes注意项介绍

    这篇文章主要介绍了docker-compose使用volumes注意项,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 如何完全清理你的Docker数据

    如何完全清理你的Docker数据

    Docker 不会对你的系统进行任何配置更改……但是它会占用大量的磁盘空间,那么如何完全清理你的数据,本文就详细的来介绍一下,感兴趣的可以了解一下
    2021-07-07
  • 详解如何用docker安装laravel开发环境

    详解如何用docker安装laravel开发环境

    本篇文章主要介绍了详解如何用docker安装laravel开发环境,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Docker不同宿主机网络打通的操作方案

    Docker不同宿主机网络打通的操作方案

    这篇文章主要介绍了Docker不同宿主机网络打通的方案 ,本方式使用docker Swarm集群的方式创建overlay 网络进行打通,需要的朋友可以参考下
    2024-08-08
  • docker中安装elasticsarch 等镜像的过程

    docker中安装elasticsarch 等镜像的过程

    这篇文章主要介绍了docker中安装elasticsarch 等镜像,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • 一文教会你在Docker容器中实现Mysql主从复制

    一文教会你在Docker容器中实现Mysql主从复制

    MySQL的主从复制之前也没做过,刚百度了下发现并不算难,所以下面这篇文章主要给大家介绍了关于在Docker容器中实现Mysql主从复制的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-11-11

最新评论