SpringBoot(48)-使用 SkyWalking 进行分布式链路追踪

Spring Boot(48)- 使用 SkyWalking 进行分布式链路追踪

介绍

在分布式系统中,了解各个服务之间的调用关系和性能表现是非常重要的。SkyWalking 是一款开源的分布式系统监控与分析平台,能够帮助我们实现分布式系统的链路追踪、性能监控和故障排查。本教程将介绍如何使用 Apache SkyWalking 进行分布式链路追踪,帮助我们深入了解分布式系统的运行情况。

前置知识

  1. Java 编程基础
  2. SpringBoot 应用开发、微服务架构概念
  3. Skywalking 核心概念

准备工作

  1. 下载并安装 Apache SkyWalking 服务器。
  2. 配置 Alibaba SkyWalking 服务器。
  3. 创建一个基本的 Spring Boot 应用,用于进行链路追踪实验。

步骤一:安装和配置 SkyWalking 服务器

  1. 下载 SkyWalking 服务器安装包。
  2. 解压安装包到指定目录。
  3. 配置 SkyWalking 服务器的相关参数。
    本文是用 v9.0.0 版本为例
    进入 SkyWalking 官方网站下载页面,点击 tar 资源下载
    在这里插入图片描述
    目录结构如下:
    在这里插入图片描述
    进入 bin 执行,执行 bash startup.sh (如果是 Windows ,执行 startup.bat)

访问 localhost:8080 ,正常访问表示启动成功。
在这里插入图片描述
相比 6.X、7.X,新页面还是可以的。

步骤二:编写 Spring Boot 应用

  1. 添加 SkyWalking 依赖到 Spring Boot 项目中。
<dependency><groupId>org.apache.skywalking</groupId><artifactId>apm-toolkit-trace</artifactId><version>9.0.0</version>
</dependency>
  1. 配置 Spring Boot 应用的 SkyWalking 连接信息。
    application.properties 文件配置如下:
spring.application.name=skywalking-quickstart
# 应用端口号
server.port=8081
# SkyWalking 配置
skywalking.collector.backend_service=127.0.0.1:11800
skywalking.trace.ignore_path=/css,/js,/images
  1. 下载 Skywalking Agent
    Skywalking 通过 Agent 的方式上报链路数据, 所以需要下载对应版本 Agent ,本文下载 V9.0.0[tar]。
    在这里插入图片描述
    解压后目录如下所示:
    在这里插入图片描述
    重点关注 skywalking-agent.jar 的全路径, 比如本文的地址是: /Users/murphy/Downloads/skywalking-agent/skywalking-agent.jar

  2. IDEA 配置 启动参数
    如何在IDEA 中配置 java agent 的启动参数呢?如下所示

打开 IntelliJ IDEA,并打开你的 Spring Boot 项目。
在菜单栏中选择 “Run” -> “Edit Configurations…”。
在弹出的窗口中,选择你的 Spring Boot 应用程序的运行/调试配置。
在右侧的 “Configuration” 选项卡中,找到 “VM options” 输入框。
在 “VM options” 输入框中输入以下内容

-javaagent:/Users/murphy/Downloads/skywalking-agent/skywalking-agent.jar

在这里插入图片描述

  1. 编写一个验证接口
import org.apache.skywalking.apm.toolkit.trace.ActiveSpan;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class MyController {@GetMapping("/hello")public String hello() {// 手动触发链路信息的上传ActiveSpan.tag("tag_key", "tag_value");return "Hello World!";}
}
  1. 启动 Spring Boot 应用,使其将调用链信息发送到 SkyWalking 服务器。
    访问接口 localhost:8081/hello 。

步骤三:查看分布式链路追踪结果

  1. 登录 SkyWalking 控制台,查看应用的调用链信息和性能指标。
    在这里插入图片描述

  2. 观察调用链路图,了解各个服务之间的调用关系和性能瓶颈。
    在这里插入图片描述

常见问题及解答

  1. 问题:SkyWalking 服务器启动失败。
    解答:检查 SkyWalking 服务器的配置和环境是否正确,确保端口未被占用,默认是 8080端口。

  2. 问题:应用的调用链信息未显示在 SkyWalking 控制台。
    解答:检查应用的 SkyWalking 配置是否正确,尤其是 Skywalking Agent 的版本和路径是否正确 , 确保连接信息和应用名称配置无误。

总结

通过本教程,我们学习了如何使用 Alibaba SkyWalking 进行分布式链路追踪。SkyWalking 提供了强大的分布式系统监控能力,能够帮助我们深入了解分布式系统的运行情况,及时发现和解决性能问题。

最后,贴上项目源码地址:d48-skywalking

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/790601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用minikube安装使用单机版K8S(docker)

前置&#xff1a;作为一个开发&#xff0c;工作之余想玩一下k8s&#xff0c;但是搭建成本太高&#xff0c;所以就找到了minikube这个工具&#xff0c;快速搭建单机版k8s&#xff0c;下面是个人搭建流程&#xff0c;基于centos7&#xff0c;仅供参考。 1.下载kubectl&#xff0…

ES学习日记(十)-------Java操作ES之连接客户端

Elasticsearch有两种连接方式: transport、rest。transport 通过TCP方式访问ES(只支持iava)&#xff0c;rest 方式通过http API 访问ES(没有语言限制)。 ES官方建议使用Iest 方式&#xff0c;transport 在7.8 版本中不建议使用&#xff0c;在8.x的版本中废弃。你可以用Java客户…

Java23种设计模式

本文主要是对Java中一些常用的设计模式进行讲解 后期会进行不断的更新&#xff0c;欢迎浏览 23种设计模式 创建型模式&#xff0c;共五种&#xff1a;工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式。结构型模式&#xff0c;共七种&#xff1a;适配器模式、桥接…

使用 Flume 将 CSV 数据导入 Kafka:实现实时数据流

使用 Flume 将 CSV 数据导入 Kafka&#xff1a;实现实时数据流 文介绍了如何使用 Apache Flume 将 CSV 格式的数据从本地文件系统导入到 Apache Kafka 中&#xff0c;以实现实时数据流处理。通过 Flume 的配置和操作步骤&#xff0c;我们可以轻松地将数据从 CSV 文件中读取并发…

RT-Thread下使用NTP服务器获取时间并同步到硬件RTC

单片机:STM32F407VET6 实现功能:通过ntp服务器获取时间并同步到硬件RTC上 1.配置NTP相关参数 1.1打开netutils相关软件包 1.2 关闭软件RTC相关配置 参考资料:RT-Thread中使用NTP自动更新时间_rtthread ntp-CSDN博客 2.配置硬件RTC 2.1 在ENV里面使能硬件RTC 2.2使用STM32C…

日志服务 HarmonyOS NEXT 日志采集最佳实践

作者&#xff1a;高玉龙&#xff08;元泊&#xff09; 背景信息 随着数字化新时代的全面展开以及 5G 与物联网&#xff08;IoT&#xff09;技术的迅速普及&#xff0c;操作系统正面临前所未有的变革需求。在这个背景下&#xff0c;华为公司自主研发的鸿蒙操作系统&#xff08…

idea maven 打包 内存溢出 报 GC overhead limit exceeded -> [Help 1]

idea 使用maven打包 报GC overhead limit exceeded -> [Help 1] 解决方法&#xff1a; 打开settings -> 点开如同所示 将 vm Options 参数 设为 -Xmx8g

双链表算法库构建

v1.0 : 模仿贺利坚老师, 进行基本构建 贺老师链接:数据结构之自建算法库——双链表_双链表画法-CSDN博客 我的解析博客:双链表的存储结构_p (*q)->next;-CSDN博客 库函数: //(1)初始化双链表 void InitDoubleLinkList(DoubleLinkList *&L);//(2)输出双链表 void Dispal…

Pots(DFS BFS)

//新生训练 #include <iostream> #include <algorithm> #include <cstring> #include <queue> using namespace std; typedef pair<int, int> PII; const int N 205; int n, m; int l; int A, B, C; int dis[N][N];struct node {int px, py, op…

解决虚拟机centos8无法连接外网,ping: www.baidu.com: 未知的名称或服务

设置的虚拟机刚开还是好好的&#xff0c;改完hostname重启后就连不上网了 ping百度时显示未知的名称或服务。 1.找到虚拟机的IP(NAT模式的) 编辑-->虚拟网络编辑器 可以看到我的子网IP为192.168.47.0 2.编辑网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-XXXXX…

SpringCloud学习(1)-consul

consul下载安装及使用 1.consul简介 Consul是一种开源的、分布式的服务发现和配置管理工具&#xff0c;能够帮助开发人员构建和管理现代化的分布式系统。它提供了一套完整的功能&#xff0c;包括服务注册与发现、健康检查、KV存储、多数据中心支持等&#xff0c;可以帮助开发人…

Redis的高可用(主从复制、哨兵模式、集群)的概述及部署

目录 一、Redis主从复制 1、Redis的主从复制的概念 2、Redis主从复制的作用 ①数据冗余&#xff1a; ②故障恢复&#xff1a; ③负载均衡&#xff1a; ④高可用基石&#xff1a; 3、Redis主从复制的流程 4、Redis主从复制的搭建 4.1、配置环境以及安装包 4.2所有主机…

设计模式-行为型-中介者模式-Mediator

同事抽象类 public abstract class Colleague {private Mediator mediator;public abstract void play(String data); } 视频同事 public class AudioColleague extends Colleague {public void play(String data) {System.out.println("画外音是&#xff1a;" d…

最新408试卷分析+备考经验分享

408出题再糟糕&#xff0c;你是不是还是要考&#xff1f; 别管出题人出多刁钻的题&#xff0c;大家拿到的卷子都是一样的&#xff0c;要难就都难&#xff0c;要刁钻就一起g... 所以再潜心钻研出题规律或出题套路&#xff0c;不如多花些时间去多复习巩固几遍知识点&#xff01…

3D雷达和相机联合标定:一种灵活且精确的基于目标的外参标定方法

3D雷达和相机联合标定&#xff1a;一种灵活且精确的基于目标的外参标定方法 论文链接&#xff1a;https://arxiv.org/pdf/2307.15264.pdf 附赠自动驾驶学习资料和量产经验&#xff1a;链接 摘要 本文介绍了3D雷达和相机联合标定&#xff1a;一种灵活且精确的基于目标的外参…

WPF中动画教程(DoubleAnimation的基本使用)

实现效果 今天以一个交互式小球的例子跟大家分享一下wpf动画中DoubleAnimation的基本使用。该小球会移动到我们鼠标左键或右键点击的地方。 该示例的实现效果如下所示&#xff1a; 页面设计 xaml如下所示&#xff1a; <Window x:Class"AnimationDemo.MainWindow&qu…

vue使用iview导航栏Menu activeName不生效

activeName不生效 一、问题一、解决方案&#xff0c; 一、问题 根据ivew官网的提示&#xff0c;设置了active-name和open-names以后&#xff0c;发现不管是设置静态是数据还是设置动态的数据&#xff0c;都不生效 一、解决方案&#xff0c; 在设置动态名称的时候&#xff0c…

【Erlang】Linux(CentOS7)安装Erlang和RabbitMQ

一、系统环境 查版本对应&#xff0c;CentOS-7&#xff0c;选择Erlang 23.3.4&#xff0c;RabbitMQ 3.9.16 二、操作步骤 安装 Erlang repository curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash安装 Erlang package s…

【SpringCloud】Ribbon 负载均衡

目 录 一.负载均衡原理二.源码跟踪1. LoadBalancerIntercepor2. LoadBalancerClient3. 负载均衡策略 IRule4. 总结 三.负载均衡策略1.负载均衡策略2.自定义负载均衡策略 四.饥饿加载 在 order-service 中 添加了 LoadBalanced 注解&#xff0c;即可实现负载均衡功能&#xff0c…

【Error】Uncaught TypeError: Cannot read properties of undefined (reading ‘get’)

报错原因&#xff1a; 返回值为undefined 解决&#xff1a; vue3可用&#xff1f;