目录
1.链路追踪-框架Springboot项目搭建
1.1 创建一个Springboot项目
1.2 SpringBoot+MybaitsPlus+Mysql开发测试接口
1.2.1 添加依赖配置pom.xml
1.2.2 添加配置 application.properties
1.2.3 开发接口
2.分布式链路追踪的卧底 Skywalking Agent 探针介绍
2.1 Skywalking-Agent的安装和使用
2.2 IDEA编辑器配置Skywalking-Agent链路采集
本篇主要展示SkyWalking和Springboot项目的整合以及探针链路采集展示
SkyWalking的日志上报以及WebHook通知见下面这篇博文
分布式链路追踪SkyWalking进阶实战之RPC上报和WebHook通知(三)_这是王姑娘的微博的博客-CSDN博客本篇主要介绍SkyWalking性能剖析,慢业务代码定位以及通知告警https://blog.csdn.net/wnn654321/article/details/128594388
1.链路追踪-框架Springboot项目搭建
1.1 创建一个Springboot项目
在线创建:https://start.spring.io/
创建数据库导入数据(自己安装Mysql8)
DROP TABLE IF EXISTS `product`;
CREATE TABLE `product` (
`id` bigint NOT NULL,
`title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '商品标题',
`detail` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '详情',
`img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '图片',
`amount` decimal(16,0) DEFAULT NULL COMMENT '现价',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
INSERT INTO `product` VALUES (1, '商品1', '商品1详情', 'https://file.wnn021.cn/video/2023/05.jpeg', 61);
INSERT INTO `product` VALUES (2, '商品2', '商品2详情', 'https://file.wnn021.cn/video/2023/05.jpeg', 88);
INSERT INTO `product` VALUES (3, '商品3', '商品3详情', 'https://file.wnn021.cn/video/2023/03.jpeg', 999);
INSERT INTO `product` VALUES (4, '商品4', '商品4详情', 'https://file.wnn021.cn/video/2023/banner.jpeg', 79);
1.2 SpringBoot+MybaitsPlus+Mysql开发测试接口
1.2.1 添加依赖配置pom.xml
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
1.2.2 添加配置 application.properties
server.port=8081
#==============================数据库相关配置========================================
spring.datasource.driver-class-name =com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://112.74.xx.xxx:3306/wnn_sky_shop?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username =root
spring.datasource.password =xxxxxxx
#配置mybatis plus打印sql日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
1.2.3 开发接口
商品列表接口 商品详情接口
@SpringBootApplication
@MapperScan("net.wnn.wnnsky.mapper")
public class WnnSkyApplication {
public static void main(String[] args) {
SpringApplication.run(WnnSkyApplication.class, args);
}
}
@RestController
@RequestMapping("/api/product/v1")
public class ProductController {
@Autowired
private ProductService productService;
@RequestMapping("list")
public JsonData list(){
List<ProductDO> list = productService.list();
return JsonData.buildSuccess(list);
}
@GetMapping("/detail/{product_id}")
public JsonData detail(@PathVariable("product_id") long productId){
ProductDO productDO = productService.detail(productId);
return JsonData.buildSuccess(productDO);
}
}
@Service
public class ProductServiceImpl implements ProductService {
@Autowired
private ProductMapper productMapper;
@Override
public List<ProductDO> list() {
return productMapper.selectList(new QueryWrapper<>());
}
@Override
public ProductDO detail(long productId) {
return productMapper.selectOne(new QueryWrapper<ProductDO>().eq("id",productId));
}
}
启动后可正常访问商品列表即可
2.分布式链路追踪的卧底 Skywalking Agent 探针介绍
2.1 Skywalking-Agent的安装和使用
什么SkyWalking探针:探针表示集成到目标系统中的代理或 SDK 库,即收集并格式化数据, 并发送到、,么么么么后端 包括链路追踪和性能指标
Skywalking-Agent的安装和使用
下载skywalking 地址:https://skywalking.apache.org/downloads/
本篇使用 apache-skywalking-apm-8.5.0.tar.gz
skywalking-agen目录文件的介绍
logs:skywalking agent的相关运行日志
bootstrap-plugins:插件包
optional-plugins:插件包(可供选择的插件包,如果需要生效则需要拷贝到plugins包下)
plugins:插件包(生效的插件包,支持多个框架链路追踪)
optional-reporter-plugins:插件包
activations:插件包
config: 配置文件
skywalking-agent.jar:agent代理的jar包(主要是这个!)
skywalking-agent的使用方式
优先级:探针-> JVM配置-> 环境变量配置 -> agent.config(优先级低)
第一种-javaagent:/path/to/skywalking-agent.jar={config1}={value1},{config2}={value2}
-javaagent:../skywalking-agent.jar=agent.service_name=WnnApp,collector.backend_service=127.0.0.1:11800
第二种:-Dskywalking.[option1]=[value2]
-javaagent: ../skywalking-agent.jar -Dskywalking.agent.service_name=WnnApp -Dskywalking.collector.backend_service=127.0.0.1:11800
agent.service_name:客户端服务名,在apm系统中显示的服务名称
collector.backend_service:SW上传的服务地址
2.2 IDEA编辑器配置Skywalking-Agent链路采集
-javaagent:E:\demo\apache-skywalking-apm-bin\agent\skywalking-agent.jar -Dskywalking.agent.service_name=WnnShop -Dskywalking.collector.backend_service=112.xx.xx.xx0:11800
然后启动服务后,请求 http://localhost:8081/api/product/v1/detail/1 和http://localhost:8081/api/product/v1/list 这两个接口
刷新 http://112.xx.xx.240:8080/ 可以看到sky中已经收集到了端点实例信息