Spring Boot程序连接CAT服务

CAT服务端部署完并启动之后,一步一步的将我们的Spring Boot应用连接上CAT。

demo 地址:

1
git clone https://github.com/Gsealy/CATClientDemo.git

一、构建Spring Boot应用

方法一:从start.spring.io快速构建完整项目,仅需添加web依赖。

方法二:直接在IDE(idea或者STS)中创建Spring Boot应用即可。

先给出项目内文件结构:

WebApplication类中创建Controller,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@RestController
@SpringBootApplication
public class WebApplication {

public static void main(String[] args) {
SpringApplication.run(WebApplication.class, args);
}

/**
* 监控访问id
*/
@GetMapping("/index/{id}")
public String index(@PathVariable int id) {
System.out.println("id is : " + id);
return "id: " + id;
}
}

这样直接运行就是一个跑在8080端口上的web服务了。

pom.xml中添加cat-client依赖,为了做单元测试,同时也添加一下junit依赖

1
2
3
4
5
6
7
8
9
10
11
<dependency>
<groupId>com.dianping.cat</groupId>
<artifactId>cat-client</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>

二、添加配置文件

resources目录下,新建META-INF文件夹

META-INF中新建app.properties配置文件并添加应用名称,从而让CAT服务端能正常接收应用名称

1
app.name=webserver

三、添加埋点方案

从cat目录下框架埋点方案集成的文件夹中找到springboot的埋点方案,放进项目中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Configuration
public class CatFilterConfigure {

@Bean
public FilterRegistrationBean<CatFilter> catFilter() {
FilterRegistrationBean<CatFilter> registration = new FilterRegistrationBean<>();
CatFilter filter = new CatFilter();
registration.setFilter(filter);
registration.addUrlPatterns("/*");
registration.setName("cat-filter");
registration.setOrder(1);
return registration;
}
}

四、修改Controller

修改之前的index方法,添加Transaction和Event。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@GetMapping("/index/{id}")
public String index(@PathVariable int id) {
Transaction t = Cat
.getProducer().newTransaction("URL", "Get.id");
try {
Cat.getProducer().newEvent("URL.Get", "id").setStatus(Message.SUCCESS);
t.addData("id is:" + id);
// 你的业务代码
System.out.println("id is : " + id);

t.setStatus(Transaction.SUCCESS);
} catch (Exception e) {
t.setStatus(e);
throw e;
} finally {
t.complete();
}
return "id: " + id;
}

五、运行测试

可以直接跑demo中的单元测试,也可以直接启动web服务,然后自测。

可以在CAT服务端看到当前的应用已经连上了

在Transaction和Event中也都能看到相应的log。

结束!🔚


Buy Me A Coffee.