SkyWalking 在微服务中的使用(1)

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

该篇文章是我在掘金的第一篇原创文章,跟大家来共同学习下 SkyWalking 在微服务下的一些使用方式,废话不多说,咱们直接开整!

我本人为了本地开发方便省事,所有的开发环境都是装在 Docker 中的

SkyWalking 是个啥东东?

简单来说,SkyWalking 是一个链路追踪的一个工具,可以帮助我们在微服务模式下,了解接口从调用到结束的一个过程,包括中间做了什么事,都非常的清晰可见!墙裂推荐!!!

在 Docker 中安装 skywalking-oap

这里需要说明下,我是用的自定义的网络,网络名称就叫 my,主要是为了方便容器镜像之间的连接访问,可以直接直接通过容器名称或者容器id进行连接

1
2
3
4
5
6
7
8
bash复制代码# 1.创建自定义网络(已创建的话请忽略)
docker network create my

# 2.拉取 oap 镜像
docker pull apache/skywalking-oap-server:8.7.0-es7

# 3.启动 oap 容器并连接上 Elasticsearch,通过 Es 进行数据存储
docker run -d --net my --name skywalking-oap -e TZ=Asia/Shanghai -p 12800:12800 -p 11800:11800 --link elasticsearch:elasticsearch -e SW_STORAGE=elasticsearch7 -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 apache/skywalking-oap-server:8.7.0-es7

在 Docker 中安装 skywalking-ui

1
2
3
4
5
bash复制代码# 4.拉取 ui 镜像
docker pull apache/skywalking-ui:8.7.0

# 5.启动 ui 容器并连接到 oap,进行监控数据的展示
docker run -d --net my --name skywalking-ui -e TZ=Asia/Shanghai -p 8088:8080 -e SW_OAP_ADDRESS=http://skywalking-oap:12800 apache/skywalking-ui:8.7.0

访问 ui 界面地址http://localhost:8088/,如果不出意外的大家就能看到如下界面

image-20211112140059135.png

至此,SkyWalking 的环境就安装好了,下面进行在项目中使用 agent 探针包进行埋点监控链路信息

skywalking-agent 探针包的下载地址:skywalking.apache.org/downloads/,我这里下载的是SkyWalking Java Agent,版本是 8.8.0

下载完解压后进到 config 目录,里面有个 agent.config 的配置文件,下面我们要修改下里面的四个属性的配置,至于其他属性配置,大家可以根据自己的需要进行调整,每个属性的作用都有注释说明。

1
2
3
4
5
6
7
8
9
10
11
ini复制代码# 收集 SQL 参数(默认是 false,这里改为 true)
plugin.jdbc.trace_sql_parameters=${SW_JDBC_TRACE_SQL_PARAMETERS:true}

# 收集 SpringMVC 请求参数(默认是 false,这里改为 true)
plugin.springmvc.collect_http_params=${SW_PLUGIN_SPRINGMVC_COLLECT_HTTP_PARAMS:true}

# 收集 Http 客户端请求参数(默认是 false,这里改为 true)
plugin.httpclient.collect_http_params=${SW_PLUGIN_HTTPCLIENT_COLLECT_HTTP_PARAMS:true}

# 收集 feign 调用的请求 body 参数(默认是 false,这里改为 true)
plugin.feign.collect_request_body=${SW_PLUGIN_FEIGN_COLLECT_REQUEST_BODY:true}

*注意:*如果你的项目服务入口是 gateway,那么需要把 optional-plugins(可选插件) 文件夹下的 apm-spring-cloud-gateway-2.1.x-plugin-8.8.0.jar apm-spring-webflux-5.x-plugin-8.8.0.jar 两个 jar 包放到 plugins 目录下,否则将无法对 gateway 进行链路追踪!!!

植入 agent 探针包,通过 agent 探针包启动项目

这里我通过 IDEA 来演示下,在项目 JVM 参数中增加3个参数,如下图所示

-javaagent:指定探针包所在的路径

-Dskywalking.agent.service_name:指定当前服务的名称(随便定义)

-Dskywalking.collector.backend_service:指定要连接的 oap 服务,上面已经搭建过了

image-20211112142101156.png

我这里一次性启动3个服务,给大家演示(3个服务都加入了探针包,JVM 参数都一样,除了服务名称不一样),然后在拓扑图上可以就看到你的服务信息

image-20211112142841263.png

image-20211112142858977.png

并且如果你调用了接口,可以在追踪里面看到接口调用的链路信息(包括 mysql 执行的 sql、服务之间的 feign 调用,redis 的调用等等都可以看到,非常的清晰)

image-20211112143011423.png

接口中的一些的 query 参数啥的也都可以看到

image-20211112143859276.png

相信大家也看到了在最后一张图中有 request.body 以及 response.body 这两个信息的展示,那为什么我自己搭建的没有呢,哎呀,这都是小问题,别急,这就是我要在下一篇文章中要给大家共同学习的一个知识点,如何在 SkyWalking 中自定义 Tag 信息?

好了,以上就完成了 SkyWalking 的搭建以及在项目中的使用,感谢大家的观看,共同学习!共同进步,冲鸭!

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%