开发者

SpringBoot制作Docker镜像接入SkyWalking的详细过程

目录
  • 一、前言
  • 二、SkyWalking介绍
    • 2.1 SkyWalking是什么
    • 2.2 SkyWalking核心功能
    • 2.3 SkyWalking整体架构
    • 2.4 SkyWalking主要工作流程
  • 三、前置准备
    • 3.1 搭建SkyWalking服务
      • 3.1.1 下载安装包
      • 3.1.2 上传服务器目录
      • 2.1.3 数据库持久化配置说明
      • 3.1.4 启动skywalking服务
      • 3.1.5 访问控制台
    • 3.2 搭建springboot工程
      • 3.2.1 导入下面的依赖
      • 3.2.2 配置dockerfile文件
      • 3.2.3 添加测试接口
    • 3.3 springboot 接入skywalking
    • 四、springbo编程客栈ot 制作docker接入skywalking
      • 4.1 修改Dockerfile文件
        •  4.2 工程打包上传服务器
          • 4.3 制作微服务镜像
            • 4.4 启动服务容器
              • 4.5 检查是否接入成功
              • 五、写在文末

                一、前言

                随着微服务开发模式越来越成熟,微服务的健康检查、服务链接追踪也成为很多显示运行的项目必须要考虑的事项。微服务链路追踪在一些大的服务平台中起着非常重要的作用,不仅可以监控各个服务的健康状况,也可以协助开发、测试、运维等人员快速排查、分析和定位线上问题,同时也可以监控服务运行过程中各个服务之间的调用情况,性能瓶颈点的定位等,可以说基本涵盖了服务运行过程中的各项重要指标的可视化,在以springboot为技术框架的微服务生态中,skywalking是一个很好的链路追踪组件,在很多项目中发挥过重要的用场,本文以SpringBoot为例,探讨如何在微服务进行容器化之后接入skywalking。

                二、SkyWalking介绍

                2.1 SkyWalking是什么

                 SkyWalking是一个开源的可观测平台,用于从服务和云原生等基础设施收集、分析、聚合以及可视化数据。官网地址: Apache SkyWalking

                SkyWalking 提供了一种简便的方式来清晰地观测分布式系统。相比较zipkin而言,skywalking利用agent字节码增强技术实现代码无侵入,通信方式采用GRPC,性能较好,实现方式是Java探针,支持告警,支持JVM监控,支持全局调用统计,UI界面更加强大等优点。

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                2.2 SkyWalking核心功能

                SkyWalking 有哪些功能呢?以下列举其主要的功能点:

                • 监控手段丰富,可以通过语言探针和 service mesh 获得监控是数据;
                • 多种类型的语言自动探针,包括 Java,.NET Core 和 Node.js;
                • 轻量高效,无需大数据平台,和大量的服务器资源;
                • 模块化,UI、存储、集群管理都有多种机制可选;
                • 支持各类告警机制;
                • 提供优秀的可视化解决方案,支持各类监控数据的可视化;

                2.3 SkyWalking整体架构

                下面是SkyWalking的整体架构图

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                从官网提供的Skywalking架构图来看,分成几个部分,简单来说,可以分成下面几个部分:

                • OAP后端
                • 负责接收 Agent 发送的 Tracing 和Metric的数据信息,然后进行分析Analysis Core,存储到外部存储器 Storage ,最终提供查询Query 功能
                • WEB-UI
                • UI负责提供web控制台,查看链路,查看各种指标,性能等
                • Agent探针
                • Agent负责收集日志数据:Agent以探针的方式,进行请求链路的数据采集,并向OAP服务器上报
                • Storage存储
                • 数据的存储层,支持ElasticSearch、mysql、H2多种方式

                2.4 SkyWalking主要工作流程

                官网关于SkyWalking的详细工作流程图如下

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                在实际应用中,简化上面的流程之后其核心工作流程分为下面几步:

                • 数据采集 ,服务通过探针的方式接入数据采集的功能www.devze.com;
                • 上报服务器 ,请求链路的相关处理行为会上报到OAP服务中;
                • 数据存储 ,进行数据的聚合管理和分析,并存储在持久层;
                • 数据展现 ,通过UI界面进行可视化呈现收集的数据;

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                三、前置准备

                在正编程客栈式将微服务制作成镜像并通过docker接入SkyWalking之前,需要做一些前置的准备,参照下面的步骤依次完成。首先确保你后面要使用的服务器的java环境已经准备好。

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                3.1 搭建SkyWalking服务

                3.1.1 下载安装包

                官网安装包下载地址: Downloads | Apache SkyWalking

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                下载oap安装包

                oap即Skywalking服务端,如下进到官网后,选择下面这里的包,选择合适的版本进行下载,这里我选择9.7.0的版本(版本可以自行选择);

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                下载Java Agent包

                即服务端 agent,用于收集来自客户端的端点信息和指标信息,然后上报到oap服务端,后续在springboot项目中为了接入skywalking将微服务的指标信息上报到skywalking时,就需要通过该Agent包进行指标收集和上报

                在当前的页面找到Agents ,然后进行下载

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                3.1.2 上传服务器目录

                将上面下载的安装包上传到服务器指定目录,并使用下面的命令进行解压

                tar -zxvf apache-skywalking-apm-9.7.0.tar.gz
                tar -xvf apache-skywalking-java-agent-9.2.0.tar

                1.2.

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                2.1.3 数据库持久化配置说明

                默认情况下,如果只是简单运行skywalking服务做一下集成测试的话,解压之后使用内置的脚本即可启动,而在实际项目中,为了保证运行过程中的数据安全性,需要对skywalking服务的运行数据进行持久化存储,官方提供了多种存储方式,比如es,mysql ,pg等,默认不做任何配置的话,数据将存储在h2内存数据库中,如果需要配置,进入下面的目录

                cd apache-skywalking-apm-bin/config

                1.

                找到: application.yml 这个文件进行配置即可

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                关于如何接入数据持久化的操作可以参考另一篇文章,有详细的介绍:【微服务】springboot整合skywalking使用详解

                3.1.4 启动skywalking服务

                使用skywalking的服务,核心需要启动两个服务

                • oapService.sh,oap的服务启动脚本
                • webappService.sh,web-ui服务启动脚本

                进入服务启动脚本的目录,在这个目录下提供了服务启动的相关脚本

                cd /apache-skywalking-apm-bin/bin

                1.

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                使用下面的命令进行后台服务启动

                cd /usr/local/soft/sky/apache-skywalking-apm-bin/bin
                #后台启动: 
                ./oapService.sh &
                ./webappService.sh &

                使用jps命令检查一下是否启动成功,如果正常启动,可以看到有两个Java进程

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                同时,如果你不想分别执行两个脚本启动,也可以直接使用目录下的startup.sh进行启动,效果是一样的

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                服务与端口补充说明:

                • skywalking-oap-server:暴露11800和12800两个端口,分别为收集监控数据的端口11800和接受前端请求的端口12800,修改端口可以修改config/applicaiton.yml;
                • skywalking-web-ui:服务会占用 8080 端口, 修改端口可以修改webapp/webapp.yml;

                3.1.5 访问控制台

                启动成功后,可以直接访问web-ui界面,访问地址:IP:8080,如果需要修改ui界面的访问端口,直接修改web-app目录下的配置文件中的端口即可;

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                浏览器访问的效果如下:

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                如果还没有服务接入进来,页面上不会展示相关的链路追踪信息,类似于懒加载机制。

                3.2 搭建springboot工程

                为了接下来对接skywalking,本地需要搭建一个springboot工程,参照下面的步骤快速完成一个工程的搭建和运行。

                3.2.1 导入下面的依赖

                在pom文件中引入下面的依赖

                <parent>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-parent</artifactId>
                    <version>3.2.4</version>
                    <relativePath/> <!-- lookup parent from repository -->
                </parent>
                <dependencies>
                    <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-web</artifactId>
                    </dependency>
                    <dependency>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-test</artifactId>
                        <scope>test</scope>
                    </dependency>
                </dependencies>
                <build>
                    <finalName>boot-walking</finalName>
                    <plugins>
                        <plugin>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-maven-plugin</artifactId>
                        </plugin>
                    </plugins>
                </build>

                3.2.2 配置Dockerfile文件

                后续要通过微服务制作成docker镜像接入skywalking,需要提前先准备一个Dockerfile,用于构建docker镜像,参考如下:

                FROM  openjdk:17-jdk-alpine
                ADD ./boot-walking.jar /app/boot-walking.jar
                ENTRYPOINT ["java", "-jar", "/app/boot-walking.jar"]

                3.2.3 添加测试接口

                增加一个测试接口,用于后续测试效果

                @RestController
                public class DockerController {
                    //localhost:8082/index
                    @GetMapping("/index")
                    public String index(){
                        return "Hello Docker";
                    }
                }

                运行项目后测试一下接口,确保可以使用

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                3.3 springboot 接入skywalking

                如果是基于springboot 项目接入skywalking,需要在启动命令中添加相关的参数,首先找到上面下载到本地的Agent包

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                然后再在idea中启动时配置下面的启动参数选项

                -javaagent:E:\code-self\skywalking-agent\skywalking-agent.jar
                -DSW_AGENT_NAME=boot-walking
                -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=服务IP:11800

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                配置完成,再次启动服务,此时通过控制台可以看到,加载了很多与skywalking相关的日志内容

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                再次访问一下上面的接口之后,此时再去skywalking控制台,此时可以发现微服务已经接入进来了

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                进一步,可以通过服务名称点进去进一步查看服务里面的相关指标信息

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                四、springboot 制作docker接入skywalking

                通过上面的操作,完成了本地Springboot项目接入skywalking的完整过程,接下来进一步演示如何将springboot工程制作镜像,并通过docker容器接入skywjavascriptalking。

                4.1 修改Dockerfile文件

                在上一步,我们在工程中增加了一个Dockerfile文件,通过这个文件可以制作微服务的镜像,但是如果需要在docker启动的时候接入skywalking,还需要增加其他的配置信息,参考下面的配置:

                FROM openjdk:17-jdk-alpine
                COPY ./boot-walking.jar /boot-walking.jar
                COPY ./skywalking-agent /app/skywalking-agent
                CMD java -javaagent:/app/skywalking-agent/skywalking-agent.jar \
                       -DSW_AGENT_NAME=sky-boot=boot-docker-walking \
                       -DSW_AGENT_COLLECTOR_BACKEND_SERVICES=服务IP:11800 \
                       -jar /boot-walking.jar

                 4.2 工程打包上传服务器

                将本地的springboot工程打android成jar包并上传到服务器指定目录

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                4.3 制作微服务镜像

                使用下面的命令将微服务jar包制作成docker镜像

                docker build -t boot-walking:1.0 .

                1.

                运行上面的命令进行镜像构建过程

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                检查一下镜像是否构建成功

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                4.4 启动服务容器

                使用下面的命令启动docker容器

                docker run -d -it -p 8082:8082 --name=boot-walking-1 boot-walking:1.0

                1.

                启动成功后,可以通过docker logs命令进一步检查下是否正常运行了服务

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                通过输出的日志不难看出,与上面springboot接入时启动类似,在启动的时候也输出了很多与skywalking相关的日志。

                4.5 检查是否接入成功

                然后访问下服务器中运行的docker服务接口

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                此时再去skywalking控制台检查一下,此时已经正常接入进来了

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                同样可以点进去进一步查看各项指标信息,比如接口的具体执行情况、耗时、执行的链路等信息

                SpringBoot制作Docker镜像接入SkyWalking的详细过程

                五、写在文末

                本文通过实际操作完成了如何基于springboot项目接入skyalking的详细过程,并进一步将springboot项目制作容器对接skyalking的详细操作,基于此,有兴趣的同学还可以继续研究和完善,比如如何在skywalking中可视化监控微服务中的日志信息等,希望对看到的同学有用哦,本篇到此结束,感谢观看。

                到此这篇关于SpringBoot制作Docker镜像接入SkyWalking详解的文章就介绍到这了,更多相关SpringBoot docker接入SkyWalking内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

                0

                上一篇:

                下一篇:

                精彩评论

                暂无评论...
                验证码 换一张
                取 消

                最新开发

                开发排行榜