本文概览:zuul也是基于servlet的,micrometer是基于servlet filter来收集指标的,所以可以通过micrometer可以收集网关zuul的请求指标,包括http状态为4xx、5xx的请求。

1 zuul流程

类似于MVC有一个DispatcherServerlet,zuul也有一个ZuulServerlet来映射所有的请求。对于java web都是基于serverlet来做的。

b49b7f7f-48d2-4c09-a6df-079a6e4074a4

上面的流程对应的代码如下:

spring cloud zuul starter是如何来初始化这个servlet的,如下代码:

41879407

2 使用Micrometer收集zuul指标

由上zuul是基于servlet的,micrometer是基于servlet filter来收集指标的,所以可以通过micrometer可以收集网关zuul的请求指标,包括http状态为4xx、5xx的请求。

2.1 收集那些指标

收集每个服务的流量、耗时、已经请求的http状态,即收集的服务维度信息,不是接口的信息。

2.2 引入Micrometer

gateway服务部署参考 :

Spring Cloud GateWay-Netflix Zuul

1maven配置

2、properties

3、启动gateway,通过访问http://localhost:8763/provider1/query  来收集指标数据,如下:

2.3 改进Micrometer指标收集

上面的influxdburi中,我们希望获取的每个服务serviceId,此时可以通过如下来完成:

1、在前置zuulFilter中奖serviceId设置到request

2 requestattribute中获取serviceId,复写DefaultWebMvcTagsProvider

3、启动gateway,通过访问http://localhost:8763/provider1/query  来收集指标数据,如下:

 

分类&标签