SkyWalking+Springboot实战(最详细)

06-01 1230阅读

本篇文章记录了作者在0到1学习SkyWalking的过程,记录了对SkyWalking的部署,学习,使用Bug解决等等过程

一、什么是SkyWalking

官方文档:

Apache SkyWalkinghttps://skywalking.apache.org/

SkyWalking+Springboot实战(最详细)

SkyWalking 是一个开源的分布式追踪、性能监控和诊断平台,特别适合用于管理微服务、云原生以及容器化(如 Kubernetes 和 Docker)架构下的性能问题。它通过提供全面的功能集来帮助用户有效地监控和优化他们的应用程序和服务。以下是 SkyWalking 的核心特性和组成部分:

1、核心特性

  • 追踪(Tracing):SkyWalking 能够对分布式系统中的请求进行全链路追踪,记录请求从进入系统到离开系统的整个流程,包括每个服务的响应时间、调用路径和异常信息。
  • 指标(Metrics):除了追踪之外,SkyWalking 还可以监控各种关键性能指标(KPIs),例如CPU使用率、内存消耗、请求响应时间等,帮助了解系统运行状态。
  • 日志(Logs)和告警(Alert):集成日志管理和告警机制,确保在出现异常情况时能够及时通知相关人员。
  • 支持多种语言和框架:支持Java、.Net、Node.js、Python等多种编程语言,并能与主流的服务网格(如Istio)及中间件(如Kafka、Redis、MySQL)无缝集成。

    2、组成部分

    1. Agent:部署在应用服务中,负责收集性能数据(如tracing和metric数据)并发送给SkyWalking OAP服务器。
    2. OAP(Observability Analysis Platform)服务器:是SkyWalking的核心,负责接收来自Agent的数据,分析这些数据,并将结果存储起来供查询使用。
    3. UI界面:提供了基于Web的控制台,使得开发人员和运维人员能够方便地查看服务调用链、性能数据、告警信息等。
    4. Storage:支持多种存储后端(如Elasticsearch、MySQL、H2等),用于持久化处理后的数据,以便后续的查询、分析和报告生成。

    通过上述组件的协同工作,SkyWalking为用户提供了一个强大的工具集,以实现从应用程序到基础设施的全栈可观测性,从而显著提升复杂场景下的系统稳定性和可维护性。特别是在高并发、复杂的微服务架构下,SkyWalking的链路追踪功能对于故障排查、性能瓶颈识别、服务依赖关系分析等方面显得尤为重要。

    3、应用场景

    • 性能优化:通过追踪请求在各个服务中的执行时间、延迟等信息,帮助识别性能瓶颈。例如,可以发现是数据库查询还是网络延迟导致了响应时间过长。
    • 故障诊断:当分布式系统中出现错误时,链路追踪可以帮助快速定位问题的根源,了解错误是在哪个服务或哪个环节发生的。
    • 服务依赖关系分析:展示不同服务之间的调用关系,帮助团队理解服务间的依赖性,从而优化服务架构,减少不必要的复杂性和冗余。
    • 系统监控:不仅限于故障排查,链路追踪还能够实时监控系统的运行状态,如各服务的响应时间、调用频率和错误率,及时发现异常并采取措施。

      4、为什么链路追踪对分布式系统至关重要?

      在分布式系统中,服务的数量和复杂性往往使得问题的定位变得非常困难。以下是链路追踪至关重要的几个原因:

      1. 跨服务请求的可视化:链路追踪提供了一个统一的视角来观察跨多个服务的请求流动情况,这在传统的单机应用中是相对简单的任务,但在微服务架构中却变得极为复杂。
      2. 准确的问题定位:在分布式环境中,一个用户请求可能会经过多个服务,每个服务都可能成为潜在的故障点。链路追踪能够帮助准确定位到具体的故障服务或操作,而不是盲目地检查所有可能的地方。
      3. 性能瓶颈的识别:通过对请求处理时间和路径的详细记录,链路追踪能够帮助识别出哪些服务或操作是最耗时的,从而有针对性地进行优化。
      4. 服务间依赖的理解:随着服务数量的增长,理解服务间的相互依赖变得越来越困难。链路追踪能够清晰地展示这些依赖关系,有助于优化整个系统的架构设计。
      5. 提升系统的可维护性和稳定性:通过及时发现问题、优化性能瓶颈以及更好地理解服务间的依赖,链路追踪有助于提高系统的整体稳定性和可维护性,尤其是在高并发和复杂的业务场景下尤为重要。

      二、部署SkyWalking OAP和SkyWalking UI

      这里提供两种部署方式,一个是解压压缩包启动其Java服务部署,一个是Docker部署。

      这边建议docker部署,因为比较便捷,部署和关闭服务都比较方便

      但是第一种的话,定制化灵活性更高一些

      1、部署其内置Java服务

      1.下载SkyWalking APM 压缩包

      手动下载

      Downloads | Apache SkyWalkingSkyWalking+Springboot实战(最详细)

      SkyWalking+Springboot实战(最详细)

      链接下载

      https://dlcdn.apache.org/skywalking/10.2.0/apache-skywalking-apm-10.2.0.tar.gzhttps://dlcdn.apache.org/skywalking/10.2.0/apache-skywalking-apm-10.2.0.tar.gz

      2.解压压缩包

      SkyWalking+Springboot实战(最详细)

      随便上传到服务器某个路径,自己找得到就行

      SkyWalking+Springboot实战(最详细)

      cd /www/wwwroot/skywalking
      tar -zxvf apache-skywalking-apm-10.2.0.tar.gz

      查看bin目录下的文件

      cd /www/wwwroot/skywalking/apache-skywalking-apm-bin/bin

      SkyWalking+Springboot实战(最详细)

      一般来说linux启动应用的都是

      ./startup.sh

      SkyWalking+Springboot实战(最详细)

      3.修改配置文件

      修改webapp配置

      进入webapp目录下修改端口

      SkyWalking+Springboot实战(最详细)

      SkyWalking+Springboot实战(最详细)

      http://IP+:12800
      修改skywalking服务配置

      进入config目录下修改一些配置

      SkyWalking+Springboot实战(最详细)

      观察到服务注册这里,默认走的单机模式,下面还有zookeeper、nacos等注册中心,加入需要切换调整上面配置即可,这里我选的默认。

      假设你需要使用nacos作为配置中心,可以按下述描述进行修改配置

      SkyWalking+Springboot实战(最详细)

      cluster:
        selector: ${SW_CLUSTER:nacos} # 设置为 nacos
        nacos:
          serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"} # 注册的服务名称
          hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848} # Nacos 地址
          namespace: ${SW_CLUSTER_NACOS_NAMESPACE:"public"} # Nacos 命名空间
          contextPath: ${SW_CLUSTER_NACOS_CONTEXT_PATH:""} # Nacos 上下文路径(可选)
          username: ${SW_CLUSTER_NACOS_USERNAME:""} # Nacos 用户名(如果启用了认证)
          password: ${SW_CLUSTER_NACOS_PASSWORD:""} # Nacos 密码(如果启用了认证)
          accessKey: ${SW_CLUSTER_NACOS_ACCESSKEY:""} # Nacos 访问密钥(可选)
          secretKey: ${SW_CLUSTER_NACOS_SECRETKEY:""} # Nacos 秘钥(可选)
          internalComHost: ${SW_CLUSTER_INTERNAL_COM_HOST:""} # 内部通信主机(可选)
          internalComPort: ${SW_CLUSTER_INTERNAL_COM_PORT:-1} # 内部通信端口(可选)

      配置存储数据库:

      SkyWalking+Springboot实战(最详细)

      这里的解释我用AI给大家解释一下:

      SkyWalking+Springboot实战(最详细)

      SkyWalking+Springboot实战(最详细)

      默认是这个banyandb,但是实际上我们使用ES比较多,关于如何使用ES进行配置如下:

      如果想要学习怎么docker部署ES,可以看我下面的博客:

      Springboot中使用Elasticsearch(部署+使用+讲解 最完整)_spring boot elasticsearch-CSDN博客文章浏览阅读8k次,点赞34次,收藏72次。最完整最详细的springboot中使用es,在前面有服务器部署es相关的东西,在后面有使用java的实战,对于实战的方法使用结合官网深度去研究和讲解。在这篇文章前面是实战,后面是具体讲解~~~如果只想实战就只看一和二,深入了解就继续看,在未来还会继续更新对这个实战,还有es技术的更新,几万字大长文。_spring boot elasticsearch https://blog.csdn.net/qq_73440769/article/details/141477177?spm=1001.2014.3001.5502修改 SkyWalking 配置文件:

      storage:
        selector: ${SW_STORAGE:elasticsearch} # 设置为 elasticsearch
        elasticsearch:
          namespace: ${SW_NAMESPACE:""} # 命名空间(可选)
          clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:localhost:9200} # Elasticsearch 地址
          protocol: ${SW_STORAGE_ES_HTTP_PROTOCOL:"http"} # 协议,默认为 http
          connectTimeout: ${SW_STORAGE_ES_CONNECT_TIMEOUT:3000} # 连接超时时间(毫秒)
          socketTimeout: ${SW_STORAGE_ES_SOCKET_TIMEOUT:30000} # 套接字超时时间(毫秒)
          responseTimeout: ${SW_STORAGE_ES_RESPONSE_TIMEOUT:15000} # 响应超时时间(毫秒)
          numHttpClientThread: ${SW_STORAGE_ES_NUM_HTTP_CLIENT_THREAD:0} # HTTP 客户端线程数(默认为 0)
          user: ${SW_ES_USER:""} # 用户名(如果启用了认证)
          password: ${SW_ES_PASSWORD:""} # 密码(如果启用了认证)
          dayStep: ${SW_STORAGE_DAY_STEP:1} # 每个索引的时间跨度(天)
          indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:1} # 每个索引的分片数
          indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:1} # 每个索引的副本数

      SkyWalking+Springboot实战(最详细)

       查看ES状态是否正常:

      ES部署的服务器IP+:9200

      SkyWalking+Springboot实战(最详细)

      4.启动SkyWalking OAP和UI

      开放端口

      SkyWalking+Springboot实战(最详细)

      在一开始我只开启IPv4的端口的时候是没问题的,但是后来重启服务器发现报了下面的错误

      2025-03-31 14:18:11,350 - com.linecorp.armeria.common.Flags - 1738 [main] INFO  [] - verboseExceptions: rate-limit=10 (default)
      2025-03-31 14:18:11,521 - com.linecorp.armeria.common.Flags - 1738 [main] INFO  [] - useEpoll: true (default)
      2025-03-31 14:18:11,560 - com.linecorp.armeria.common.Flags - 1738 [main] INFO  [] - annotatedServiceExceptionVerbosity: unhandled (default)
      2025-03-31 14:18:12,394 - com.linecorp.armeria.common.Flags - 635 [main] INFO  [] - Using Tls engine: OpenSSL BoringSSL, 0x1010107f
      2025-03-31 14:18:12,551 - com.linecorp.armeria.common.util.SystemInfo - 525 [main] INFO  [] - IPv6: disabled (no IPv6 network interface)

      找了很久bug后,我思索我也没开IPv6啊,唯一想到的就是自己监控的服务器部署了小程序,小程序使用的可能是IPv6,索性不继续找配置文件的bug了,向困难低头,我就多开个IPv6的端口,结果问题真就解决了:

      SkyWalking+Springboot实战(最详细)

       配置java环境

      建议先配置环境再启动

      如果启动出现:

      SkyWalking+Springboot实战(最详细)

      下面提供两种配置方式,选择一个即可,建议第二个,如果已经配置了全局java环境可以忽略这一步。

      SkyWalking+Springboot实战(最详细)(1)修改配置文件,指定jdk目录

      SkyWalking+Springboot实战(最详细)

      SkyWalking+Springboot实战(最详细)

      SkyWalking+Springboot实战(最详细)

      替换这两个为你jdk的目录

      (2)配置Java的home位置

      SkyWalking+Springboot实战(最详细)

      SkyWalking+Springboot实战(最详细)

      添加这些配置,根据你的jdk位置为准

      export JAVA_HOME=/www/server/java/jdk-17.0.8/          
      export JRE_HOME=$JAVA_HOME/jre
      export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
      export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

      如果不配置会出现这两个错误

      启动后可以查看日志文件:

      SkyWalking+Springboot实战(最详细)

      SkyWalking+Springboot实战(最详细)

      SkyWalking+Springboot实战(最详细)

       参考如下AI解释:

      SkyWalking+Springboot实战(最详细)

      SkyWalking+Springboot实战(最详细)

      启动服务
      cd /www/wwwroot/skywalking/apache-skywalking-apm-bin/bin
      ./startup.sh

      SkyWalking+Springboot实战(最详细)

      SkyWalking+Springboot实战(最详细)

      查看日志:

      SkyWalking+Springboot实战(最详细)

      查看有无报错,没有报错就是启动成功

      访问:IP+:8902

      SkyWalking+Springboot实战(最详细)

      5.如何关闭服务

      个人觉得,应该也可以写个stop.sh进行自己关闭,不过需要自己去编写配置文件

      SkyWalking+Springboot实战(最详细)

      分别关掉这两个进程,注意PID根据实际的选择

      sudo lsof -i :8902
      sudo lsof -i :12800
      kill -9 +PID

      2、docker部署

      1. 创建Docker网络(便于容器间通信)

      docker network create skywalking-net

      2. 部署SkyWalking OAP Server

      docker run -d --name skywalking-oap \
        --network skywalking-net \
        --restart always \
        -e SW_STORAGE=elasticsearch \
        -e SW_STORAGE_ES_CLUSTER_NODES=IP:9200 \
        -p 11800:11800 \
        -p 12800:12800 \
        apache/skywalking-oap-server:10.2.0

      建议部署完oap后过一会再部署ui,因为如果oap没完全启动的话,ui也会因为连不上oap报错,直到oap完全启动后ui才正常

      3. 部署SkyWalking UI

      docker run -d --name skywalking-ui \
        --link skywalking-oap \
        --network skywalking-net \
        --restart always \
        -e SW_OAP_ADDRESS=http://skywalking-oap:12800 \
        -p 10800:8080 \
        apache/skywalking-ui:10.2.0

       记得开启上面这些端口,还有注意下面部署UI的地方有个-link连接别漏了

      如果希望自定义oap的内存,不希望他启动占用内存太大,可以参考下面的指令:

      docker run -d --name skywalking-oap \
        --network skywalking-net \
        --restart always \
        -e SW_STORAGE=elasticsearch \
        -e SW_STORAGE_ES_CLUSTER_NODES=IP:9200 \
        -e JAVA_OPTS="-Xms512m -Xmx1g" \
        -p 11800:11800 \
        -p 12800:12800 \
        apache/skywalking-oap-server:10.2.0
      

      4.验证部署

      1. 访问UI:http://服务器IP:10800

      2. 检查OAP日志:

      docker logs -f skywalking-oap
      docker logs -f skywalking-ui

      到这里基本上就结束了,后续有些注意事项

      5.注意

      • 确保ES服务已启用且网络可达

      • 如果ES有认证,需添加以下环境变量:

        -e SW_ES_USER=用户名 \
        -e SW_ES_PASSWORD=密码 \
        • 默认使用ES索引分片数1、副本数1,如需调整可添加:

          -e SW_STORAGE_ES_INDEX_SHARDS_NUMBER=分片数 \
          -e SW_STORAGE_ES_INDEX_REPLICAS_NUMBER=副本数 \

          6.怎么停止

          docker stop skywalking-oap skywalking-ui
          docker rm skywalking-oap skywalking-ui
          docker network rm skywalking-net

          分别的意思是:停止容器运行,删除容器,删除容器的网络

          7.怎么启动容器

          docker start skywalking-oap skywalking-ui
          docker restart skywalking-oap skywalking-ui

          分别是启动和重启

          三、Skywalking-agent代理Java服务

          1、下载Skywalking-agent

          Downloads | Apache SkyWalkingSkyWalking+Springboot实战(最详细)

          SkyWalking+Springboot实战(最详细)

          2、下载后解压进服务器

          SkyWalking+Springboot实战(最详细)

          cd /www/wwwroot/skywalking
          tar -zxvf apache-skywalking-java-agent-9.4.0.tgz

          SkyWalking+Springboot实战(最详细)

          3、修改代理配置 agent.config

          SkyWalking+Springboot实战(最详细)

          可以通过ctrl+F定位到这两个配置:

          agent.service_name
          collector.backend_service

          修改服务名称

          SkyWalking+Springboot实战(最详细)

          SkyWalking+Springboot实战(最详细) 我会起有具体意义的名称

          SkyWalking+Springboot实战(最详细)

          4、准备java服务

          SkyWalking+Springboot实战(最详细)

          这个就是我自己的jar服务,进行配置代理检测

          SkyWalking+Springboot实战(最详细)

          nohup /www/server/java/jdk-17.0.8/bin/java \
            -Xmx1024M \
            -Xms256M \
            -javaagent:/www/wwwroot/skywalking/skywalking-agent/skywalking-agent.jar \
            -DSW_SERVICE_NAME=quick-server \
            -jar /www/wwwroot/quick_pickup_java/quick-server-0.0.1-SNAPSHOT.jar \
            > /www/wwwroot/quick_pickup_java/app.log 2>&1 &

          或者在启动命令中添加:

          /www/server/java/jdk-17.0.8/bin/java \
            -Xmx1024M \
            -Xms256M \
            -javaagent:/www/wwwroot/skywalking/skywalking-agent/skywalking-agent.jar \
            -DSW_SERVICE_NAME=quick-server \
            -jar /www/wwwroot/quick_pickup_java/quick-server-0.0.1-SNAPSHOT.jar

          AI解释:

          SkyWalking+Springboot实战(最详细)

          5、启动Java服务

          启动服务后出现:

          SkyWalking+Springboot实战(最详细)

          至此完成部署。

          四、UI使用教程

          大家可以查看官方中文文档的这个UI介绍,我觉得这里讲的很详细:

          https://github.com/SkyAPM/document-cn-translation-of-skywalking/blob/master/docs/zh/8.0.0/ui/README.mdSkyWalking+Springboot实战(最详细)

          这里我主要讲几点:

          1、常规服务-服务

          SkyWalking+Springboot实战(最详细)

          仪表盘

          SkyWalking+Springboot实战(最详细)

          主要关心这四点:节点成功率,平均响应时间,加载时间,整体服务性能,根据上面几个指标去链路追踪。

          拓跋结构

          SkyWalking+Springboot实战(最详细)

          这里展示你的系统的总体拓跋结构

          SkyWalking+Springboot实战(最详细)

          链路

          SkyWalking+Springboot实战(最详细)

          其实你会发现在仪表盘那边也可以进入具体每个接口的链路追踪

          SkyWalking+Springboot实战(最详细)

          SkyWalking+Springboot实战(最详细)SkyWalking+Springboot实战(最详细)

          2、常规服务-虚拟数据库

          SkyWalking+Springboot实战(最详细)

          点击即可进行具体的链路追踪

          SkyWalking+Springboot实战(最详细)

          2、常规服务-虚拟缓存

          SkyWalking+Springboot实战(最详细)

          SkyWalking+Springboot实战(最详细)

          4、常规服务-虚拟消息队列

          SkyWalking+Springboot实战(最详细)

          5、SkyWalking自监控

          SkyWalking+Springboot实战(最详细)

          上面可以看出,SkyWalking很强势的将你的服务链路到的具体服务都链路分析出来

          五、SpingBoot代码中自定义追踪

          1、为什么

          比如说我要追踪这个接口:

          SkyWalking+Springboot实战(最详细)

          SkyWalking+Springboot实战(最详细)

          这里我就可以进行一个链路的追踪,可以看到这个接口的一些链路信息,但是我如果想要看到这个方法里面的一些具体的信息,结果可以看到

          SkyWalking+Springboot实战(最详细)

          SkyWalking+Springboot实战(最详细)

          发现系统中是默认不会链路追踪代码里面的一些业务信息,所以这里就需要我们在后端代码中加一些配置信息进行自定义追踪接口的信息。

          2、引入依赖

          大家可以去选择自己喜欢的版本:

          https://mvnrepository.com/artifact/org.apache.skywalking/apm-toolkit-trace/9.4.0https://mvnrepository.com/artifact/org.apache.skywalking/apm-toolkit-trace/9.4.0

          
              org.apache.skywalking
              apm-toolkit-trace
              9.4.0
          

           SkyWalking+Springboot实战(最详细)

          SkyWalking+Springboot实战(最详细)

          3、选择链路的接口

          SkyWalking+Springboot实战(最详细)

          4、部署服务器观察

          SkyWalking+Springboot实战(最详细)

          出现我们刚刚定义的链路名称,不过点击可以发现

          SkyWalking+Springboot实战(最详细)

          SkyWalking+Springboot实战(最详细)

          5、对查看链路的内容添加注解和 API进行增强

          SkyWalking+Springboot实战(最详细)

          SkyWalking+Springboot实战(最详细)

              @Trace(operationName="user-store-getByClassification")
              @Tags({
                      @Tag(key = "classificationId", value = "arg[0]") // 动态获取 classificationId
              })
              @Override
              public List selectByClassification(Long classificationId) {
                  String key = RedisConstant.STORE_CLASSIFICATION_ + classificationId;
                  try {
                      // 查询 Redis 中是否存在店铺数据
                      List storeVOList = (List) redisTemplate.opsForValue().get(key);
                      if (storeVOList != null && !storeVOList.isEmpty()) {
                          log.info("从 Redis 中获取店铺数据");
                          ActiveSpan.tag("result", "Redis hit"); // 记录 Redis 命中
                          return storeVOList;
                      }
                      // 查询数据库
                      storeVOList = iStoreService.getByClassification(classificationId);
                      if (storeVOList == null || storeVOList.isEmpty()) {
                          // 防止缓存穿透
                          List cacheThoughtStoreVOList = getCacheThoughtStoreVOList();
                          redisTemplate.opsForValue().set(key, cacheThoughtStoreVOList, 5L, TimeUnit.MINUTES);
                          ActiveSpan.tag("result", "Cache penetration prevention"); // 记录缓存穿透
                          return cacheThoughtStoreVOList;
                      }
                      // 将查询结果存储到 Redis 中
                      redisTemplate.opsForValue().set(key, storeVOList);
                      ActiveSpan.tag("result", "DB query success"); // 记录数据库查询成功
                      return storeVOList;
                  } catch (Exception e) {
                      // 记录错误信息到链路中
                      ActiveSpan.error(e); // 记录异常
                      ActiveSpan.tag("error", e.getMessage()); // 自定义错误标签
                      log.error("查询店铺数据失败,分类ID: {}, 错误信息: {}", classificationId, e.getMessage(), e);
                      throw new StoreException("根据店铺类型分类id查询店铺接口出错");
                  }
              }

          6、关键点解析

          1. @Trace 注解
          • @Trace(operationName = "user-store-getByClassification") 定义了链路操作名称。
          • 这会使该方法成为一个独立的 Trace 节点,SkyWalking 会自动记录该方法的执行时间。
            2. @Tags 和 @Tag 注解
            • 使用 @Tags 和 @Tag 注解可以动态地将方法参数或返回值绑定到链路中。
            • 在这个例子中:
              • @Tag(key = "classificationId", value = "arg[0]") 动态获取方法的第一个参数(即 classificationId)。
                3. ActiveSpan API
                • ActiveSpan 是 SkyWalking 提供的一个工具类,用于在运行时动态向链路中添加标签或记录错误。
                • 常用方法:
                  • ActiveSpan.tag(String key, String value):添加自定义标签。
                  • ActiveSpan.error(Throwable throwable):记录异常信息。
                  • ActiveSpan.error():标记当前 Span 为错误状态。
                    4. 记录 Redis 和数据库查询结果
                    • 使用 ActiveSpan.tag("result", "xxx") 记录 Redis 命中、缓存穿透、数据库查询成功等信息。
                    • 这些标签可以帮助你在 SkyWalking UI 中快速定位问题。
                      5. 异常处理
                      • 捕获异常后,调用 ActiveSpan.error(e) 和 ActiveSpan.tag("error", e.getMessage()) 将错误信息记录到链路中。
                      • 同时,打印日志以便进一步排查问题。

                        7、线上测试

                        说到这个线上测试,其实还是我错误的在一个未拦截用户线程的接口里面用线程TreadLocal去获取用户ID用来测试自己写的SkyWalkinh能不能输出日志,在上面案例可以看到我用到的用户的ID来放在下面这个地方:

                        SkyWalking+Springboot实战(最详细)

                        线上事故链路如下:

                        SkyWalking+Springboot实战(最详细)

                        SkyWalking+Springboot实战(最详细)

                        SkyWalking+Springboot实战(最详细)

                        修改完成后,发现这些具体的属性都有了:

                        SkyWalking+Springboot实战(最详细)

                        SkyWalking+Springboot实战(最详细)

                        六、参考

                        参考这些大佬的文章:

                        分布式监控Skywalking安装及使用教程(保姆级教程)-CSDN博客文章浏览阅读8.9k次,点赞47次,收藏91次。本文主要讲解分布式链路追踪监控系统Skywalking的安装及使用教程,从0到1,图文并茂的保姆级教程。SkyWalking是一款用于分布式系统跟踪和性能监控的开源工具。它可以帮助开发人员了解分布式系统中不同组件之间的调用关系和性能指标,从而进行故障排查和性能优化。它支持多种语言和框架,包括Java、.NET、Node.js等。它通过在应用程序中插入代理或使用特定的SDK来收集跟踪数据,并将这些数据发送到SkyWalking服务器进行分析和展示。分布式跟踪。_skywalking安装 https://blog.csdn.net/chang_mao/article/details/135998660?spm=1001.2014.3001.5502

                        【第二十二篇】商城系统-Skywalking链路追踪【商城系统完结篇】-腾讯云开发者社区-腾讯云  Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品,它同时吸收了Zipkin /Pinpoint /CAT 的设计思路。特点是:支持多种插件,UI功能较强,支持非侵入式埋点。目前使用厂商最多,版本更新较快。https://cloud.tencent.com/developer/article/2135248?policyId=1003

                        SkyWalking入门搭建【apache-skywalking-apm-10.0.0】_skywalking10.0.0版本部署-CSDN博客文章浏览阅读3.4k次,点赞27次,收藏38次。SkyWalking在Java中使用的是字节方式植入,是完全无代码侵入的VM options 添加,就是刚刚上面下的 java-agentEnvironment variables 添加,指定 SkyWalking的地址效果图操作步骤(idea 2023,其它版本百度操作)配置好后,启动服务会看到下面的日志,就说明 java-agent.jar 读取到了随机访问几下服务的接口,再去刷新SkyWalking 控制台,就可以看到了。_skywalking10.0.0版本部署 https://blog.csdn.net/Tomwildboar/article/details/140589444

                        还有通义,DeepSeek,ChatGPT,文心一言几位大神。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码