SpringCloud微服务实战——搭建企业级开发框架(三十三):整合Skywalking实现链路追踪

简介: Skywalking是由国内开源爱好者吴晟(原OneAPM工程师)开源并提交到Apache孵化器的产品,它同时吸收了Zipkin/Pinpoint/CAT的设计思路,支持非侵入式埋点。是一款基于分布式跟踪的应用程序性能监控系统。另外社区还发展出了一个叫OpenTracing的组织,旨在推进调用链监控的一些规范和标准工作。1、下载Skywalking,下载地址:https://skywalking.apache.org/downloads/#download-the-latest-versions ,根据需求选择发布的版本,这里我们选择最新发布版v8.4.0 for H2/MySQL/TiDB

Skywalking是由国内开源爱好者吴晟(原OneAPM工程师)开源并提交到Apache孵化器的产品,它同时吸收了Zipkin/Pinpoint/CAT的设计思路,支持非侵入式埋点。是一款基于分布式跟踪的应用程序性能监控系统。另外社区还发展出了一个叫OpenTracing的组织,旨在推进调用链监控的一些规范和标准工作。


1、下载Skywalking,下载地址:

https://skywalking.apache.org/downloads/#download-the-latest-versions ,根据需求选择发布的版本,这里我们选择最新发布版v8.4.0 for H2/MySQL/TiDB/InfluxDB/ElasticSearch 7


微信图片_20220519172137.png


v8.4.0 for H2/MySQL/TiDB/InfluxDB/ElasticSearch 7


2、下载Elasticsearch,下载地址:https://www.elastic.co/cn/downloads/elasticsearch ,因为上面我们选择下载的Skywalking用到的是ElasticSearch 7,所以这里下载Elasticsearch 7.12.0


微信图片_20220519172141.png


Elasticsearch 7.12.0


3、将下载后的apache-skywalking-apm-es7-8.4.0.tar.gz和elasticsearch-7.12.0-linux-x86_64.tar.gz上传到Linux服务器并分别解压


tar -zxvf apache-skywalking-apm-es7-8.4.0.tar.gz
tar -zxvf elasticsearch-7.12.0-linux-x86_64.tar.gz


4、修改/elasticsearch-7.12.0/config下的elasticsearch.yml


# 修改
clusteri.name: CollectorDBCluster
node.name: CollectorDBCluster-1
# 这里设置为实际的ip地址
network.host: 127.0.0.1
http.port: 9200
cluster.initial_master_nodes: ["CollectorDBCluster-1"]


5、为了系统安全考虑,Elasticsearch默认不能使用root用户启动,这里新建一个es用户用于启动Elasticsearch


#创建es用户组及es用户
groupadd es
useradd es -g es
# 修改登录用户的密码,这里设置为Skywalking
passwd es
#将elasticsearch-7.12.0文件夹权限赋予es用户
chown -R es:es elasticsearch-7.12.0
#切换到es用户
su es
#进入到elasticsearch-7.12.0/bin目录,执行启动命令, 后面-d为后台启动
./elasticsearch -d


6、访问http://127.0.0.1:9200即可查看elasticsearch是否启动成功


{
  "name" : "CollectorDBCluster-1",
  "cluster_name" : "CollectorDBCluster",
  "cluster_uuid" : "J2LyQWfdTeeBN0dcdWpgqw",
  "version" : {
    "number" : "7.12.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "78722783c38caa25a70982b5b042074cde5d3b3a",
    "build_date" : "2021-03-18T06:17:15.410153305Z",
    "build_snapshot" : false,
    "lucene_version" : "8.8.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}


7、修改apache-skywalking-apm-bin-es7\config\application.yml


storage:
  # 默认存储是h2,这里改为elasticsearch7
  selector: ${SW_STORAGE:elasticsearch7}
  elasticsearch7:
    nameSpace: ${SW_NAMESPACE:"CollectorDBCluster"}
    #这里localhost改为elasticsearch7的安装地址
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:127.0.0.1:9200}


8、切换到apache-skywalking-apm-bin-es7\bin目录,并执行启动命令


./oapService.sh
./webappService.sh
./startup.sh


9、访问http://127.0.0.1:8080/查看是否启动成功


微信图片_20220519172144.png


skywalking


10、Skywalking搭建好之后,我们这里说明在开发环境中,把agent通过IDEA配置到每个微服务中,配置-Dskywalking.agent.service_name为微服务的名称


微信图片_20220519172147.png


image.png


微信图片_20220519172150.png


image.png


-javaagent:D:\DevTools\Skywalking\agent\skywalking-agent.jar -Dskywalking.agent.service_name=gitegg-gateway -Dskywalking.collector.backend_service=127.0.0.1:11800


11、配置好之后启动微服务,打开http://127.0.0.1:8080 ,点击拓扑图可以看到整个微服务的关系


微信图片_20220519172153.png


拓扑图


微信图片_20220519172156.png


追踪

相关实践学习
分布式链路追踪Skywalking
Skywalking是一个基于分布式跟踪的应用程序性能监控系统,用于从服务和云原生等基础设施中收集、分析、聚合以及可视化数据,提供了一种简便的方式来清晰地观测分布式系统,具有分布式追踪、性能指标分析、应用和服务依赖分析等功能。 分布式追踪系统发展很快,种类繁多,给我们带来很大的方便。但在数据采集过程中,有时需要侵入用户代码,并且不同系统的 API 并不兼容,这就导致了如果希望切换追踪系统,往往会带来较大改动。OpenTracing为了解决不同的分布式追踪系统 API 不兼容的问题,诞生了 OpenTracing 规范。OpenTracing 是一个轻量级的标准化层,它位于应用程序/类库和追踪或日志分析程序之间。Skywalking基于OpenTracing规范开发,具有性能好,支持多语言探针,无侵入性等优势,可以帮助我们准确快速的定位到线上故障和性能瓶颈。 在本套课程中,我们将全面的讲解Skywalking相关的知识。从APM系统、分布式调用链等基础概念的学习加深对Skywalking的理解,从0开始搭建一套完整的Skywalking环境,学会对各类应用进行监控,学习Skywalking常用插件。Skywalking原理章节中,将会对Skywalking使用的agent探针技术进行深度剖析,除此之外还会对OpenTracing规范作整体上的介绍。通过对本套课程的学习,不止能学会如何使用Skywalking,还将对其底层原理和分布式架构有更深的理解。本课程由黑马程序员提供。
相关文章
|
9月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1380 3
|
7月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
7月前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
1280 2
Spring Boot 3.x 微服务架构实战指南
|
9月前
|
负载均衡 监控 Java
微服务稳定性三板斧:熔断、限流与负载均衡全面解析(附 Hystrix-Go 实战代码)
在微服务架构中,高可用与稳定性至关重要。本文详解熔断、限流与负载均衡三大关键技术,结合API网关与Hystrix-Go实战,帮助构建健壮、弹性的微服务系统。
904 1
微服务稳定性三板斧:熔断、限流与负载均衡全面解析(附 Hystrix-Go 实战代码)
|
SpringCloudAlibaba API 开发者
新版-SpringCloud+SpringCloud Alibaba
新版-SpringCloud+SpringCloud Alibaba
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
576 1
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
人工智能 SpringCloudAlibaba 自然语言处理
SpringCloud Alibaba AI整合DeepSeek落地AI项目实战
在现代软件开发领域,微服务架构因其灵活性、可扩展性和模块化特性而受到广泛欢迎。微服务架构通过将大型应用程序拆分为多个小型、独立的服务,每个服务运行在其独立的进程中,服务与服务间通过轻量级通信机制(通常是HTTP API)进行通信。这种架构模式有助于提升系统的可维护性、可扩展性和开发效率。
5331 2
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
3180 13
Spring Cloud Alibaba:一站式微服务解决方案
|
SpringCloudAlibaba 负载均衡 Dubbo
【SpringCloud Alibaba系列】Dubbo高级特性篇
本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
2044 7
【SpringCloud Alibaba系列】Dubbo高级特性篇