链路追踪SkyWalking

一、SkyWalking的介绍

1、为什么要使用SkyWalking?

微服务的请求会构成一个网状的调用链,如果某一个节点发生异常或超时则整个调用链都会受到影响, 这就导致定位/诊断服务异常变得异常复杂.

2、什么是SkyWalking?

SkyWalking是一个国产的微服务性能监控工具(apm),作用:链路追踪、性能分析、日志采集、告警

二、OAP的安装和启动

1、解压apache-skywalking-apm-9.4.0.tar.gz

注意:不能包含中文路径

2、修改webapp\application.yml

serverPort: ${SW_SERVER_PORT:-18080} #端口号

3、启动和关闭

启动:

双击/bin/startup.bat

关闭:

叉掉黑窗口

三、微服务集成agent

你的 skywalking-agent.jar包地址

-javaagent:D:\SkyWalking\skywalking-agent\skywalking-agent.jar

在skywalking上显示的服务名

-DSW_AGENT_NAME=skywalking-consumer

#你的skywalking-aop-server地址及端口号

-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800

四、持久化追踪数据

1、修改config/application.yml

storage:

selector: ${SW_STORAGE:mysql}

mysql:

properties:

jdbcUrl: ${SW_JDBC_URL:"jdbc:mysql://192.168.61.130:3306/swtest?rewriteBatchedStatements=true&useSSL=false&characterEncoding=UTF-8"}

dataSource.user: ${SW_DATA_SOURCE_USER:root}

dataSource.password: ${SW_DATA_SOURCE_PASSWORD:1111}

2、创建`swtest`数据库

注意:无须建表

3、拷贝mysql的驱动

注意:拷贝到oap-libs目录下

4、重启skywalking

五、自定义链路追踪(追踪service)

1、pom.xml

<!--skywalking 工具类,为了自定义链路追踪-->

<dependency>

<groupId>org.apache.skywalking</groupId>

<artifactId>apm-toolkit-trace</artifactId>

<version>8.5.0</version>

</dependency>

2、添加注解

//将业务方法加入到追踪链路中

@Trace

//为追踪链路增加其额外的信息,比如记录参数和返回信息

@Tags({

@Tag(key = "参数", value = "arg[0]"),

@Tag(key = "返回值", value = "returnedObj")

})

@Override

public String testTrace(String str) {

return "hello, " + str;

}

六、性能分析

... ...

七、日志采集

1、pom.xml

<!--apm‐toolkit‐logback‐1.x 日志 -->

<dependency>

<groupId>org.apache.skywalking</groupId>

<artifactId>apm-toolkit-logback-1.x</artifactId>

<version>8.5.0</version>

</dependency>

2、logback.xml

... ...

八、告警

1、添加网络钩子

修改config/alarm-settings.yml:

webhooks:

2、pojo

@Data

public class SkAlarmDTO {

private Integer scopeId;

private String scope;

private String name;

private String id0;

private String id1;

private String ruleName;

private String alarmMessage;

private Long startTime;

}

3、controller

@RestController

@RequestMapping("/skAlarm")

public class SkAlarmController {

@RequestMapping("/getMsg")

public void getMsg(@RequestBody List<SkAlarmDTO> skAlarmDTOList){

... ...

}

}

4、测试

①自定义异常

@RequestMapping(value = "/getUserById/{id}")

public User getUserById(@PathVariable Integer id) {

int a = 6/0;

return userFeign.getUserById(id);

}

②访问异常接口并等待告警

相关推荐
阿拉斯攀登4 天前
SkyWalking使用:Spring Boot场景
spring boot·后端·skywalking
阿拉斯攀登4 天前
SkyWalking使用:Spring Cloud Alibaba场景
skywalking
乐之者v4 天前
使用 SkyWalking,没有 traceId, 如何分析?
skywalking
阿拉斯攀登4 天前
SkyWalking 与 Zipkin、Prometheus 深度对比分析
prometheus·skywalking·可观测性·zipkin
小毅&Nora6 天前
【后端】【诡秘架构】 ① 序列9:占卜家——分布式链路追踪入门:用 SkyWalking 预知系统命运
分布式·架构·skywalking
boy快快长大8 天前
【Spring Cloud Alibaba】SkyWalking 链路追踪
skywalking
Li_7695328 天前
Spring Cloud — SkyWalking(六)
java·后端·spring·spring cloud·skywalking
Li_7695329 天前
Spring Cloud —— SkyWalking(五)
java·后端·spring·spring cloud·skywalking
技术破壁人9 天前
《SkyWalking 分布式链路追踪实战》—— 快速定位微服务性能瓶颈!
分布式·微服务·skywalking
Li_76953211 天前
Spring Cloud —— SkyWalking(四)
java·spring cloud·skywalking