diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-11-23 15:58:21 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-11-23 15:58:21 +0100 |
commit | 29e722b8d3a8ef088f3e302ceeb88a1736e13f25 (patch) | |
tree | 803067b40a858e32b1759bd0bfc91795db3026cf /container-core/src/main/java | |
parent | 577547b388d9576e19813d0319ed7487f44c1433 (diff) |
Add status code as dimension to response metrics
Diffstat (limited to 'container-core/src/main/java')
2 files changed, 16 insertions, 5 deletions
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java index d6c0699edbd..8fd4c064a2c 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java @@ -181,18 +181,20 @@ class HttpResponseStatisticsCollector extends HandlerWrapper implements Graceful final String scheme; final String method; final String requestType; + final int statusCode; - private Dimensions(String protocol, String scheme, String method, String requestType) { + private Dimensions(String protocol, String scheme, String method, String requestType, int statusCode) { this.protocol = protocol; this.scheme = scheme; this.method = method; this.requestType = requestType; + this.statusCode = statusCode; } static Dimensions of(Request req, Collection<String> monitoringHandlerPaths, Collection<String> searchHandlerPaths) { String requestType = requestType(req, monitoringHandlerPaths, searchHandlerPaths); - return new Dimensions(protocol(req), scheme(req), method(req), requestType); + return new Dimensions(protocol(req), scheme(req), method(req), requestType, statusCode(req)); } Map<String, Object> asMap() { @@ -201,6 +203,7 @@ class HttpResponseStatisticsCollector extends HandlerWrapper implements Graceful builder.put(MetricDefinitions.SCHEME_DIMENSION, scheme); builder.put(MetricDefinitions.METHOD_DIMENSION, method); builder.put(MetricDefinitions.REQUEST_TYPE_DIMENSION, requestType); + builder.put(MetricDefinitions.STATUS_CODE_DIMENSION, (long) statusCode); return Map.copyOf(builder); } @@ -243,6 +246,8 @@ class HttpResponseStatisticsCollector extends HandlerWrapper implements Graceful } } + private static int statusCode(Request req) { return req.getResponse().getStatus(); } + private static String requestType(Request req, Collection<String> monitoringHandlerPaths, Collection<String> searchHandlerPaths) { HttpRequest.RequestType requestType = (HttpRequest.RequestType)req.getAttribute(requestTypeAttribute); @@ -259,16 +264,21 @@ class HttpResponseStatisticsCollector extends HandlerWrapper implements Graceful else return "write"; } + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Dimensions that = (Dimensions) o; - return Objects.equals(protocol, that.protocol) && Objects.equals(scheme, that.scheme) - && Objects.equals(method, that.method) && Objects.equals(requestType, that.requestType); + return statusCode == that.statusCode && Objects.equals(protocol, that.protocol) + && Objects.equals(scheme, that.scheme) && Objects.equals(method, that.method) + && Objects.equals(requestType, that.requestType); } - @Override public int hashCode() { return Objects.hash(protocol, scheme, method, requestType); } + @Override + public int hashCode() { + return Objects.hash(protocol, scheme, method, requestType, statusCode); + } } diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java index 71c60ad6737..4099511c2c2 100644 --- a/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java +++ b/container-core/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricDefinitions.java @@ -17,6 +17,7 @@ class MetricDefinitions { static final String REQUEST_SERVER_NAME_DIMENSION = "requestServerName"; static final String FILTER_CHAIN_ID_DIMENSION = "chainId"; static final String PROTOCOL_DIMENSION = "protocol"; + static final String STATUS_CODE_DIMENSION = "statusCode"; static final String NUM_OPEN_CONNECTIONS = "serverNumOpenConnections"; static final String NUM_CONNECTIONS_OPEN_MAX = "serverConnectionsOpenMax"; |