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

}

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

相关推荐
洒满阳光的午后3 天前
我做了一个“能理解业务语义”的可观测性 MCP Server:统一接入 Prometheus、OpenObserve 和 SkyWalking
人工智能·ai·prometheus·skywalking·openobserve·mcp
梵得儿SHI3 天前
SpringCloud 实战落地:可观测性建设(SkyWalking + Prometheus + Grafana)从 0 到 1 生产级部署
grafana·prometheus·springcloud·skywalking·微服务可观测性·线上问题排查
Jinkxs5 天前
SkyWalking - Spring Cloud Alibaba 全链路追踪实战
skywalking
烛之武6 天前
Skywalking服务链路追踪与Jemeter压力测试
压力测试·skywalking
鬼先生_sir6 天前
Spring Cloud 微服务监控实战:SkyWalking + Prometheus+Grafana 全栈解决方案
运维·spring cloud·grafana·prometheus·skywalking
dgvri12 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
rOuN STAT13 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
危笑ioi13 天前
helm部署skywalking链路追踪 java
java·开发语言·skywalking
MmeD UCIZ14 天前
Skywalking介绍,Skywalking 9.4 安装,SpringBoot集成Skywalking
spring boot·后端·skywalking
专注API从业者14 天前
淘宝 API 调用链路追踪实战:基于 SkyWalking/Pinpoint 的全链路监控搭建
大数据·开发语言·数据库·skywalking