设为首页 加入收藏

TOP

微服务组件---- Spring Cloud Alibaba 链路追踪 skywalking 详解(一)
2023-07-25 21:28:35 】 浏览:61
Tags:---- Spring Cloud Alibaba 路追踪 skywalking 详解

skywalking是什么

【1】skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统,提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。

【2】主要流程为 采集数据——》传输数据——》存储数据——》分析数据——》监控报警

 

Skywalking整体架构

【1】图示:

  

 

 

 

【2】整个架构分成四部分:

  1.上部分Agent :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器;

  2.下部分 SkyWalking OAP :负责接收Agent发送的Tracing数据信息,然后进行分析(Analysis Core),存储到外部存储器(Storage),最终提供查询(Query)功能;

  3.右部分Storage:Tracing数据存储,目前支持ES、MySQL、Sharding Sphere、TiDB、H2多种存储器,目前采用较多的是ES,主要考虑是SkyWalking开发团队自己的生产环境采用ES为主;

  4.左部分SkyWalking UI:负责提供控制台,查看链路等等;

 

SkyWalking中三个概念【搭建的话可以看 skywalking的搭建笔记

【1】服务(Service) :表示对请求提供相同行为的一系列或一组工作负载,在使用Agent时,可以定义服务的名字;

【2】服务实例(Service Instance) :上述的一组工作负载中的每一个工作负载称为一个实例, 一个服务实例实际就是操作系统上的一个真实进程;

【3】端点(Endpoint) :对于特定服务所接收的请求路径, 如HTTP的URI路径和gRPC服务的类名 + 方法签名;

 

SkyWalking的简单使用

【1】通过jar包方式接入

  1)编辑startup.sh脚本启动

#!/bin/sh
# SkyWalking Agent配置
export SW_AGENT_NAME=springboot-skywalking-demo #Agent名字,一般使用`spring.application.name`
export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 #配置 Collector 地址。
export SW_AGENT_SPAN_LIMIT=2000 #配置链路的最大Span数量,默认为 300。
export JAVA_AGENT=-javaagent:/root/skywalking-agent/skywalking-agent.jar
java $JAVA_AGENT -jar springboot-skywalking-demo-0.0.1-SNAPSHOT.jar #jar启动

 

  2)java命令启动

java -javaagent:/root/skywalking-agent/skywalking-agent.jar 
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 
-DSW_AGENT_NAME=springboot-skywalking-demo -jar springboot-skywalking-demo-0.0.1-SNAPSHOT.jar

  3)在IDEA中使用Skywalking

在运行的程序配置jvm参数
-javaagent:E:\SpringCloudAlibaba\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar 
-DSW_AGENT_NAME=springboot-skywalking-demo 
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

 

【2】自定义SkyWalking链路追踪【希望对项目中的业务方法,实现链路追踪,方便我们排查问题

  1)引入依赖

<!-- SkyWalking 工具类 -->
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-trace</artifactId>
    <version>8.11.0</version>
</dependency>

  2)在业务方法中可以TraceContext获取到traceId

@RequestMapping("/list")
public List<User> list(){

    //TraceContext可以绑定key-value
    TraceContext.putCorrelation("name", "fox");
    Optional<String> op = TraceContext.getCorrelation("name");
    log.info("name = {} ", op.get());
    //获取追踪的traceId
    String traceId = TraceContext.traceId();
    log.info("traceId = {} ", traceId);

    return userService.list();
}

  3)注解@Trace将方法加入追踪链路

  4)注解@Tags或@Tag为追踪链路增加其他额外的信息,比如记录参数和返回信息。实现方式:在方法上增加@Tag或者@Tags,示例:

@Trace
@Tag(key = "list", value = "returnedObj")
public List<User> list(){
    return userMapper.list();
}

@Trace
@Tags({@Tag(key = "param", value = "arg[0]"),
        @Tag(key = "user", value = "returnedObj")})
public User getById(Integer id){
    return userMapper.getById(id);
}

 

 

SkyWalking的数据持久化

【1】基于mysql持久化

  1)修改config目录下的application.yml

storage:
  #选择使用mysql   默认使用h2,不会持久化,重启skyWalking之前的数据会丢失
  selector: ${SW_STORAGE:mysql}
  #使用mysq
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇jdbc入门案例学习,java如何连接m.. 下一篇IDEA 一键生成 Maven 依赖关系图..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目