URL监控埋点作用
- 一个http请求来了之后,会自动打点,能够记录每个url的访问情况,并将以此请求后续的调用链路串起来,可以在cat上查看logview
- 可以在cat Transaction及Event 页面上都看到URL和URL.Forward(如果有Forward请求的话)两类数据;Transaction数据中URL点进去的数据就是被访问的具体URL(去掉参数的前缀部分)
- 请将catFilter存放filter的第一个,这样可以保证最大可能性监控所有的请求
实践
工程说明
工程名 | 端口 | 作用 |
---|---|---|
cat-ui | 8082 | 调用入口服务 |
cat-business-consumer | 8083 | 业务消费服务 |
cat-order-service | 8084 | 订单服务 |
cat-storage-service | 8085 | 库存服务 |
上图是本节实例的埋点图,首先 cat-ui 的入口 和 调用点 加入cat埋点,cat-business-consumer的入口和调用点加入埋点,cat-order-service 和 cat-storage-service 不再调用其他微服务,所以只在入口加入埋点。通过这样的埋点,可以组成一条完整的调用链。
关键代码
调用链上下文通用类
CatContextImpl.java
1 | /** |
CatHttpConstants
1 | /** |
CatServletFilter
1 | /** |
本节实例中每个工程都会用到调用链上下文通用类。
cat-ui 工程
CatRestInterceptor
1 |
|
CatServletFilter 对 cat-ui 的入口进行了埋点,CatRestInterceptor 实现 ClientHttpRequestInterceptor接口 可以对 RestTemplate 发起的请求进行拦截,利用这一点对调用点埋点,同时在 Http Header 中存入 调用链的上下文,将调用链传递下去。
cat-business-consumer、cat-order-service、cat-storage-service 中的埋点与 cat-ui 埋点的方式相同。
测试
发起请求
1 | curl http://127.0.0.1:8082/start |
cat 监控界面可以看到本节实例的服务。
点开 “logView” 可以看到完整的调用链信息。
点击 “Graph” 查看图表形式的调用链信息。
源码
https://github.com/gf-huanchupk/SpringCloudLearning/tree/master/chapter15