我正在使用Spring Cloud Gateway,并且希望捕获所有API匹配的指标。指标包括响应时间,错误代码等。我正在使用Spring Cloud的Hoxton.RELEASE版本。我尝试按照他们的文档中的建议使用/actuator/metrics/gateway.requests,但是没有用。此外,如果可以通过jmx指标使用这些指标,那就更好了。我也尝试使用jmx,并在jconsole上对其进行了可视化处理,但是它没有显示API的响应时间,等等。
有人可以建议如何做吗?我们必须在生产中使用它,这对我们来说是一个重要因素。
ResponseFilterFactory extends AbstractGatewayFilterFactory<ResponseFilterFactory.Config> {
public ResponseFilterFactory() {
super(Config.class);
}
@Override
public GatewayFilter apply(Config config) {
return new OrderedGatewayFilter((exchange, chain) -> {
// Pre-processing
startTime = System.currentTimeMillis();
return chain.filter(exchange)
.then(Mono.fromRunnable(() -> {
// Post-processing
String serviceResponseStatus= exchange.getResponse().getStatusCode().toString();
if(serviceResponseStatus.startsWith("2")){
serviceResponseStatus="Success";
}
else{
serviceResponseStatus="Failure";
}
long execTime = System.currentTimeMillis() - startTime;
LOGGER.info("caller={}, serviceName={}, serviceResponseStatus={}, serviceResponseTime(ms)={}", Objects.isNull(caller) ? "default" : caller,
serviceName, serviceResponseStatus, execTime);
}));
},1);
}
public static class Config {
private String headerName;
public String getHeaderName() {
// add some thing to config if you want to log along with resp time, ex. headers etc
return null;
}
}
cloud:
gateway:
default-filters:
- name: ResponseFilterFactory