链路追踪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 = "arg0"),

@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);

}

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

相关推荐
摇滚侠5 天前
Skywalking 应用性能监控和可观测性分析平台 简介
skywalking
Databuff5 天前
skywalking 快速使用入门
skywalking
摇滚侠7 天前
Apache Skywalking 实战 阅读笔记 第三章
笔记·apache·skywalking
摇滚侠8 天前
Apache Skywalking 实战 阅读笔记 第二章
笔记·apache·skywalking
Databuff8 天前
国产开源APM databuff 成为 CNCF 顶级项目opentelemetry 官宣Vendor
运维·开源·skywalking·apm·可观测性·opentelemetry
摇滚侠9 天前
Skywalking 全套教程 环境搭建 01-05
skywalking
摇滚侠9 天前
Apache Skywalking 实战 阅读笔记 第一章
笔记·apache·skywalking
就改了1 个月前
Windows 环境 SkyWalking 完整实操教程
windows·微服务·skywalking
Jul1en_1 个月前
【SpringCloud】SkyWalking 链路追踪知识详解及部署教程
java·后端·spring·spring cloud·skywalking
SRETalk1 个月前
SkyWalking / Jaeger / ARMS 已经有了,还需要统一可观测平台吗
skywalking·apm·jaeger·flashcat·arms