微服务实战(十二)微服务的调用链路追踪 Skywalking

五迷三道 提交于 2020-02-22 23:39:16

本章主要内容

本章主要介绍如何去追踪各微服务的调用过程。在之前章节我们讲解了用Feign在微服务之间进行相互调用,那么在整个微服务体系运行时,我们怎么宏观地监测和跟踪这些微服务的调用过程呢?接下来我们就引入:微服务链路追踪技术

链路追踪技术汇总

现在比较流行的链路追踪框架主要有 Zipkin,Pinpoint,SkyWalking,CAT

主流技术对比: https://blog.csdn.net/u011177064/article/details/104383133

Skywalking简介 

通过比较,从代码侵入、性能、UI等角度,我比较倾向于使用 Skywalking。

SkyWalking 是观察性分析平台和应用性能管理系统。
提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。官网介绍地址

快速上手使用

下载

首先,我们下载Skywalking最新稳定版

下载地址:http://skywalking.apache.org/zh/downloads/

我们目前只想快速地使用起来,那么下载Distribution的版本即可。

Skywalking 包含两大部分:

代理端:/agent 目录 , 启动实际应用前,添加 jvm 参数,使用 javaagent 技术监控 应用。

服务端:/bin 目录中有启动脚本,用于收集监控数据以及可视化界面展示。

启动

进入解压后目录 :  apache-skywalking-apm-6.6.0\apache-skywalking-apm-bin\bin

选择脚本进行启动

windows : startup.bat    (个人电脑上先试试windows)

linux : startup.sh

启动后会运行两个服务:
Skywalking-Collector:追踪信息收集器,通过 gRPC/Http 收集客户端的采集信息 ,Http默认端口 12800,gRPC默认端口 11800。
Skywalking-Webapp:管理平台页面 ,默认端口 8080,登录信息 admin/admin

配置

默认存储是使用的h2,配置文件:apache-skywalking-apm-6.6.0\apache-skywalking-apm-bin\config\application.yml

可修改为mysql 、elasticsearch等存储系统。

默认启动端口是8080,配置文件:apache-skywalking-apm-6.6.0\apache-skywalking-apm-bin\webapp\webapp.yml 

更多的配置项,根据需要可查阅官网文档:https://github.com/apache/skywalking/tree/v6.6.0/docs  (6.6.0版本)

启动之后,可在浏览器登录查看控制台效果:

 

监控实际微服务

配置

我们把之前的工程跑起来,然后用Skywalking去监控调用链路。

选用工程  combat-providercombat-provider-feign    ,这两个工程我们在之前章节搭建过。

我们只需要在SpringBoot启动类加上javaagent的启动参数,即可实现Skywalking监控应用。

-javaagent:D:\Dev\workspace_csdn\apache-skywalking-apm-6.6.0\apache-skywalking-apm-bin\agent\skywalking-agent.jar -Dskywalking.agent.service_name=provider

-javaagent :  skywaling目录\agent\skywalking-agent.jar

-Dskywalking.agent.service_name  :服务名,定义该微服务在skywalking监控统计中的名称。

 

agent目录的config下配置Skywalking服务端的信息:

apache-skywalking-apm-6.6.0\apache-skywalking-apm-bin\agent\config\agent.config

# Backend service addresses.
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}

监控效果

我本地依次启动了如下应用:

服务注册中心:Nacos     端口:8848

combat-provider              端口:9999

combat-provider-feign     端口:9997

 

我们测试一下  combat-provider-feign 中的接口,在 之前章节 中,有介绍过,调用链路为:

浏览器-》 接口 【/config/version】   -》combat-provider-feign-》combat-provider 

然后,我们在Skywalking后台中查看一下监控记录。

拓扑图:

可以看见调用过程,从User --》combat-provider-feign-》combat-provider 

切换到【追踪】视图,我们刚刚的请求记录,观测还是非常清晰的。

右侧调用表中, 紫色provider-feign有两个记录,一个是 http SpringMvc,一个是 http Feign,从浏览器开始,第一个http请求是SpringMVC类型(浏览器到provider-feign服务器),第二个请求是Feign(服务器provider-feign中把请求通过Feign转到provider服务器);蓝色provider有一个记录,即中转后provider服务器响应了这个请求。

 

 

总结

利用Skywalking,我们可以非常方便地监控微服务的调用过程,对于故障排错,问题定位是很有帮助的。

到此,我们其实已经把微服务架构中的核心组件已经基本串讲了一遍,

服务注册发现中心:SpringCloud  Alibaba Nacos

配置中心:SpringCloud  Alibaba  Nacos

网关:SpringCloud Gateway

负载均衡:Robin

远程调用: SpringCloud Feign

流控:SpringCloud  Alibaba Sentinel

链路追踪:Skywalking

接下来,我打算通过一个完整的微服务项目,来从实际生产环境的角度把我们的微服务架构完整实战一遍,之后更多的是细节!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!