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

}

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

相关推荐
骷大人5 天前
php安装skywalking_agent
开发语言·php·skywalking
观测云11 天前
云原生架构下微服务接入 SkyWalking 最佳实践
微服务·云原生·架构·skywalking
桥边驿语人1 个月前
Skywalking 的本地开发配置
skywalking
斯普信专业组1 个月前
Skywalking从部署集成到动态调优(上)
运维·skywalking·动态调优
斯普信专业组1 个月前
Skywalking从部署集成到动态调优(下)
运维·skywalking·动态调优
一叶飘零_sweeeet1 个月前
从 “黑盒“ 到 “透明“:SkyWalking 实战指南 —— 让微服务问题无所遁形
分布式·微服务·skywalking·分布式链路追踪
陈平安Java and C1 个月前
分布式链路追踪-SkyWalking
分布式·skywalking
一叶飘零_sweeeet1 个月前
从 0 到 1 精通 SkyWalking:分布式系统的 “透视镜“ 技术全解析
java·skywalking
斯普信专业组1 个月前
SkyWalking 核心概念与智能探针工作原理深度揭秘(上)
运维·skywalking