Springcloud gateway结合grafana简单自定义监控

1. 安装

spring actuator和prometheus,grafana的安装参考cento安装

2. 配置grafana监控图标

springcloud gateway的相关配置可以参考官网github,复制json,import到grafana里面 就能看到监控图了,

Springcloud gateway结合grafana简单自定义监控_第1张图片

 其中Successful API Calls里面能看到每个route成功路由的id和路由到的地址(routeId和routeUri),routeUri这个意义并大大,如果想改成request 里面的uri该怎么实现呢?

grafana监控图标对应的是prometheus里面spring_cloud_gateway_requests_seconds_count这个指标,研究springcloud gateway代码可以发现tag是在GatewayRouteTagsProvider里面上报的,如下:

public class GatewayRouteTagsProvider implements GatewayTagsProvider {

	@Override
	public Tags apply(ServerWebExchange exchange) {
		Route route = exchange.getAttribute(GATEWAY_ROUTE_ATTR);

		if (route != null) {
			return Tags.of("routeId", route.getId(), "routeUri", route.getUri().toString());
		}

		return Tags.empty();
	}

}

回到我们的问题,如果想显示 请求的uri,该怎么实现呢?

自定义一个GatewayTagsProvider,上报请求的uri就可以了

@Component
public class CustomGatewayTagsProvider implements GatewayTagsProvider {

    @Override
    public Tags apply(ServerWebExchange exchange) {
        Route route = exchange.getAttribute(GATEWAY_ROUTE_ATTR);

        if (route != null) {
            return Tags.of("routeId", route.getId(), "routeUri", exchange.getRequest().getURI().getPath());
        }

        return Tags.empty();
    }
}

注意,这里至少为了不改grafana里面的json配置,简单的把routeUri替换成目标值,可以上报多个tag

Springcloud gateway结合grafana简单自定义监控_第2张图片

回到grafana对应的监控图就可以看到具体的请求uri的调用次数了

你可能感兴趣的:(JAVA,java,spring,cloud,gateway,spring,boot)