This is an automated email from the ASF dual-hosted git repository.
liuhan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-rover.git
The following commit(s) were added to refs/heads/main by this push:
new f459a28 Pass host header in eBPF access log protocol (#179)
f459a28 is described below
commit f459a28e2040fdeed4f3a448d61a61ae26f612a2
Author: mrproliu <[email protected]>
AuthorDate: Wed Feb 26 10:36:37 2025 +0800
Pass host header in eBPF access log protocol (#179)
---
go.mod | 2 +-
go.sum | 4 ++--
pkg/accesslog/collector/protocols/http1.go | 5 +++++
pkg/accesslog/collector/protocols/http2.go | 10 +++++++---
4 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/go.mod b/go.mod
index d1b0f7b..6eb8649 100644
--- a/go.mod
+++ b/go.mod
@@ -26,7 +26,7 @@ require (
k8s.io/apimachinery v0.23.5
k8s.io/client-go v0.23.5
k8s.io/utils v0.0.0-20211116205334-6203023598ed
- skywalking.apache.org/repo/goapi v0.0.0-20240920052516-d4a23d9da0e0
+ skywalking.apache.org/repo/goapi v0.0.0-20250225130248-3916480eb467
)
require (
diff --git a/go.sum b/go.sum
index a876042..b1dd69b 100644
--- a/go.sum
+++ b/go.sum
@@ -1059,5 +1059,5 @@ sigs.k8s.io/structured-merge-diff/v4 v4.2.1
h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLz
sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod
h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q=
sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
-skywalking.apache.org/repo/goapi v0.0.0-20240920052516-d4a23d9da0e0
h1:7IW+T+mciD/GJXvgglZho414N30KSWgUTzBmEP867eI=
-skywalking.apache.org/repo/goapi v0.0.0-20240920052516-d4a23d9da0e0/go.mod
h1:+n8BMuS8eRdzdnGh15ElRGBXPi0eYZSs2TKySBDmRTE=
+skywalking.apache.org/repo/goapi v0.0.0-20250225130248-3916480eb467
h1:pXT6UxmC3qAD8faGFYuWmz6ekQPRfW1PcU8lAu6WSB0=
+skywalking.apache.org/repo/goapi v0.0.0-20250225130248-3916480eb467/go.mod
h1:+n8BMuS8eRdzdnGh15ElRGBXPi0eYZSs2TKySBDmRTE=
diff --git a/pkg/accesslog/collector/protocols/http1.go
b/pkg/accesslog/collector/protocols/http1.go
index 9ad0486..3039f00 100644
--- a/pkg/accesslog/collector/protocols/http1.go
+++ b/pkg/accesslog/collector/protocols/http1.go
@@ -235,6 +235,10 @@ func (p *HTTP1Protocol) HandleHTTPData(metrics
*HTTP1Metrics, connection *Partit
p.CloseStream(originalRequest.Body)
p.CloseStream(originalResponse.Body)
}()
+ host := request.Headers().Get("Host")
+ if host == "" && originalRequest.URL != nil {
+ host = originalRequest.URL.Host
+ }
forwarder.SendTransferProtocolEvent(p.ctx, details,
&v3.AccessLogProtocolLogs{
Protocol: &v3.AccessLogProtocolLogs_Http{
Http: &v3.AccessLogHTTPProtocol{
@@ -249,6 +253,7 @@ func (p *HTTP1Protocol) HandleHTTPData(metrics
*HTTP1Metrics, connection *Partit
Trace: AnalyzeTraceInfo(func(key
string) string {
return
originalRequest.Header.Get(key)
}, http1Log),
+ Host: host,
},
Response: &v3.AccessLogHTTPProtocolResponse{
StatusCode:
int32(originalResponse.StatusCode),
diff --git a/pkg/accesslog/collector/protocols/http2.go
b/pkg/accesslog/collector/protocols/http2.go
index 673088e..af81d92 100644
--- a/pkg/accesslog/collector/protocols/http2.go
+++ b/pkg/accesslog/collector/protocols/http2.go
@@ -77,7 +77,7 @@ type HTTP2Streaming struct {
Status int
RespHeaderBuffer *buffer.Buffer
RespBodyBuffer *buffer.Buffer
- connection *PartitionConnection
+ Connection *PartitionConnection
}
func (r *HTTP2Protocol) GenerateConnection(connectionID, randomID uint64)
ProtocolMetrics {
@@ -178,7 +178,7 @@ func (r *HTTP2Protocol) handleHeader(connection
*PartitionConnection, header *ht
ReqHeader: headers,
RespHeader: make(map[string]string),
ReqHeaderBuffer: buf.Slice(true, startPos,
buf.Position()),
- connection: connection,
+ Connection: connection,
}
metrics.streams[header.StreamID] = streaming
return enums.ParseResultSuccess, false, nil
@@ -254,6 +254,10 @@ func (r *HTTP2Protocol) handleWholeStream(stream
*HTTP2Streaming) error {
}
idRange.DeleteDetails(stream.ReqHeaderBuffer)
+ streamHost := stream.ReqHeader[":authority"]
+ if streamHost == "" {
+ streamHost = stream.ReqHeader[":host"]
+ }
forwarder.SendTransferProtocolEvent(r.ctx, details,
&v3.AccessLogProtocolLogs{
Protocol: &v3.AccessLogProtocolLogs_Http{
Http: &v3.AccessLogHTTPProtocol{
@@ -265,7 +269,7 @@ func (r *HTTP2Protocol) handleWholeStream(stream
*HTTP2Streaming) error {
Path:
stream.ReqHeader[":path"],
SizeOfHeadersBytes:
r.BufferSizeOfZero(stream.ReqHeaderBuffer),
SizeOfBodyBytes:
r.BufferSizeOfZero(stream.ReqBodyBuffer),
-
+ Host: streamHost,
Trace: AnalyzeTraceInfo(func(key
string) string {
return stream.ReqHeader[key]
}, http2Log),