【Spring Cloud Alibaba】11.链路追踪(SkyWalking)

这篇具有很好参考价值的文章主要介绍了【Spring Cloud Alibaba】11.链路追踪(SkyWalking)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

接下来对分布式项目实现链路追踪,本操作要先完成前置步骤,详情请参照【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程

在分布式系统,尤其是微服务系统中,一次外部请求往往需要内部多个模块,多个中间件,多台机器的相互调用才能完成。在这一系列的调用中,可能有些是串行的,而有些是并行的。在这种情况下,我们如何才能确定这整个请求调用了哪些应用?哪些模块?哪些节点?以及它们的先后顺序和各部分的性能如何呢?

这就是涉及到链路追踪。

什么是链路追踪

链路追踪是分布式系统下的一个概念,它的目的就是要解决上面所提出的问题,也就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如,各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。

目前主要的一些 APM 工具有: CatZipkinPinpointSkyWalking等;

什么是SkyWalking

Apache SkyWalking 是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。

提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

功能列表

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

整体架构

springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

  • 上部分 Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalkingZikpinJaeger 等提供的 Tracing 数据信息。而我们目前采用的是,SkyWalking Agent 收集 SkyWalking Tracing 数据,传递给服务器。
  • 下部分 SkyWalking OAP :负责接收 Agent 发送的 Tracing 数据信息,然后进行分析(Analysis Core) ,存储到外部存储器( Storage ),最终提供查询( Query )功能。
  • 右部分 StorageTracing 数据存储。目前支持 ESMySQLSharding SphereTiDBH2 多种存储器。 SkyWalking 开发团队自己的生产环境采用 ES 为主。
  • 左部分 SkyWalking UI :负责提供控台,查看链路等等。

单机搭建步骤

springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

  1. 搭建一个 Elasticsearch 服务。
  2. 下载 SkyWalking 软件包。
  3. 搭建一个 SkyWalking OAP 服务。
  4. 启动一个 Spring Boot 应用,并配置 SkyWalking Agent
  5. 搭建一个 SkyWalking UI 服务。

官网文档

安装数据存储源

目前支持 ESMySQLSharding SphereTiDBH2 多种存储器,这里主要介绍下ElasticsearchMysql方式。

注意:Elasticsearch 和 MySQL的安装这里只做最简单使用,具体请自行搜索,如果你已有部署,可以跳过这部!

基于Docker安装Elasticsearch

新建docker-compose.yml文件,内容如下:
docker-compose.yml

version: '3.3'
services:
  elasticsearch:
    image: docker.io/elasticsearch:7.7.0
    container_name: elasticsearch
    restart: always
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      discovery.type: single-node
      TZ: Asia/Shanghai
      cluster.name: elasticsearch

运行命令

docker-compose up

或者

#拉取镜像
docker pull elasticsearch:7.7.0

#启动镜像
docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0

新版(v8.6.2)Elasticsearch详细安装教程

基于Docker安装MySQL

拉取镜像

#拉取镜像
docker pull mysql:5.7

#启动镜像
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name  mysql mysql:5.7

基于Docker配置SkyWalking OAP

Elasticsearch 方式比较简单,推荐使用

Elasticsearch 方式

docker run --name oap --restart always -d -p 12800:12800 -p 11800:11800 -e SW_STORAGE=elasticsearch -e SW_STORAGE_ES_CLUSTER_NODES=172.16.92.230:9200 apache/skywalking-oap-server:9.4.0

MySQL方式

创建数据库

首先在我们的mysql数据库中新建数据库实例swtest
运行命令

docker exec -it mysql mysql -uroot -p

输入刚刚设置的密码123456
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
创建数据库swtest

 create DATABASE swtest;

springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

下载mysql-connector-java

MySQL驱动程序在Apache官方发行版和源代码中是不允许的。 所以需要我们自己去下载。

mysql-connector-java。jar包下载地址:https://downloads.mysql.com/archives/c-j/

springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
解压
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

创建

运行命令创建SkyWalking OAP

docker run --name oap --restart always -d -p 12800:12800 -p 11800:11800 -e SW_STORAGE=mysql -e SW_JDBC_URL=jdbc:mysql://172.16.92.230:3306/swtest?allowMultiQueries=true -e SW_DATA_SOURCE_USER=root -e SW_DATA_SOURCE_PASSWORD=123456 apache/skywalking-oap-server:9.4.0

这里我们创建完成查看日志docker logs -f --tail=200 oap,报错如下,这是因为没有引入mysql-connector-java
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
我们将下载好的mysql-connector-j-8.0.31.jar包复制到oap容器中

docker cp E:\soft\oap\mysql-connector-j-8.0.31.jar oap:/skywalking/oap-libs/

E:\soft\oap\mysql-connector-j-8.0.31.jar是我这边放的路径,具体看你下载的包放在那里

重新启动

docker restart oap

这时,我们看日志,发现oap已成功连接mysql,正在创建表
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
耐心等待,创建完成即可!
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

参数说明

参数 默认值 说明
SW_STORAGE h2 存储源:h2、 elasticsearch、 mysql、 postgresql等
SW_STORAGE_ES_CLUSTER_NODES localhost:9200 elasticsearch地址
SW_JDBC_URL “jdbc:mysql://localhost:3306/swtest?rewriteBatchedStatements=true” jdbc地址
SW_DATA_SOURCE_USER root mysql数据库用户名
SW_DATA_SOURCE_PASSWORD root@1234 mysql数据库密码

配置SkyWalking Agent

下载

打开官网下载地址:https://skywalking.apache.org/downloads/
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
点击想要下载的SkyWalking Agent版本
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

如果下载的比较慢,可以试试国内的镜像地址
阿里云:https://mirrors.aliyun.com/apache/skywalking
清华大学:https://mirrors.tuna.tsinghua.edu.cn/apache/skywalking
北京理工大学:http://mirror.bit.edu.cn/apache/skywalking

springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

解压

 tar -zxvf apache-skywalking-java-agent-8.14.0.tgz

windows上我用的7z解压两次,没啥损坏,正常使用~~~

目录如下

activations
bootstrap-plugins
config # SkyWalking Agent 配置
licenses
logs # SkyWalking Agent 日志
optional-plugins # 可选插件
optional-reporter-plugins
plugins # 插件
LICENSE
NOTICE
skywalking-agent.jar # SkyWalking Agent

springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

集成

在我们的项目中新建目录moonce-skywalking-agent
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
将我们下载的skywalking-agent目录下内容拷贝到该路径下(其实现在放在哪里都无所谓的,只要在项目VM指定就行了)
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

配置

修改项目的 VM 运行参数,点击菜单栏中的 Run -> EditConfigurations...,此处我们以 moonce-provider 项目为例,修改参数如下

-javaagent:E:\code\spring-cloud-alibaba\moonce-skywalking-agent\skywalking-agent.jar
-Dskywalking.agent.service_name=moonce-provider
-Dskywalking.collector.backend_service=172.16.92.230:11800

springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

基于Docker配置SkyWalking UI

docker run --name oap-ui --restart always -d -e SW_OAP_ADDRESS=http://172.16.92.230:12800 -p 18080:8080 apache/skywalking-ui:9.4.0

测试

启动Nacos服务,运行ProviderApplication,访问地址http://172.16.92.230:18080/(默认是空的,我这边访问过)
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

然后我们来访问地址http://localhost:8081/test/hi(可以多点几次)
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
可以看到我们的访问信息
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
点击servce names可以查看详情
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

点击Topology,查看请求链路情况,这里只是简单的一个
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
我们把ConsumerApplication也进行添加探针
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务

启动这项目,访问地址:http://localhost:9091/test/app/name(多访问几次)
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务
查看SkyWalking UI
springcloudalibaba链路追踪,# Spring Cloud Alibaba,skywalking,java,微服务文章来源地址https://www.toymoban.com/news/detail-677652.html

到了这里,关于【Spring Cloud Alibaba】11.链路追踪(SkyWalking)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式链路追踪专栏,Spring Cloud Sleuth:分布式链路追踪之通信模型设计

    Spring Cloud Sleuth  赋予分布式跟踪的  Spring Boot  自动配置的一键解决方案。 Spring Cloud Sleuth  是基于  Brave  的封装,也是很多公司采用开源加自研的最佳解决方案。 那么从作为架构师或者技术专家如何去借鉴优秀框架的设计理念和思想,本次  Chat  将开启作者既分布式链路

    2024年01月19日
    浏览(66)
  • Spring Cloud Gateway日志级别链路追踪设计

    ​ 为了配合日志分析系统ELK(ElasticSearch,Logstash,Kibana)方便解析日志文件,需要对日志文件的输出格式进行JSON格式化,我这里使用的日志工具是logback(幸运的躲过了log4j的漏洞)+logstash-encoder包进行的封装的一个日志插件,该插件实现了日志JSON格式化,适配了多种中间件的链

    2024年02月11日
    浏览(43)
  • 十六、Spring Cloud Sleuth 分布式请求链路追踪

    1、为什么出出现这个技术?需要解决哪些问题 2、是什么? 官网: https://github.com/spring-cloud/spring-cloud-sleuth spring-cloud-sleuth 提供了一套完整的分布式链路追踪的解决方案 ,并且兼容支持了 zipkin (展现) 3、解决 1、下载运行zipkin 下载jar包到本地 https://repo1.maven.org/maven2/io/zipkin/

    2024年02月12日
    浏览(47)
  • Spring Cloud【分组消费、为什么需要链路追踪 、Spring Cloud Sleuth是什么、微服务集成Sleuth实现链路打标】(十二)

      目录 消息驱动_分组消费 分布式请求链路追踪_为什么需要链路追踪 

    2024年02月14日
    浏览(53)
  • Skywalking链路追踪

    APM(Application Performance Monitoring)系统是一种用于监控和管理应用程序性能的工具。它可以帮助开发人员和运维团队实时监控应用程序的性能指标、识别潜在的性能问题,并提供性能优化建议。 APM系统可以帮助用户及时发现和解决应用程序的性能问题,提升用户体验和系统稳

    2024年01月18日
    浏览(42)
  • 链路追踪Skywalking应用实战

    2023年09月05日
    浏览(46)
  • 链路追踪Skywalking快速入门

    2023年09月08日
    浏览(45)
  • skywalking全链路追踪

    在上一篇文章skywalking安装教程中我们介绍了skywalking的作用以及如何将其集成到我们的微服务项目中。本篇文章我们介绍在微服务架构中,如何使用skywalking对一次客户端请求进行全链路追踪。 skywalking的介绍分多篇文章: 微服务项目集成skywalking skywalking全链路追踪 何为全链路

    2024年02月14日
    浏览(40)
  • 分布式链路追踪专栏,分布式链路追踪:Skywalking集群管理设计

    SkyWalking 是一个开源 APM 系统,包括针对 Cloud Native 体系结构中的分布式系统的监视,跟踪,诊断功能。核心功能如下: 服务、服务实例、端点指标分析; 根本原因分析,在运行时分析代码; 服务拓扑图分析; 服务,服务实例和端点依赖性分析; 检测到慢速服务和端点; 性

    2024年02月01日
    浏览(78)
  • 全网最全的Skywalking链路追踪

    写在前面 :笔者发现目前关于Skywalking的内容很是零散,没有成型的内容,笔者在项目中使用到Skywalking进行埋点分析,下面分三篇来介绍下Skywalking,分别是Skywalking基本知识,Skywalking基于docke安装,SpringBoot工程集成Skywalking 服务监控需要满足的三要素分别如下: 日志监控 指标

    2023年04月08日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包