diff options
author | Ola Aunrønning <ola.aunroe@gmail.com> | 2018-08-24 15:28:48 +0200 |
---|---|---|
committer | Ola Aunrønning <ola.aunroe@gmail.com> | 2018-09-06 14:52:37 +0200 |
commit | 854a9b1c407711c68f749bf6396ce2d3ce26b93c (patch) | |
tree | b907315bfa32eb4898a8aca1d5644d72721a2137 /jdisc_http_service | |
parent | 5dd5400692b188644753c92e6888d5883964b95b (diff) |
Added metrics for 401/403 status codes
Diffstat (limited to 'jdisc_http_service')
3 files changed, 31 insertions, 9 deletions
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java index ef416fd961f..1e92fbef967 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java +++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollector.java @@ -41,7 +41,7 @@ public class HttpResponseStatisticsCollector extends HandlerWrapper implements G } private static final String[] HTTP_RESPONSE_GROUPS = { Metrics.RESPONSES_1XX, Metrics.RESPONSES_2XX, Metrics.RESPONSES_3XX, - Metrics.RESPONSES_4XX, Metrics.RESPONSES_5XX }; + Metrics.RESPONSES_4XX, Metrics.RESPONSES_5XX, Metrics.RESPONSES_401, Metrics.RESPONSES_403}; private final AtomicLong inFlight = new AtomicLong(); private final LongAdder statistics[][]; @@ -112,6 +112,9 @@ public class HttpResponseStatisticsCollector extends HandlerWrapper implements G if (group >= 0) { HttpMethod method = getMethod(request); statistics[method.ordinal()][group].increment(); + if (group == 5 || group == 6) { // if 401/403, also increment 4xx + statistics[method.ordinal()][3].increment(); + } } long live = inFlight.decrementAndGet(); @@ -127,15 +130,19 @@ public class HttpResponseStatisticsCollector extends HandlerWrapper implements G } private int groupIndex(Request request) { - if (request.isHandled()) { - int index = (request.getResponse().getStatus() / 100) - 1; // 1xx = 0, 2xx = 1 etc. - if (index < 0 || index > statistics.length) { - return -1; - } else { - return index; - } + int index = request.getResponse().getStatus(); + if (index == 401) { + return 5; + } + if (index == 403) { + return 6; + } + + index = index / 100 - 1; // 1xx = 0, 2xx = 1 etc. + if (index < 0 || index >= statistics[0].length) { + return -1; } else { - return 3; // 4xx + return index; } } diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java index 70d266fdfa5..8074af7f64f 100644 --- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java +++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java @@ -108,6 +108,8 @@ public class JettyHttpServer extends AbstractServerProvider { String RESPONSES_3XX = "http.status.3xx"; String RESPONSES_4XX = "http.status.4xx"; String RESPONSES_5XX = "http.status.5xx"; + String RESPONSES_401 = "http.status.401"; + String RESPONSES_403 = "http.status.403"; String STARTED_MILLIS = "serverStartedMillis"; @Deprecated String MANHATTAN_STARTED_MILLIS = "proc.uptime"; diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollectorTest.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollectorTest.java index e3d70fb5bd6..3c23a2b0937 100644 --- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollectorTest.java +++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/server/jetty/HttpResponseStatisticsCollectorTest.java @@ -65,6 +65,19 @@ public class HttpResponseStatisticsCollectorTest { } @Test + public void statistics_include_grouped_and_single_statuscodes() throws Exception { + testRequest(401, "GET"); + testRequest(404, "GET"); + testRequest(403, "GET"); + + Map<String, Map<String, Long>> stats = collector.takeStatisticsByMethod(); + assertThat(stats.get("GET").get(Metrics.RESPONSES_4XX), equalTo(3L)); + assertThat(stats.get("GET").get(Metrics.RESPONSES_401), equalTo(1L)); + assertThat(stats.get("GET").get(Metrics.RESPONSES_403), equalTo(1L)); + + } + + @Test public void retrieving_statistics_resets_the_counters() throws Exception { testRequest(200, "GET"); testRequest(200, "GET"); |