网易云有料

整合网易全生态优质内容资源的智能信息流一站式服务提供商。

20,603篇博客

Spring Cloud服务追踪与日志聚合

网易云有料2018-07-08 11:54

Sleuth Zipkin

日志的重要性不言而喻,帮助我们在异常发生的时候很好的定位到问题所在。

但是微服务这种问题就大了。

拿本次我们要举的例子来说,我们有:网关微服务(Zuul)、服务间调用(Feign)、订单服务(Order),调用的时候出问题了(返回错误信息、响应变慢),你说会是谁的问题?

这三个微服务可能是部门三个不同的开发组,或者是公司的三个部门在做。各有各的日志,谁知道日志记录的异常是哪次调用的?

这不像单体应用,Controller-Service-Mapper,在IDE里一点就跳进去了,微服务各组之间也拿不到其他组的源代码。

这就需要服务追踪Sleuth组件。理论的东西不谈,你平时网购时看的那个快递物流跟踪单,能理解这个就能理解Sleuth。

如果把Sleuth比喻成纯纯的物流信息,我们最起码也需要一个展示的页面吧,这就需要Zipkin了。

Zipkin服务端

进入http://start.spring.io 如下图一样构建:

http://start.spring.io

一定得1.5.X版本,我一开始用最新的2.0.0.M3,估计是依赖包不兼容,没法用。pom.xml增加如下依赖包:

pom.xml

application.yml:

application.yml

代码:

代码

代码增加@EnableZipkinServer即可。

启动Eureka注册中心,Zipkin服务,访问http://localhost:9411 如下图:

Zipkin监控页面

没有服务,所以页面是空的。

各服务修改

使用我之前构建的Zuul、Feign、Order三个服务。

相关文章请参阅:

0、《Spring boot+MyBatis+PageHelper+JSON》

1、《极简Spring Boot搭建、开发、部署》

2、《Spring Cloud注册中心——Eureka&集群》

3、《Spring Cloud网关Zuul&过滤器&集群方案》

4、《Spring Cloud网关与负载均衡Zuul与Ribbon》

5、《Spring Cloud服务间调用Feign》

6、《Spring Cloud断路器Hystrix》

7、《Spring Cloud分布式配置中心Config》

先在Zuul的application.yml增加对Feign Service的路由设置:

给三个服务增加如下依赖:

pom.xml

每个服务都增加Zipkin服务的URL:

结果依次启动Eureka、Zipkin、Order、Feign、Zuul,如下图:

通过Zuul访问Feign,Feign调用Order,结果如下图:

Zuul Feign Order

多刷新几次,再进入Zipkin的监控页面,在红框A处选择要查询的Service,点击红框B,就能看到请求调用链的相关信息。红框C可以自己点点看。

Zipkin监控页面

下一篇讲啥呢?

文章来源于: 外天号,版权归原作者所有,如有侵权,请联系 guanwang@163yun.com 删除。