Skip to content
This repository was archived by the owner on Dec 5, 2023. It is now read-only.

Commit abd7e71

Browse files
committed
Match request to prevent metric for each ID.
1 parent 1ef22f5 commit abd7e71

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

src/main/java/works/weave/socks/cart/middleware/HTTPMonitoringInterceptor.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package works.weave.socks.cart.middleware;
22

33
import io.prometheus.client.Histogram;
4+
import org.springframework.beans.factory.annotation.Autowired;
45
import org.springframework.beans.factory.annotation.Value;
6+
import org.springframework.web.method.HandlerMethod;
57
import org.springframework.web.servlet.HandlerInterceptor;
68
import org.springframework.web.servlet.ModelAndView;
9+
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
10+
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
711

812
import javax.servlet.http.HttpServletRequest;
913
import javax.servlet.http.HttpServletResponse;
14+
import java.util.Map;
1015

1116
public class HTTPMonitoringInterceptor implements HandlerInterceptor {
1217
static final Histogram requestLatency = Histogram.build()
@@ -20,6 +25,9 @@ public class HTTPMonitoringInterceptor implements HandlerInterceptor {
2025
@Value("${spring.application.name:carts}")
2126
private String serviceName;
2227

28+
@Autowired
29+
private RequestMappingHandlerMapping requestMappingHandlerMapping;
30+
2331
@Override
2432
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse
2533
httpServletResponse, Object o) throws Exception {
@@ -36,7 +44,7 @@ public void postHandle(HttpServletRequest httpServletRequest, HttpServletRespons
3644
requestLatency.labels(
3745
serviceName,
3846
httpServletRequest.getMethod(),
39-
httpServletRequest.getServletPath(),
47+
getMatchingURLPattern(httpServletRequest),
4048
Integer.toString(httpServletResponse.getStatus())
4149
).observe(seconds);
4250
}
@@ -45,4 +53,21 @@ public void postHandle(HttpServletRequest httpServletRequest, HttpServletRespons
4553
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse
4654
httpServletResponse, Object o, Exception e) throws Exception {
4755
}
56+
57+
private String getMatchingURLPattern(HttpServletRequest httpServletRequest) {
58+
String res = httpServletRequest.getServletPath();
59+
60+
for (Map.Entry<RequestMappingInfo, HandlerMethod> item : requestMappingHandlerMapping
61+
.getHandlerMethods().entrySet()) {
62+
RequestMappingInfo mapping = item.getKey();
63+
if (mapping.getPatternsCondition().getMatchingCondition(httpServletRequest) != null &&
64+
mapping.getMethodsCondition().getMatchingCondition(httpServletRequest) !=
65+
null) {
66+
res = mapping.getPatternsCondition().getMatchingCondition(httpServletRequest)
67+
.getPatterns().iterator().next();
68+
break;
69+
}
70+
}
71+
return res;
72+
}
4873
}

0 commit comments

Comments
 (0)