链路追踪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);

}

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

相关推荐
t***q332 天前
分布式监控Skywalking安装及使用教程(保姆级教程)
分布式·skywalking
z***94844 天前
SpringBoot教程(三十二) SpringBoot集成Skywalking链路跟踪
spring boot·后端·skywalking
q***49458 天前
分布式监控Skywalking安装及使用教程(保姆级教程)
分布式·skywalking
q***48258 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
galaxyffang8 天前
skywalking整合logback.xml日志,日志文件出现乱码问题解决
xml·logback·skywalking
s***55819 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
q***845710 天前
分布式监控Skywalking安装及使用教程(保姆级教程)
分布式·skywalking
galaxyffang10 天前
skywalking中TID
skywalking
T***u33310 天前
SpringBoot集成SkyWalking,分布式链路追踪
spring boot·分布式·skywalking
小坏讲微服务10 天前
Spring Cloud Alibaba整合SkyWalking的监控完整使用
java·微服务·架构·springcloud·监控·skywalking·java微服务