summaryrefslogtreecommitdiffstats
path: root/jdisc_http_service
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@oath.com>2018-07-04 14:08:24 +0200
committerBjørn Christian Seime <bjorncs@oath.com>2018-07-04 14:08:24 +0200
commit23452dae98b95f841ae9327b1d34df93a9085267 (patch)
tree2c0a97501b7bdd669dad735bc62d3aa3c4dd62a5 /jdisc_http_service
parentffd3c9f6bb00bd9990f323afabd464e5d311cec6 (diff)
Add metrics for uri length + content size
Diffstat (limited to 'jdisc_http_service')
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java26
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/JettyHttpServer.java3
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricReporter.java8
3 files changed, 25 insertions, 12 deletions
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java
index dbb9157f08c..db7670b604a 100644
--- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java
+++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/HttpRequestDispatch.java
@@ -14,6 +14,7 @@ import com.yahoo.jdisc.http.HttpHeaders;
import com.yahoo.jdisc.http.HttpRequest;
import org.eclipse.jetty.io.EofException;
import org.eclipse.jetty.server.HttpConnection;
+import org.eclipse.jetty.server.Request;
import javax.servlet.AsyncContext;
import javax.servlet.ServletInputStream;
@@ -45,7 +46,7 @@ class HttpRequestDispatch {
private final JDiscContext jDiscContext;
private final AsyncContext async;
- private final HttpServletRequest servletRequest;
+ private final Request jettyRequest;
private final ServletResponseController servletResponseController;
private final RequestHandler requestHandler;
@@ -60,9 +61,8 @@ class HttpRequestDispatch {
requestHandler = newRequestHandler(jDiscContext, accessLogEntry, servletRequest);
- this.metricReporter = new MetricReporter(jDiscContext.metric, metricContext,
- ((org.eclipse.jetty.server.Request) servletRequest).getTimeStamp());
- this.servletRequest = servletRequest;
+ this.jettyRequest = (Request) servletRequest;
+ this.metricReporter = new MetricReporter(jDiscContext.metric, metricContext, jettyRequest.getTimeStamp());
honourMaxKeepAliveRequests();
this.servletResponseController = new ServletResponseController(
servletRequest,
@@ -73,6 +73,7 @@ class HttpRequestDispatch {
this.async = servletRequest.startAsync();
async.setTimeout(0);
+ metricReporter.uriLength(jettyRequest.getOriginalURI().length());
}
public void dispatch() throws IOException {
@@ -102,7 +103,7 @@ class HttpRequestDispatch {
private void honourMaxKeepAliveRequests() {
if (jDiscContext.serverConfig.maxKeepAliveRequests() > 0) {
- HttpConnection connection = getConnection(servletRequest);
+ HttpConnection connection = getConnection(jettyRequest);
if (connection.getMessagesIn() >= jDiscContext.serverConfig.maxKeepAliveRequests()) {
connection.getGenerator().setPersistent(false);
}
@@ -123,15 +124,16 @@ class HttpRequestDispatch {
}
boolean reportedError = false;
+ parent.metricReporter.contentSize((int) parent.jettyRequest.getContentRead());
if (error != null) {
if (error instanceof CompletionException && error.getCause() instanceof EofException) {
log.log(Level.FINE,
error,
- () -> "Network connection was unexpectedly terminated: " + parent.servletRequest.getRequestURI());
+ () -> "Network connection was unexpectedly terminated: " + parent.jettyRequest.getRequestURI());
parent.metricReporter.prematurelyClosed();
} else if (!(error instanceof OverloadException || error instanceof BindingNotFoundException)) {
- log.log(Level.WARNING, "Request failed: " + parent.servletRequest.getRequestURI(), error);
+ log.log(Level.WARNING, "Request failed: " + parent.jettyRequest.getRequestURI(), error);
}
reportedError = true;
parent.metricReporter.failedResponse();
@@ -141,7 +143,7 @@ class HttpRequestDispatch {
try {
parent.async.complete();
- log.finest(() -> "Request completed successfully: " + parent.servletRequest.getRequestURI());
+ log.finest(() -> "Request completed successfully: " + parent.jettyRequest.getRequestURI());
} catch (Throwable throwable) {
Level level = reportedError ? Level.FINE: Level.WARNING;
log.log(level, "async.complete failed", throwable);
@@ -151,15 +153,15 @@ class HttpRequestDispatch {
@SuppressWarnings("try")
private ServletRequestReader handleRequest() throws IOException {
- HttpRequest jdiscRequest = HttpRequestFactory.newJDiscRequest(jDiscContext.container, servletRequest);
+ HttpRequest jdiscRequest = HttpRequestFactory.newJDiscRequest(jDiscContext.container, jettyRequest);
ContentChannel requestContentChannel;
try (ResourceReference ref = References.fromResource(jdiscRequest)) {
- HttpRequestFactory.copyHeaders(servletRequest, jdiscRequest);
+ HttpRequestFactory.copyHeaders(jettyRequest, jdiscRequest);
requestContentChannel = requestHandler.handleRequest(jdiscRequest, servletResponseController.responseHandler);
}
- ServletInputStream servletInputStream = servletRequest.getInputStream();
+ ServletInputStream servletInputStream = jettyRequest.getInputStream();
ServletRequestReader servletRequestReader =
new ServletRequestReader(
@@ -182,7 +184,7 @@ class HttpRequestDispatch {
ContentChannel handleRequestFilterResponse(Response response) {
try {
- servletRequest.getInputStream().close();
+ jettyRequest.getInputStream().close();
ContentChannel responseContentChannel = servletResponseController.responseHandler.handleResponse(response);
servletResponseController.finishedFuture().whenComplete(completeRequestCallback);
return responseContentChannel;
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 f7401622c1f..f149d6eb34d 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
@@ -106,6 +106,9 @@ public class JettyHttpServer extends AbstractServerProvider {
String STARTED_MILLIS = "serverStartedMillis";
@Deprecated String MANHATTAN_STARTED_MILLIS = "proc.uptime";
+
+ String URI_LENGTH = "jdisc.http.request.uri_length";
+ String CONTENT_SIZE = "jdisc.http.request.content_size";
}
private final static Logger log = Logger.getLogger(JettyHttpServer.class.getName());
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricReporter.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricReporter.java
index 76c97e016bc..ba9c42abd74 100644
--- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricReporter.java
+++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/server/jetty/MetricReporter.java
@@ -85,4 +85,12 @@ public class MetricReporter {
private long getRequestLatency() {
return System.currentTimeMillis() - requestStartTime;
}
+
+ public void uriLength(int length) {
+ metric.set(Metrics.URI_LENGTH, length, context);
+ }
+
+ public void contentSize(int size) {
+ metric.set(Metrics.CONTENT_SIZE, size, context);
+ }
}