aboutsummaryrefslogtreecommitdiffstats
path: root/container-core/src/main/java/com/yahoo/container/logging
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-04-14 14:44:10 +0200
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-04-14 14:44:10 +0200
commitc4e53c75bdc895749034b77d61c40ba5d2139fe7 (patch)
treeae3aba816eb0aa8b6c84b49efd60bc17f518a8eb /container-core/src/main/java/com/yahoo/container/logging
parentacc1a51015dc24ad3de9e99c9c067d49a517b8c1 (diff)
Track protocol layers (with versions) in connection log
Organize fields based on protocol
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container/logging')
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java17
-rw-r--r--container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java32
2 files changed, 43 insertions, 6 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java b/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java
index 6afe3b74329..5b30ce5963d 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/ConnectionLogEntry.java
@@ -33,6 +33,8 @@ public class ConnectionLogEntry {
private final Instant sslPeerNotAfter;
private final String sslSniServerName;
private final SslHandshakeFailure sslHandshakeFailure;
+ private final String httpProtocol;
+ private final String proxyProtocolVersion;
private ConnectionLogEntry(Builder builder) {
@@ -57,6 +59,8 @@ public class ConnectionLogEntry {
this.sslPeerNotAfter = builder.sslPeerNotAfter;
this.sslSniServerName = builder.sslSniServerName;
this.sslHandshakeFailure = builder.sslHandshakeFailure;
+ this.httpProtocol = builder.httpProtocol;
+ this.proxyProtocolVersion = builder.proxyProtocolVersion;
}
public static Builder builder(UUID id, Instant timestamp) {
@@ -84,6 +88,8 @@ public class ConnectionLogEntry {
public Optional<Instant> sslPeerNotAfter() { return Optional.ofNullable(sslPeerNotAfter); }
public Optional<String> sslSniServerName() { return Optional.ofNullable(sslSniServerName); }
public Optional<SslHandshakeFailure> sslHandshakeFailure() { return Optional.ofNullable(sslHandshakeFailure); }
+ public Optional<String> httpProtocol() { return Optional.ofNullable(httpProtocol); }
+ public Optional<String> proxyProtocolVersion() { return Optional.ofNullable(proxyProtocolVersion); }
public static class SslHandshakeFailure {
private final String type;
@@ -133,6 +139,8 @@ public class ConnectionLogEntry {
private Instant sslPeerNotAfter;
private String sslSniServerName;
private SslHandshakeFailure sslHandshakeFailure;
+ private String httpProtocol;
+ private String proxyProtocolVersion;
Builder(UUID id, Instant timestamp) {
@@ -217,9 +225,18 @@ public class ConnectionLogEntry {
this.sslHandshakeFailure = sslHandshakeFailure;
return this;
}
+ public Builder withHttpProtocol(String protocol) {
+ this.httpProtocol = protocol;
+ return this;
+ }
+ public Builder withProxyProtocolVersion(String version) {
+ this.proxyProtocolVersion = version;
+ return this;
+ }
public ConnectionLogEntry build(){
return new ConnectionLogEntry(this);
}
+
}
}
diff --git a/container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java b/container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java
index 158d2ec4ea6..dfdc5f1b55a 100644
--- a/container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java
+++ b/container-core/src/main/java/com/yahoo/container/logging/JsonConnectionLogWriter.java
@@ -33,12 +33,32 @@ class JsonConnectionLogWriter implements LogWriter<ConnectionLogEntry> {
writeOptionalInteger(generator, "peerPort", unwrap(record.peerPort()));
writeOptionalString(generator, "localAddress", unwrap(record.localAddress()));
writeOptionalInteger(generator, "localPort", unwrap(record.localPort()));
- writeOptionalString(generator, "remoteAddress", unwrap(record.remoteAddress()));
- writeOptionalInteger(generator, "remotePort", unwrap(record.remotePort()));
- writeOptionalLong(generator, "httpBytesReceived", unwrap(record.httpBytesReceived()));
- writeOptionalLong(generator, "httpBytesSent", unwrap(record.httpBytesSent()));
- writeOptionalLong(generator, "requests", unwrap(record.requests()));
- writeOptionalLong(generator, "responses", unwrap(record.responses()));
+
+ String proxyProtocolVersion = unwrap(record.proxyProtocolVersion());
+ String proxyProtocolRemoteAddress = unwrap(record.remoteAddress());
+ Integer proxyProtocolRemotePort = unwrap(record.remotePort());
+ if (isAnyValuePresent(proxyProtocolVersion, proxyProtocolRemoteAddress, proxyProtocolRemotePort)) {
+ generator.writeObjectFieldStart("proxyProtocol");
+ writeOptionalString(generator, "version", proxyProtocolVersion);
+ writeOptionalString(generator, "remoteAddress", proxyProtocolRemoteAddress);
+ writeOptionalInteger(generator, "remotePort", proxyProtocolRemotePort);
+ generator.writeEndObject();
+ }
+
+ String httpVersion = unwrap(record.httpProtocol());
+ Long httpBytesReceived = unwrap(record.httpBytesReceived());
+ Long httpBytesSent = unwrap(record.httpBytesSent());
+ Long httpRequests = unwrap(record.requests());
+ Long httpResponses = unwrap(record.responses());
+ if (isAnyValuePresent(httpVersion, httpBytesReceived, httpBytesSent, httpRequests, httpResponses)) {
+ generator.writeObjectFieldStart("http");
+ writeOptionalString(generator, "version", httpVersion);
+ writeOptionalLong(generator, "bytesReceived", httpBytesReceived);
+ writeOptionalLong(generator, "responses", httpResponses);
+ writeOptionalLong(generator, "bytesSent", httpBytesSent);
+ writeOptionalLong(generator, "requests", httpRequests);
+ generator.writeEndObject();
+ }
String sslProtocol = unwrap(record.sslProtocol());
String sslSessionId = unwrap(record.sslSessionId());